; Animate Example ; --------------- Graphics3D 640,480,0,2 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,2,-6 RotateEntity camera,12,0,0 light=CreateLight() RotateEntity light,45,45,0 ; A grassy paddock for the fox to roam ground=CreatePlane() EntityTexture ground,LoadTexture("media/MossyGround.BMP") ; Load the rigged fox; it has the named clips "Survey", "Walk" and "Run" fox=LoadAnimMesh("../../../samples/glTF/assets/Fox/Fox.glb") If fox=0 Then RuntimeError "Could not load Fox.glb: "+ModelLoadError() ; Shrink the fox to game scale (the file is modelled about 100 units tall) FitMesh fox,-0.8,0,-0.8,1.6,1.6,1.6,True ; Look up the sequence numbers of the named clips survey=FindAnimSeq(fox,"Survey") walk=FindAnimSeq(fox,"Walk") run=FindAnimSeq(fox,"Run") ; Start the fox looking around Animate fox,1,1,survey info$="Animate fox,1,1,survey (loop)" While Not KeyDown(1) ; Each key starts a sequence in a different Animate mode If KeyHit(2) Then Animate fox,1,1,survey,10 : info$="Animate fox,1,1,survey,10 (loop)" If KeyHit(3) Then Animate fox,2,1,walk,10 : info$="Animate fox,2,1,walk,10 (ping-pong)" If KeyHit(4) Then Animate fox,3,1,run,10 : info$="Animate fox,3,1,run,10 (one-shot)" ; UpdateWorld advances the animation each frame UpdateWorld ; 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,"1: loop Survey 2: ping-pong Walk 3: one-shot Run Arrows: camera Esc: exit" Text 0,20,info$ Text 0,40,"Sequence: "+AnimSeq(fox)+" Animating: "+Animating(fox) Flip Wend End