PhysicsBodyActive body,enabled
Parameters
|
body - live physics body handle enabled - True or False |
Description
|
Enables or disables a body's simulation without freeing it. Enables or disables simulation and collision participation without freeing handles or hiding the entity. Disabling preserves velocity in the wrapper; velocity edits and pose resets made while disabled are retained until re-enabled. Re-enabling restores those velocities and wakes the body. Forces and impulses are per-step inputs and do not accumulate while disabled. Kinematic reactivation takes the current entity pose without manufacturing travel velocity. Native recording captures the velocity restoration when the body is re-enabled; wrapper-only pending motion is not a native replay snapshot. Stale/wrong-kind handles and invalid numeric inputs cause runtime errors. Object ownership is unchanged by these controls. Requires Extended mode. See also: ResetPhysicsBody, PhysicsBodyMode, StepPhysics. |
Example
; PhysicsBodyActive Example ; ------------------------- ; Requires Extended mode. Graphics3D 640,480,0,2 SetBuffer BackBuffer() Const PHYSICS_STATIC=0 Const PHYSICS_DYNAMIC=2 camera=CreateCamera() PositionEntity camera,0,3,-7 RotateEntity camera,20,0,0 light=CreateLight() RotateEntity light,45,-30,0 AmbientLight 60,60,60 ; An independent Box3D world with standard gravity world=CreatePhysicsWorld() ; Blue static floor ground=CreateCube() ScaleEntity ground,6,0.5,6 PositionEntity ground,0,-0.5,0 EntityColor ground,80,160,255 ground_body=CreatePhysicsBody(world,ground,PHYSICS_STATIC) ground_shape=PhysicsBodyBox(ground_body,12,1,12) ; A green static ramp ramp=CreateCube() ScaleEntity ramp,3,0.2,1.5 RotateEntity ramp,0,0,-20 PositionEntity ramp,0,1,0 EntityColor ramp,120,200,140 ramp_body=CreatePhysicsBody(world,ramp,PHYSICS_STATIC) ramp_shape=PhysicsBodyBox(ramp_body,6,0.4,3) ; A crate dropped onto the top of the ramp crate=CreateCube() ScaleEntity crate,0.4,0.4,0.4 crate_body=CreatePhysicsBody(world,crate,PHYSICS_DYNAMIC) crate_shape=PhysicsBodyBox(crate_body,0.8,0.8,0.8) ResetPhysicsBody crate_body,-2,4,0,0,0,0.3 active=True While Not KeyDown(1) ; R drops the crate again If KeyHit(19) Then ResetPhysicsBody crate_body,-2,4,0,0,0,0.3 ; Space takes the crate out of the simulation, or puts it back If KeyHit(57) active=Not active PhysicsBodyActive crate_body,active EndIf StepPhysics world,1.0/60.0,4 ; Orange while awake, grey once asleep If PhysicsBodyIsAwake(crate_body) EntityColor crate,255,120,70 Else EntityColor crate,150,150,150 EndIf ; Arrow keys move the camera If KeyDown(200) Then MoveEntity camera,0,0,0.1 If KeyDown(208) Then MoveEntity camera,0,0,-0.1 If KeyDown(203) Then TurnEntity camera,0,1,0 If KeyDown(205) Then TurnEntity camera,0,-1,0 RenderWorld Text 0,0,"Arrow keys: move camera R: drop again Space: switch Esc: exit" Text 0,20,"PhysicsBodyActive crate_body,"+active Text 0,40,"A disabled body stops where it is and nothing collides with it" Flip Wend FreePhysicsWorld world End
Index