; ExtractAnimSeq 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") 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 walk=FindAnimSeq(fox,"Walk") seqs_before=CountAnimSeqs(fox) ; Carve frames 5 to 15 out of the Walk clip into a brand new sequence - ; the sort of thing you do when one long take holds several game moves snippet=ExtractAnimSeq(fox,5,15,walk) seqs_after=CountAnimSeqs(fox) seq=walk Animate fox,1,0.6,seq While Not KeyDown(1) ; Space swaps between the whole Walk clip and the extracted snippet If KeyHit(57) If seq=walk seq=snippet Else seq=walk EndIf Animate fox,1,0.6,seq EndIf 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,"Space: full Walk / extracted snippet Arrows: camera Esc: exit" Text 0,20,"ExtractAnimSeq(fox,5,15,"+walk+") returned sequence "+snippet Text 0,40,"CountAnimSeqs went from "+seqs_before+" to "+seqs_after Text 0,60,"Playing sequence "+seq+" AnimLength "+AnimLength(fox) ; Extracted clips are born nameless - name lookups will not find them Text 0,80,"AnimSeqName$ of the snippet is "+Chr$(34)+AnimSeqName$(fox,snippet)+Chr$(34) Flip Wend End