| shape - live physics shape handle |
|
Returns the box's authored full width in metres, before local rotation. Supported only for colliders authored through PhysicsBodyBox or PhysicsShapeBox. RefreshPhysicsHull clears box-dimension metadata even if its source looks like a cube. Other collider kinds raise a runtime error. This is read-only. Wrong-kind/stale handles and unsupported typed inspections raise runtime errors. Frame/dimension authoring metadata is wrapper state; native geometry effects are recorded, but physics replay does not reconstruct editable source entities. See also: PhysicsShapeSphere, PhysicsShapeCapsule, PhysicsShapeBox, RefreshPhysicsHull, RefreshPhysicsMesh, PhysicsShapeRadius. |
; PhysicsShapeBoxWidth Example
; ----------------------------
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)
; An empty pivot carries the body; a child mesh shows its collider
root=CreatePivot()
body=CreatePhysicsBody(world,root,PHYSICS_DYNAMIC)
; Start with a 1 x 1 x 1 box collider and a cube to show it
width#=1
height#=1
depth#=1
model=CreateCube(root)
ScaleEntity model,0.5,0.5,0.5
EntityColor model,255,120,70
shape=PhysicsBodyBox(body,1,1,1)
ResetPhysicsBody body,0,2,0,0,0,0
While Not KeyDown(1)
; Space tosses the body, R drops it again
If KeyHit(57)
PhysicsBodyImpulse body,0,5,0
PhysicsBodyAngularImpulse body,0.5,0,0.5
EndIf
If KeyHit(19) Then ResetPhysicsBody body,0,2,0,0,0,0
; [ and ] resize the box's width; the collider and the cube change together
change=KeyHit(27)-KeyHit(26)
If change<>0
width=width+change*0.25
If width<0.25 Then width=0.25
PhysicsShapeBox shape,width,height,depth
ScaleEntity model,width/2,height/2,depth/2
EndIf
StepPhysics world,1.0/60.0,4
; 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 Space: toss R: reset [ / ]: width Esc: exit"
Text 0,20,"PhysicsShapeBoxWidth(shape) = "+PhysicsShapeBoxWidth(shape)+" m"
Text 0,40,"(width "+PhysicsShapeBoxWidth(shape)+", height "+PhysicsShapeBoxHeight(shape)+", depth "+PhysicsShapeBoxDepth(shape)+")"
Flip
Wend
FreePhysicsWorld world
End