Ok, I can't seem to get things working. I must be overlooking something. Here's what I have so far. Obviously, the engine is not calling isALoadableFileExtension() nor createMesh().
Strict Import gg.irrBMAX Type T_chunk_header Field id:Byte[4] Field length:Long End Type Type B3DLoader Extends T_irrIMeshLoader Field ChunkHeader:T_chunk_header Method IsALoadableFileExtension:Int(Filename:String) DebugLog("IsALoadableFileExtension") Return (Lower(Right(Filename,4)) = ".b3d") End Method Method createMesh:T_irrIAnimatedMesh(file:T_irrIReadFile) DebugLog("createMesh") ChunkHeader = New T_chunk_header file.seek(0) 'seek to start of file ReadChunkHeader(file) If TestByteStringArray(ChunkHeader.id,"BB3D") Print "BB3D header found" Else Print "BB3D header not found" End If End Method Method TestByteStringArray:Int(test1:Byte Ptr,test2:String) Local t:Int For t = 1 To Len(test2) If Chr(test1[t-1]) <> Mid(test2,t,1) Then Return False Next Return True End Method Method ReadChunkHeader(file:T_irrIReadFile) file.read(String Ptr(Varptr ChunkHeader),8) End Method Function generate:T_irrIMeshLoader() Return T_irrIMeshLoader(New B3DLoader) End Function End Type Local device:T_irrIrrlichtDevice=T_irrIrrlichtDevice.create(EDT_DIRECTX9,T_irrDimension2d_s32.create(640,480),32,False,False,False,0) device.setWindowCaption("Hello World! - Irrlicht Engine Demo") Local driver:T_irrIVideoDriver=device.getVideoDriver() Local smgr:T_irrISceneManager=device.getSceneManager() Local guienv:T_irrIGUIEnvironment=device.getGUIEnvironment() smgr.AddExternalMeshLoader(B3DLoader.generate()) guienv.addStaticText("Hello World! This is the Irrlicht Software renderer!",T_irrRect_s32.createFromVals(10,10,200,22),True) Local mesh:T_irrIAnimatedMesh=smgr.getMesh("bridge.b3d") Local node:T_irrIAnimatedMeshSceneNode=smgr.addAnimatedMeshSceneNode(mesh) Local anim:T_irrISceneNodeAnimator If node.handle<>0 node.setScale(T_irrVector3df.createFromVals(100,100,100)) node.setMaterialFlag(EMF_LIGHTING,False) node.setFrameLoop(0,310) node.setMaterialTexture(0,driver.getTexture("pebble2.jpg")) anim = smgr.createRotationAnimator(T_irrVector3df.createFromVals(.1,1,.5)) node.addAnimator(anim) EndIf smgr.addCameraSceneNode(0,T_irrVector3df.createFromVals(0,30,-40),T_irrVector3df.createFromVals(0,5,0)) While (device.run()) driver.beginScene(True,True,T_irrSColor.createFromVals(0,200,200,200)) smgr.drawAll() guienv.drawAll() driver.endScene() Wend device.drop()