CountPhysicsProfileCounters ( )
Parameters
| None. |
Description
|
Returns the number of supported one-based counter IDs, currently 19. Use PhysicsProfileCounterName for labels and PhysicsProfileCounter after capturing a world for values. Future additions can be appended without renumbering existing IDs. Counter IDs mix current population, latest native work and lifetime peaks, as described below. Population changes without stepping can therefore coexist with timings from the preceding step. Work fields may retain the previous collision/worker-context result when no new work updates that stage. These are not all cumulative counters. World arguments must be live explicit physics worlds; invalid, stale and wrong-kind handles raise a runtime error. Metric indices are one-based and checked before returning values. Captures are rejected while the world is stepping. Requires Extended mode. See also: CapturePhysicsProfile, PhysicsProfileTime, PhysicsProfileCounter, PhysicsNativeBytes, PhysicsWorkerCount. |
Example
; CountPhysicsProfileCounters Example ; ----------------------------------- ; Requires Extended mode. Graphics3D 640,480,0,2 SetBuffer BackBuffer() Const PHYSICS_STATIC=0 Const PHYSICS_DYNAMIC=2 Const CRATE_COUNT=12 SeedRnd MilliSecs() camera=CreateCamera() PositionEntity camera,0,6,-12 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 pile of crates, dropped from random heights Dim crates(CRATE_COUNT) Dim crate_bodies(CRATE_COUNT) For i=1 To CRATE_COUNT crates(i)=CreateCube() ScaleEntity crates(i),0.5,0.5,0.5 crate_bodies(i)=CreatePhysicsBody(world,crates(i),PHYSICS_DYNAMIC) crate_shape=PhysicsBodyBox(crate_bodies(i),1,1,1) Next DropPile() ; A lower camera leaves the top of the screen for the list PositionEntity camera,0,2,-13 RotateEntity camera,0,0,0 While Not KeyDown(1) ; R drops the pile again If KeyHit(19) Then DropPile() StepPhysics world,1.0/60.0,4 ; Copy this world's native profile after the step CapturePhysicsProfile world ; Orange crates are awake, grey crates are asleep For i=1 To CRATE_COUNT If PhysicsBodyIsAwake(crate_bodies(i)) EntityColor crates(i),255,120,70 Else EntityColor crates(i),150,150,150 EndIf Next ; 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 Esc: exit" Text 0,20,"CountPhysicsProfileCounters() = "+CountPhysicsProfileCounters() For c=1 To CountPhysicsProfileCounters() Text ((c-1)/10)*320,40+((c-1) Mod 10)*20,PhysicsProfileCounterName(c)+": "+PhysicsProfileCounter(world,c) Next Flip Wend FreePhysicsWorld world End Function DropPile() For i=1 To CRATE_COUNT ResetPhysicsBody crate_bodies(i),Rnd(-1.5,1.5),2+i*0.8,Rnd(-1.5,1.5),0,Rnd(Pi),0 Next End Function
Index