Class PhysicsBody
Index
Constructors
Properties
Accessors
Methods
Constructors
constructor
-
new PhysicsBody(
transformNode: TransformNode,
motionType: PhysicsMotionType,
startsAsleep: boolean,
scene: Scene,
): PhysicsBodyConstructs a new physics body for the given node.
Parameters
- transformNode: TransformNode
The Transform Node to construct the physics body for. For better performance, it is advised that this node does not have a parent.
- motionType: PhysicsMotionType
The motion type of the physics body. The options are:
- PhysicsMotionType.STATIC - Static bodies are not moving and unaffected by forces or collisions. They are good for level boundaries or terrain.
- PhysicsMotionType.DYNAMIC - Dynamic bodies are fully simulated. They can move and collide with other objects.
- PhysicsMotionType.ANIMATED - They behave like dynamic bodies, but they won't be affected by other bodies, but still push other bodies out of the way.
- startsAsleep: boolean
Whether the physics body should start in a sleeping state (not a guarantee). Defaults to false.
- scene: Scene
The scene containing the physics engine.
This code is useful for creating a physics body for a given Transform Node in a scene. It checks the version of the physics engine and the physics plugin, and initializes the body accordingly. It also sets the node's rotation quaternion if it is not already set. Finally, it adds the body to the physics engine.
Returns PhysicsBody
- transformNode: TransformNode
Properties
_ plugin Data
V2 Physics plugin private data for single Transform
_ plugin Data Instances
V2 Physics plugin private data for instances
disable Sync
Disable sync from physics to transformNode. This value is set to true at body creation or at motionType setting when the body is not dynamic.
start Asleep
Physics engine will try to make this body sleeping and not active
transform Node
The transform node associated with this Physics Body
Accessors
disable Pre Step
-
get disablePreStep(): boolean
Disable pre-step that consists in updating Physics Body from Transform Node Translation/Orientation. True by default for maximum performance.
Returns boolean
-
set disablePreStep(value: boolean): void
Parameters
- value: boolean
Returns void
is Disposed
-
get isDisposed(): boolean
Returns if the body has been disposed.
Returns boolean
true if disposed, false otherwise.
motion Type
-
Get the motion type of the physics body. Can be STATIC, DYNAMIC, or ANIMATED.
Returns PhysicsMotionType
num Instances
-
get numInstances(): number
This returns the number of internal instances of the physics body
Returns number
shape
-
Retrieves the physics shape associated with this object.
Returns Nullable<PhysicsShape>
The physics shape associated with this object, or
undefinedif no shape is associated.This method is useful for retrieving the physics shape associated with this object, which can be used to apply physical forces to the object or to detect collisions.
-
Sets the shape of the physics body.
Parameters
- shape: Nullable<PhysicsShape>
The shape of the physics body.
This method is useful for setting the shape of the physics body, which is necessary for the physics engine to accurately simulate the body's behavior. The shape is used to calculate the body's mass, inertia, and other properties.
Returns void
- shape: Nullable<PhysicsShape>
Methods
add Constraint
-
addConstraint(
childBody: PhysicsBody,
constraint: PhysicsConstraint,
instanceIndex?: number,
childInstanceIndex?: number,
): voidAdds a constraint to the physics engine.
Parameters
- childBody: PhysicsBody
The body to which the constraint will be applied.
- constraint: PhysicsConstraint
The constraint to be applied.
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to which the constraint will be applied. If not specified, no constraint will be applied.
OptionalchildInstanceIndex: numberIf the child body is instanced, the index of the instance to which the constraint will be applied. If not specified, no constraint will be applied.
Returns void
- childBody: PhysicsBody
apply Angular Impulse
-
Add torque to a physics body
Parameters
- angularImpulse: Vector3
The angular impulse vector.
OptionalinstanceIndex: numberFor a instanced body, the instance to where the impulse should be applied. If not specified, the impulse is applied to all instances.
Returns void
- angularImpulse: Vector3
apply Force
-
Applies a force to the physics object.
Parameters
- force: Vector3
The force vector.
- location: Vector3
The location of the force.
OptionalinstanceIndex: numberFor a instanced body, the instance to where the force should be applied. If not specified, the force is applied to all instances.
This method is useful for applying a force to a physics object, which can be used to simulate physical forces such as gravity, collisions, and explosions. This can be used to create realistic physics simulations in a game or other application.
Returns void
- force: Vector3
apply Impulse
-
Applies an impulse to the physics object.
Parameters
- impulse: Vector3
The impulse vector.
- location: Vector3
The location of the impulse.
OptionalinstanceIndex: numberFor a instanced body, the instance to where the impulse should be applied. If not specified, the impulse is applied to all instances.
This method is useful for applying an impulse to a physics object, which can be used to simulate physical forces such as gravity, collisions, and explosions. This can be used to create realistic physics simulations in a game or other application.
Returns void
- impulse: Vector3
apply Torque
-
Applies a torque to the physics body.
Parameters
- torque: Vector3
The torque vector.
OptionalinstanceIndex: numberFor a instanced body, the instance to where the torque should be applied. If not specified, the torque is applied to all instances.
This method is useful for applying a torque to a physics body, which can be used to simulate rotational forces such as motors, angular momentum, and rotational dynamics. This can be used to create realistic physics simulations in a game or other application.
Returns void
- torque: Vector3
clone
-
Clone the PhysicsBody to a new body and assign it to the transformNode parameter
Parameters
- transformNode: TransformNode
transformNode that will be used for the cloned PhysicsBody
Returns PhysicsBody
the newly cloned PhysicsBody
- transformNode: TransformNode
compute Mass Properties
-
Computes the mass properties of the physics object, based on the set of physics shapes this body uses. This method is useful for computing the initial mass properties of a physics object, such as its mass, inertia, and center of mass; these values are important for accurately simulating the physics of the object in the physics engine, and computing values based on the shape will provide you with reasonable initial values, which you can then customize.
Parameters
OptionalinstanceIndex: numberThe index of the instance to compute the mass properties for.
Returns PhysicsMassProperties
The mass properties of the object.
dispose
-
Disposes the body from the physics engine.
This method is useful for cleaning up the physics engine when a body is no longer needed. Disposing the body will free up resources and prevent memory leaks.
Returns void
get Angular Damping
-
Gets the angular damping of the physics body.
Parameters
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the angular damping for.
Returns number
The angular damping of the physics body.
This method is useful for getting the angular damping of the physics body, which is the rate of reduction of the angular velocity over time. This is important for simulating realistic physics behavior in a game.
get Angular Velocity
-
Gets the angular velocity of the physics body as a new vector3.
Parameters
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the angular velocity for.
Returns Vector3
The angular velocity of the physics body.
This method is useful for getting the angular velocity of a physics body, which can be used to determine the body's rotational speed. This information can be used to create realistic physics simulations.
get Angular Velocity To Ref
-
Gets the angular velocity of the physics body and stores it in the given vector3.
Parameters
- angVel: Vector3
The vector3 to store the angular velocity in.
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the angular velocity for.
This method is useful for getting the angular velocity of a physics body, which can be used to determine the body's rotational speed. This information can be used to create realistic physics simulations.
Returns void
- angVel: Vector3
get Bounding Box
-
Returns the bounding box of the physics body.
Returns BoundingBox
The bounding box of the physics body.
get Class Name
-
Returns the string "PhysicsBody".
Returns string
"PhysicsBody"
get Collision Ended Observable
-
Returns an observable that will be notified when the body has finished colliding with another body
Parameters
OptionalinstanceIndex: numberoptionally, the index of the instance in the body
Returns Observable<IBasePhysicsCollisionEvent>
Observable
get Collision Observable
-
Returns an observable that will be notified for when a collision starts or continues for this PhysicsBody
Parameters
OptionalinstanceIndex: numberoptionally, the index of the instance in the body
Returns Observable<IPhysicsCollisionEvent>
Observable
get Event Mask
-
Gets the event mask of the physics engine.
Parameters
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the event mask for.
Returns number
The event mask of the physics engine.
This method is useful for getting the event mask of the physics engine, which is used to determine which events the engine will respond to. This is important for ensuring that the engine is responding to the correct events and not wasting resources on unnecessary events.
get Geometry
-
Retrieves the geometry of the body from the physics plugin.
Returns object
The geometry of the body.
This method is useful for retrieving the geometry of the body from the physics plugin, which can be used for various physics calculations.
get Gravity Factor
-
Gets the gravity factor of the physics body
Parameters
OptionalinstanceIndex: numberthe instance of the body to get, if undefined the value of first instance will be returned
Returns number
the gravity factor
get Linear Damping
-
Gets the linear damping of the physics body.
Parameters
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the linear damping for.
Returns number
The linear damping of the physics body.
This method is useful for retrieving the linear damping of the physics body, which is the amount of resistance the body has to linear motion. This is useful for simulating realistic physics behavior in a game.
get Linear Velocity
-
Gets the linear velocity of the physics body as a new vector3.
Parameters
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the linear velocity for.
Returns Vector3
The linear velocity of the physics body.
This method is useful for getting the linear velocity of a physics body in a physics engine. This can be used to determine the speed and direction of the body, which can be used to calculate the motion of the body.
get Linear Velocity To Ref
-
Gets the linear velocity of the physics body and stores it in the given vector3.
Parameters
- linVel: Vector3
The vector3 to store the linear velocity in.
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the linear velocity for.
This method is useful for getting the linear velocity of a physics body in a physics engine. This can be used to determine the speed and direction of the body, which can be used to calculate the motion of the body.
Returns void
- linVel: Vector3
get Mass Properties
-
Retrieves the mass properties of the object.
Parameters
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the mass properties for.
Returns PhysicsMassProperties
The mass properties of the object.
This method is useful for physics simulations, as it allows the user to retrieve the mass properties of the object, such as its mass, center of mass, and moment of inertia. This information is necessary for accurate physics simulations.
get Motion Type
-
Gets the motion type of the physics body. Can be STATIC, DYNAMIC, or ANIMATED.
Parameters
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the motion type for.
Returns PhysicsMotionType
The motion type of the physics body.
get Object Center World
-
Get the center of the object in world space.
Parameters
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to get the center for.
Returns Vector3
geometric center of the associated mesh
get Object Center World To Ref
get Prestep Type
-
Get the current prestep type of the body
Returns PhysicsPrestepType
the type of prestep associated with the body and its instance index
iterate Over All Instances
-
Executes a callback on the body or all of the instances of a body
Parameters
- callback: (body: PhysicsBody, instanceIndex?: number) => void
the callback to execute
Returns void
- callback: (body: PhysicsBody, instanceIndex?: number) => void
set Angular Damping
-
Sets the angular damping of the physics body.
Parameters
- damping: number
The angular damping of the body.
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to set the angular damping for.
This method is useful for controlling the angular velocity of a physics body. By setting the damping, the body's angular velocity will be reduced over time, simulating the effect of friction. This can be used to create realistic physical behavior in a physics engine.
Returns void
- damping: number
set Angular Velocity
-
Sets the angular velocity of the physics object.
Parameters
- angVel: Vector3
The angular velocity to set.
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to set the angular velocity for.
This method is useful for setting the angular velocity of a physics object, which is necessary for simulating realistic physics behavior. The angular velocity is used to determine the rate of rotation of the object, which is important for simulating realistic motion.
Returns void
- angVel: Vector3
set Collision Callback Enabled
-
Enable or disable collision callback for this PhysicsBody.
Parameters
- enabled: boolean
true if PhysicsBody's collision will rise a collision event and notifies the observable
Returns void
- enabled: boolean
set Collision Ended Callback Enabled
-
Enable or disable collision ended callback for this PhysicsBody.
Parameters
- enabled: boolean
true if PhysicsBody's collision ended will rise a collision event and notifies the observable
Returns void
- enabled: boolean
set Event Mask
-
Sets the event mask for the physics engine.
Parameters
- eventMask: number
A bitmask that determines which events will be sent to the physics engine.
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to set the event mask for.
This method is useful for setting the event mask for the physics engine, which determines which events will be sent to the physics engine. This allows the user to control which events the physics engine will respond to.
Returns void
- eventMask: number
set Gravity Factor
-
Sets the gravity factor of the physics body
Parameters
- factor: number
the gravity factor to set
OptionalinstanceIndex: numberthe instance of the body to set, if undefined all instances will be set
Returns void
- factor: number
set Linear Damping
-
Sets the linear damping of the physics body.
Parameters
- damping: number
The linear damping value.
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to set the linear damping for.
This method is useful for controlling the linear damping of the physics body, which is the rate at which the body's velocity decreases over time. This is useful for simulating the effects of air resistance or other forms of friction.
Returns void
- damping: number
set Linear Velocity
-
Sets the linear velocity of the physics object.
Parameters
- linVel: Vector3
The linear velocity to set.
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to set the linear velocity for.
This method is useful for setting the linear velocity of a physics object, which is necessary for simulating realistic physics in a game engine. By setting the linear velocity, the physics object will move in the direction and speed specified by the vector. This allows for realistic physics simulations, such as simulating the motion of a ball rolling down a hill.
Returns void
- linVel: Vector3
set Mass Properties
-
Sets the mass properties of the physics object.
Parameters
- massProps: PhysicsMassProperties
The mass properties to set.
OptionalinstanceIndex: numberThe index of the instance to set the mass properties for. If not defined, the mass properties will be set for all instances.
This method is useful for setting the mass properties of a physics object, such as its mass, inertia, and center of mass. This is important for accurately simulating the physics of the object in the physics engine.
Returns void
- massProps: PhysicsMassProperties
set Motion Type
-
Sets the motion type of the physics body. Can be STATIC, DYNAMIC, or ANIMATED.
Parameters
- motionType: PhysicsMotionType
The motion type to set.
OptionalinstanceIndex: numberIf this body is instanced, the index of the instance to set the motion type for. If body is instanced but instanceIndex is undefined, the motion type will be set for all instances.
Returns void
- motionType: PhysicsMotionType
set Prestep Type
-
Set the prestep type of the body
Parameters
- prestepType: PhysicsPrestepType
prestep type provided by PhysicsPrestepType
Returns void
- prestepType: PhysicsPrestepType
set Target Transform
-
Set the target transformation (position and rotation) of the body, such that the body will set its velocity to reach that target
Parameters
- position: Vector3
The target position
- rotation: Quaternion
The target rotation
OptionalinstanceIndex: numberThe index of the instance in an instanced body
Returns void
- position: Vector3
sync With Bone
-
syncWithBone(
bone: Bone,
boneMesh: AbstractMesh,
jointPivot: Vector3,
distToJoint?: number,
adjustRotation?: Quaternion,
boneAxis?: Vector3,
): voidSync with a bone
Parameters
- bone: Bone
The bone that the impostor will be synced to.
- boneMesh: AbstractMesh
The mesh that the bone is influencing.
- jointPivot: Vector3
The pivot of the joint / bone in local space.
OptionaldistToJoint: numberOptional distance from the impostor to the joint.
OptionaladjustRotation: QuaternionOptional quaternion for adjusting the local rotation of the bone.
OptionalboneAxis: Vector3Optional vector3 axis the bone is aligned with
Returns void
- bone: Bone
update Body Instances
-
If a physics body is connected to an instanced node, update the number physic instances to match the number of node instances.
Returns void
PhysicsBody is useful for creating a physics body that can be used in a physics engine. It allows the user to set the mass and velocity of the body, which can then be used to calculate the motion of the body in the physics engine.