Photon Quantum 3.0.0

Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Properties | List of all members
Quantum.CharacterController3D Struct Reference

A component for kinematic character controller prototyping that uses a sphere as a shape. You can quickly add this to an entity and set a CharacterController3DConfig, then call the CharacterController3D.Move(FrameBase, EntityRef, FPVector3, IKCCCallbacks3D, int?, bool?, FP?) method in a system update. More...

Inheritance diagram for Quantum.CharacterController3D:
Quantum.IComponent

Public Member Functions

PhysicsQueryRef AddBroadPhaseQuery (FrameBase frame, EntityRef entity, int? layerMask=null)
 Adds a Broad-phase query to the 3D Physics scene, according to the KCC config settings, and store the query ref in BroadPhaseQuery. This ref will be used on the next time Move or ComputeRawMovement is called to retrieve the resolved query results and perform the KCC logic. More...
 
void Init (FrameBase frame, CharacterController3DConfig config=null)
 Initializes the 3D character controller component. More...
 
void Init (FrameThreadSafe frame, CharacterController3DConfig config=null)
 
void Jump (FrameBase frame, bool ignoreGrounded=false, FP? impulse=null)
 Applies a vertical impulse to the KCC velocity. More...
 
void Jump (FrameThreadSafe frame, bool ignoreGrounded=false, FP? impulse=null)
 
void Move (FrameBase frame, EntityRef entity, FPVector3 direction, IKCCCallbacks3D callback=null, int? layerMask=null, Boolean? useManifoldNormal=null, FP? deltaTime=null)
 Queries the 3D physics scene with CharacterController3D.ComputeRawMovement(FrameBase, EntityRef, Transform3D*, CharacterController3D*, FPVector3, IKCCCallbacks3D, int?, bool?), computes a default steering in the desired direction and moves the entity . More...
 
void Move (FrameThreadSafe frame, EntityRef entity, FPVector3 direction, IKCCCallbacks3D callback=null, int? layerMask=null, Boolean? useManifoldNormal=null, FP? deltaTime=null)
 
void SetConfig (FrameBase frame, CharacterController3DConfig config=null)
 Sets or changes this KCC's config. More...
 
void SetConfig (FrameThreadSafe frame, CharacterController3DConfig config=null)
 

Static Public Member Functions

static CharacterController3DMovement ComputeRawMovement (FrameBase frame, EntityRef entity, Transform3D *transform, CharacterController3D *kcc, FPVector3 direction, IKCCCallbacks3D callback=null, int? layerMask=null, bool? useManifoldNormal=null)
 Queries the 3D physics scene in the transform position, using the kcc config, and computes movement data. The movement data can be used to apply a custom steering to the character based on its surrounding environment. For using the default steering, use Move(FrameBase, EntityRef, FPVector3, IKCCCallbacks3D, int?, bool?, FP?). More...
 
static CharacterController3DMovement ComputeRawMovement (FrameThreadSafe frame, EntityRef entity, Transform3D *transform, CharacterController3D *kcc, FPVector3 direction, IKCCCallbacks3D callback=null, int? layerMask=null, bool? useManifoldNormal=null)
 
static void Serialize (void *p, FrameSerializer serializer)
 Serializes a CharacterController3D into a FrameSerializer. More...
 

Public Attributes

PhysicsQueryRef BroadPhaseQuery
 Broad-Phase Query index of the last query added by calling AddBroadPhaseQuery. To use Broad-Phase queries, call AddBroadPhaseQuery before the Physics system Update runs. When Move() is called and a broad-phase query has been added, the method will not perform a new query, but retrieve and use the results of the broad-phase query previously injected. More...
 
FP MaxSpeed
 The character's maximum horizontal speed will be clamped by this value. More...
 
FPVector3 Velocity
 The current velocity of the character controller. More...
 

Static Public Attributes

const int SIZE = sizeof(long) + PhysicsQueryRef.SIZE + AssetRef<CharacterController3DConfig>.SIZE + FP.SIZE + FPVector3.SIZE
 The size of the component (or struct/type) in-memory inside the Frame data-buffers or stack (when passed as value parameter). Not related to the snapshot payload this occupies, which is bit-packed and compressed. More...
 

Properties

int BroadPhaseQueryIndex [get]
 Obsolete. Use BroadPhaseQuery instead. More...
 
AssetRef< CharacterController3DConfigConfig [get]
 Returns the Character Controller config asset. More...
 
Boolean? Grounded [get, set]
 Returns true if the character controller is touching the floor. More...
 
Boolean? Jumped [get, set]
 If the character jumped this frame. See Jump(FrameBase, bool, FP?). More...
 

Detailed Description

A component for kinematic character controller prototyping that uses a sphere as a shape. You can quickly add this to an entity and set a CharacterController3DConfig, then call the CharacterController3D.Move(FrameBase, EntityRef, FPVector3, IKCCCallbacks3D, int?, bool?, FP?) method in a system update.

Member Function Documentation

◆ Init()

void Quantum.CharacterController3D.Init ( FrameBase  frame,
CharacterController3DConfig  config = null 
)
inline

Initializes the 3D character controller component.

Use SetConfig instead in order to set or change the KCC config without resetting other fields. This method is not thread-safe: use the thread-safe overload if calling from a multi-threaded context.

Parameters
frameThe current Frame.
configThe KCC CharacterController3DConfig asset. If none is provided, the default config asset is used.

◆ SetConfig()

void Quantum.CharacterController3D.SetConfig ( FrameBase  frame,
CharacterController3DConfig  config = null 
)
inline

Sets or changes this KCC's config.

This method does not reset other values like Grounded and Velocity: use Init for that. This method is not thread-safe: use the thread-safe overload if calling from a threaded context.

Parameters
frameThe current Frame.
configThe KCC CharacterController3DConfig asset. If none is provided, the default config asset is used.

◆ Jump()

void Quantum.CharacterController3D.Jump ( FrameBase  frame,
bool  ignoreGrounded = false,
FP impulse = null 
)
inline

Applies a vertical impulse to the KCC velocity.

This method is not thread-safe. Use the thread-safe overload if calling from a threaded context.

No steering is performed at this stage. To actually move the character, use Move(FrameBase, EntityRef, FPVector3, IKCCCallbacks3D, int?, bool?, FP?).

Parameters
frameThe frame object.
ignoreGroundedIf the Grounded state of the KCC should be ignored.
impulseThe amount of impulse applied to the KCC. If none is provided, the CharacterController3DConfig.BaseJumpImpulse of the KCC config is used.

◆ AddBroadPhaseQuery()

PhysicsQueryRef Quantum.CharacterController3D.AddBroadPhaseQuery ( FrameBase  frame,
EntityRef  entity,
int?  layerMask = null 
)
inline

Adds a Broad-phase query to the 3D Physics scene, according to the KCC config settings, and store the query ref in BroadPhaseQuery. This ref will be used on the next time Move or ComputeRawMovement is called to retrieve the resolved query results and perform the KCC logic.

The added BP-Query must be retrieve on the same frame. To cancel the addition of a BP-Query and perform a regular one when moving the KCC, set BroadPhaseQuery to default.

Parameters
frameThe current frame object.
entityThe entity that represents the character. It must have a Transform3D component, which will be used to compute the query position.
layerMaskA mask that specifies which layers should be considered by the query. If null (default), the layer mask defined in the KCC config will be used.
Returns
The index of the added query.

◆ Move()

void Quantum.CharacterController3D.Move ( FrameBase  frame,
EntityRef  entity,
FPVector3  direction,
IKCCCallbacks3D  callback = null,
int?  layerMask = null,
Boolean?  useManifoldNormal = null,
FP deltaTime = null 
)
inline

Queries the 3D physics scene with CharacterController3D.ComputeRawMovement(FrameBase, EntityRef, Transform3D*, CharacterController3D*, FPVector3, IKCCCallbacks3D, int?, bool?), computes a default steering in the desired direction and moves the entity .

This method is not thread-safe. Use the thread-safe overload if calling from a threaded context.

The entity must have a Transform3D component.

Parameters
frameThe frame in which the entity is being moved.
entityThe entity that represents the character. Any collider attached by this entity is ignored in the raw movement computation.
directionThe intended movement direction.
callbackAn object that can receive the KCC callbacks. If calling from a system that implements the interface, you can use the "this" keyword.
layerMaskA mask that specifies which layers will be checked against in the raw movement computation. If null is passed, the layer mask defined in the KCC config will be used. To create a layer mask, see LayerInfo.GetLayerMask(string) and overloads on the frame.Layers property.
useManifoldNormalIf the hit manifold normal should be used when computing the raw movement. If false, the normal is computed from the query position and the contact point. If no value is provided, the CharacterController3DConfig.UseManifoldNormal of the KCC config is used.
deltaTimeThe delta timed used to integrate the kcc velocity. If no value is provided, the frame delta time is used.

◆ Serialize()

static void Quantum.CharacterController3D.Serialize ( void *  p,
FrameSerializer  serializer 
)
inlinestatic

Serializes a CharacterController3D into a FrameSerializer.

Parameters
pThe pointer to the CharacterController3D.
serializerThe FrameSerializer instance into which the struct will be serialized.

◆ ComputeRawMovement()

static CharacterController3DMovement Quantum.CharacterController3D.ComputeRawMovement ( FrameBase  frame,
EntityRef  entity,
Transform3D transform,
CharacterController3D kcc,
FPVector3  direction,
IKCCCallbacks3D  callback = null,
int?  layerMask = null,
bool?  useManifoldNormal = null 
)
inlinestatic

Queries the 3D physics scene in the transform position, using the kcc config, and computes movement data. The movement data can be used to apply a custom steering to the character based on its surrounding environment. For using the default steering, use Move(FrameBase, EntityRef, FPVector3, IKCCCallbacks3D, int?, bool?, FP?).

Parameters
frameThe frame in which the physics scene is being queried.
entityThe entity that represents the character. Any collider attached by this entity is ignored in the raw movement computation.
transformA pointer to a Transform3D component that has the position where the scene will be queried at, usually being the entity transform.
kccA pointer to a CharacterController3D component that has the config used by the query, usually being the entity kcc component.
directionThe intended movement direction.
callbackAn object that can receive the KCC callbacks.

If calling from a system that implements the interface, you can use the "this" keyword.

Parameters
layerMaskA mask that specifies which layers will be checked against in the raw movement computation. If null is passed, the layer maks defined in the KCC config will be used. To create a layer mask, see LayerInfo.GetLayerMask(string) and overloads on the frame.Layers property.
useManifoldNormalIf the hit manifold normal should be used when computing the raw movement. If false, the normal is computed from the query position and the contact point. If no value is provided, the CharacterController3DConfig.UseManifoldNormal of the KCC config is used.
Returns
A CharacterController3DMovement struct with raw movement data that can be used to compute a custom steering.

Member Data Documentation

◆ SIZE

const int Quantum.CharacterController3D.SIZE = sizeof(long) + PhysicsQueryRef.SIZE + AssetRef<CharacterController3DConfig>.SIZE + FP.SIZE + FPVector3.SIZE
static

The size of the component (or struct/type) in-memory inside the Frame data-buffers or stack (when passed as value parameter). Not related to the snapshot payload this occupies, which is bit-packed and compressed.

◆ BroadPhaseQuery

PhysicsQueryRef Quantum.CharacterController3D.BroadPhaseQuery

Broad-Phase Query index of the last query added by calling AddBroadPhaseQuery. To use Broad-Phase queries, call AddBroadPhaseQuery before the Physics system Update runs. When Move() is called and a broad-phase query has been added, the method will not perform a new query, but retrieve and use the results of the broad-phase query previously injected.

◆ MaxSpeed

FP Quantum.CharacterController3D.MaxSpeed

The character's maximum horizontal speed will be clamped by this value.

◆ Velocity

FPVector3 Quantum.CharacterController3D.Velocity

The current velocity of the character controller.

Property Documentation

◆ Config

AssetRef<CharacterController3DConfig> Quantum.CharacterController3D.Config
get

Returns the Character Controller config asset.

◆ Grounded

Boolean? Quantum.CharacterController3D.Grounded
getset

Returns true if the character controller is touching the floor.

◆ Jumped

Boolean? Quantum.CharacterController3D.Jumped
getset

If the character jumped this frame. See Jump(FrameBase, bool, FP?).

This state is consumed in the default steering method Move(FrameBase, EntityRef, FPVector3, IKCCCallbacks3D, int?, bool?, FP?).

◆ BroadPhaseQueryIndex

int Quantum.CharacterController3D.BroadPhaseQueryIndex
get

Obsolete. Use BroadPhaseQuery instead.