I got this far. The irrlicht window command I don't think is available yet as I tried it. This is not what we want, but the reverse.
I can run irrlicht in a tbgl window sort of. It takes a second to load, but you see the black just blank tbgl window and then the irrlicht device draws on it.
' Example 01: Hello World - The GUI
uses "Irrlicht"
uses "tbgl"
#include "Irrlicht.inc"
DIM pIIP as dword
DIM IIP as IRR_INSTANCE_PTR
dim mesh(4) as dword
dim node(4) as dword
pIIP = tbgl_createwindowex ( "", 1024, 768, 32, 1 )
tbgl_showcursor 1
' Create the device
IRR_CreateDevice(pIIP, %IRR_EDT_OPENGL, 200, 200, 32, %FALSE, %FALSE, %FALSE, 0)
' Set the title of the display
IRR_SetWindowCaption(pIIP, "Hello World! - Irrlicht Engine Demo from ThinBASIC")
' add a static text object to the graphical user interface, at the moment
' this is the only interface object we support. The text will be drawn inside
' the defined rectangle, the box will not have a border and the text will not
' be wrapped around if it runs off the end
IRR_AddStaticText(pIIP, "Hello World! This is the Irrlicht Software engine from ThinBASIC!", 10, 10, 260, 22, %TRUE, %FALSE)
' To display something interesting, we load a Quake 2 model and display it.
'mesh = IRR_GetMesh(pIIP, "C:\irrlicht-1.3\media\sydney.md2")
mesh(1) = IRR_GetMesh(%IRR_IAnimatedMesh, pIIP, ".\media\corpse.md2")
node(1) = IRR_AddAnimatedMeshSceneNode(pIIP, mesh(1))
mesh(2) = IRR_GetMesh(%IRR_IAnimatedMesh, pIIP, ".\media\solo.md2")
node(2) = IRR_AddAnimatedMeshSceneNode(pIIP, mesh(2))
mesh(3) = IRR_GetMesh(%IRR_IAnimatedMesh, pIIP, ".\media\super.md2")
node(3) = IRR_AddAnimatedMeshSceneNode(pIIP, mesh(3))
mesh(4) = IRR_GetMesh(%IRR_IAnimatedMesh, pIIP, ".\media\sydney.md2")
node(4) = IRR_AddAnimatedMeshSceneNode(pIIP, mesh(4))
' If everything worked, add a texture and disable lighting
If node(1) then
' IRR_SetNodeFrameLoop(node, 0, 310)
IRR_SetNodeMD2Animation(node(1), %IRR_EMAT_STAND)
IRR_SetNodeMaterialTexture(node(1), 0, IRR_GetTexture(pIIP, ".\media\corpse.png"))
IRR_SetNodeMaterialFlag(node(1), %IRR_EMF_LIGHTING, %FALSE)
IRR_SetNodePosition(node(1), -50,-2,0)
end if
If node(2) then
' IRR_SetNodeFrameLoop(node, 0, 310)
IRR_SetNodeMD2Animation(node(2), %IRR_EMAT_STAND)
IRR_SetNodeMaterialTexture(node(2), 0, IRR_GetTexture(pIIP, ".\media\solo.bmp"))
IRR_SetNodeMaterialFlag(node(2), %IRR_EMF_LIGHTING, %FALSE)
IRR_SetNodePosition(node(2), -20,0,0)
end if
If node(3) then
' IRR_SetNodeFrameLoop(node, 0, 310)
IRR_SetNodeMD2Animation(node(3), %IRR_EMAT_STAND)
IRR_SetNodeMaterialTexture(node(3), 0, IRR_GetTexture(pIIP, ".\media\super.bmp"))
IRR_SetNodeMaterialFlag(node(3), %IRR_EMF_LIGHTING, %FALSE)
IRR_SetNodePosition(node(3), 20,2,0)
end if
If node(4) then
' IRR_SetNodeFrameLoop(node, 0, 310)
IRR_SetNodeMD2Animation(node(4), %IRR_EMAT_STAND)
IRR_SetNodeMaterialTexture(node(4), 0, IRR_GetTexture(pIIP, ".\media\sydney.bmp"))
IRR_SetNodeMaterialFlag(node(4), %IRR_EMF_LIGHTING, %FALSE)
IRR_SetNodePosition(node(4), 50,0,0)
end if
'To look at the mesh, we place a camera into 3d space at the position (0, 30, -50).
'The camera looks from there to (0,5,0).
IRR_AddCameraSceneNode(pIIP,0,0,-10,0,0,0)
' while the scene is still running
WHILE IRR_Run(pIIP)
' begin the scene, erasing the canvas to white before rendering
IRR_BeginScene(pIIP, %true, %true, 255, 100, 101, 140)
' draw the Graphical User Interface
IRR_DrawScene(pIIP)
IRR_DrawGUI(pIIP)
' end drawing the scene and render it
IRR_EndScene(pIIP)
WEND
' Stop the irrlicht engine and release resources
IRR_Drop(pIIP)
ErosOlmi
08-07-2007, 23:12
Ken,
the way we develop thinBasic commands is all internal to thinBasic and called module. The trick is done in "LoadLocalSymbols" exported function. In that function Core module and called modules exchange each other the names of the new keywords and the procedure address to link to. In thinBasic SDK fo C it is called "_LoadLocalSymbols". So you will never see thinBasic keywords using Dependancy Walker.
Just to give you an idea of already developed irrlicht keywords and equates, here it is the C code (just as reference):
/*----------------------------------------------------------------------------
FUNCTION LoadLocalSymbolsC()
This function is automatically called by thinCore whenever this DLL is loaded.
This function MUST be present in every external DLL you want to use
with thinBasic
Use this function to initialize every variable you need and for loading the
new symbol (read Keyword) you have created.
----------------------------------------------------------------------------*/
DWORD __declspec(dllexport) __cdecl _LoadLocalSymbols(char * AppPath)
{
//////////////////////////////////////////////////////////////////////
// Function SYSTEM
thinBasic_LoadSymbol("Irr_CreateDevice", thinBasic_ReturnNumber, &Exec_Irr_CreateDevice, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_Run", thinBasic_ReturnNumber, &Exec_Irr_Run, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_DrawScene", thinBasic_ReturnNone, &Exec_Irr_DrawScene, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_DrawGUI", thinBasic_ReturnNone, &Exec_Irr_DrawGUI, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_EndScene", thinBasic_ReturnNone, &Exec_Irr_EndScene, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_Drop", thinBasic_ReturnNone, &Exec_Irr_Drop, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_GetFPS", thinBasic_ReturnNumber, &Exec_Irr_GetFPS, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_GetPrimitiveCountDrawn", thinBasic_ReturnNumber, &Exec_Irr_GetPrimitiveCountDrawn, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_SetWindowCaption", thinBasic_ReturnNone, &Exec_Irr_SetWindowCaption, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_BeginScene", thinBasic_ReturnNone, &Exec_Irr_BeginScene, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_IsWindowActive", thinBasic_ReturnNumber, &Exec_Irr_IsWindowActive, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_CloseDevice", thinBasic_ReturnNone, &Exec_Irr_CloseDevice, thinBasic_ForceOverWrite);
// Function SCENE
thinBasic_LoadSymbol("Irr_GetMesh", thinBasic_ReturnNumber, &Exec_Irr_GetMesh, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_CreateMesh", thinBasic_ReturnNumber, &Exec_Irr_CreateMesh, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_RemoveMesh", thinBasic_ReturnNone, &Exec_Irr_RemoveMesh, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_GetMeshIndexCount", thinBasic_ReturnNumber, &Exec_Irr_GetMeshIndexCount, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_GetMeshIndices", thinBasic_ReturnNone, &Exec_Irr_GetMeshIndices, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_SetMeshIndices", thinBasic_ReturnNone, &Exec_Irr_SetMeshIndices, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_GetMeshVertexCount", thinBasic_ReturnNumber, &Exec_Irr_GetMeshVertexCount, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_GetMeshVertices", thinBasic_ReturnNumber, &Exec_Irr_GetMeshVertices, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_AddAnimatedMeshSceneNode",thinBasic_ReturnNumber, &Exec_Irr_AddAnimatedMeshSceneNode,thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_AddOctTreeSceneNode", thinBasic_ReturnNumber, &Exec_Irr_AddOctTreeSceneNode, thinBasic_ForceOverWrite);
// Function GUI
thinBasic_LoadSymbol("Irr_AddStaticText", thinBasic_ReturnNone, &Exec_Irr_AddStaticText, thinBasic_ForceOverWrite);
// Function NODE
thinBasic_LoadSymbol("Irr_SetNodeMaterialTexture", thinBasic_ReturnNone, &Exec_Irr_SetNodeMaterialTexture, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_SetNodeMaterialFlag", thinBasic_ReturnNone, &Exec_Irr_SetNodeMaterialFlag, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_SetNodePosition", thinBasic_ReturnNone, &Exec_Irr_SetNodePosition, thinBasic_ForceOverWrite);
// Function 2D
thinBasic_LoadSymbol("Irr_GetTexture", thinBasic_ReturnNumber, &Exec_Irr_GetTexture, thinBasic_ForceOverWrite);
// Function ANIMATION
thinBasic_LoadSymbol("Irr_SetNodeFrameLoop", thinBasic_ReturnNone, &Exec_Irr_SetNodeFrameLoop, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_SetNodeMD2Animation", thinBasic_ReturnNone, &Exec_Irr_SetNodeMD2Animation, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_CreateRotationAnimator", thinBasic_ReturnNumber, &Exec_Irr_CreateRotationAnimator, thinBasic_ForceOverWrite);
// Function CAMERA
thinBasic_LoadSymbol("Irr_AddCameraSceneNodeFPS", thinBasic_ReturnNumber, &Exec_Irr_AddCameraSceneNodeFPS, thinBasic_ForceOverWrite);
thinBasic_LoadSymbol("Irr_AddCameraSceneNode", thinBasic_ReturnNumber, &Exec_Irr_AddCameraSceneNode, thinBasic_ForceOverWrite);
// Function FILLING
thinBasic_LoadSymbol("Irr_AddZipFileArchive", thinBasic_ReturnNone, &Exec_Irr_AddZipFileArchive, thinBasic_ForceOverWrite);
// Function KEYBOARD & MOUSE
thinBasic_LoadSymbol("Irr_SetMouseVisible", thinBasic_ReturnNone, &Exec_Irr_SetMouseVisible, thinBasic_ForceOverWrite);
// Function VIDEO
thinBasic_LoadSymbol("Irr_GetWindowHandle", thinBasic_ReturnNumber, &Exec_Irr_GetWindowHandle, thinBasic_ForceOverWrite);
//////////////////////////////////////////////////////////////////////
// Equates DRIVER TYPE
thinBasic_AddEquate("%IRR_EDT_NULL", "", EDT_NULL, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EDT_SOFTWARE", "", EDT_SOFTWARE, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EDT_BURNINGSVIDEO", "", EDT_BURNINGSVIDEO, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EDT_DIRECT3D8", "", EDT_DIRECT3D8, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EDT_DIRECT3D9", "", EDT_DIRECT3D9, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EDT_OPENGL", "", EDT_OPENGL, thinBasic_ConstTypeAuto);
// Equates MATERIAL TYPE
thinBasic_AddEquate("%IRR_EMT_SOLID", "", EMT_SOLID, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_SOLID_2_LAYER", "", EMT_SOLID_2_LAYER, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_LIGHTMAP", "", EMT_LIGHTMAP, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_LIGHTMAP_ADD", "", EMT_LIGHTMAP_ADD, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_LIGHTMAP_M2", "", EMT_LIGHTMAP_M2, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_LIGHTMAP_M4", "", EMT_LIGHTMAP_M4, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_LIGHTMAP_LIGHTING", "", EMT_LIGHTMAP_LIGHTING, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_LIGHTMAP_LIGHTING_M2", "", EMT_LIGHTMAP_LIGHTING_M2, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_LIGHTMAP_LIGHTING_M4", "", EMT_LIGHTMAP_LIGHTING_M4, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_DETAIL_MAP", "", EMT_DETAIL_MAP, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_SPHERE_MAP", "", EMT_SPHERE_MAP, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_REFLECTION_2_LAYER", "", EMT_REFLECTION_2_LAYER, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_TRANSPARENT_ADD_COLOR", "", EMT_TRANSPARENT_ADD_COLOR, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_TRANSPARENT_ALPHA_CHANNEL", "", EMT_TRANSPARENT_ALPHA_CHANNEL, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_TRANSPARENT_ALPHA_CHANNEL_REF", "", EMT_TRANSPARENT_ALPHA_CHANNEL_REF, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_TRANSPARENT_VERTEX_ALPHA", "", EMT_TRANSPARENT_VERTEX_ALPHA, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_TRANSPARENT_REFLECTION_2_LAYER", "", EMT_TRANSPARENT_REFLECTION_2_LAYER, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_NORMAL_MAP_SOLID", "", EMT_NORMAL_MAP_SOLID, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR", "", EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA", "", EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_PARALLAX_MAP_SOLID", "", EMT_PARALLAX_MAP_SOLID, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR", "", EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA", "", EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_ONETEXTURE_BLEND", "", EMT_ONETEXTURE_BLEND, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMT_FORCE_32BIT", "", EMT_FORCE_32BIT, thinBasic_ConstTypeAuto);
// Equates MATERIAL FLAGS
thinBasic_AddEquate("%IRR_EMF_WIREFRAME", "", EMF_WIREFRAME, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_POINTCLOUD", "", EMF_POINTCLOUD, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_GOURAUD_SHADING", "", EMF_GOURAUD_SHADING, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_LIGHTING", "", EMF_LIGHTING, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_ZBUFFER", "", EMF_ZBUFFER, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_ZWRITE_ENABLE", "", EMF_ZWRITE_ENABLE, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_BACK_FACE_CULLING", "", EMF_BACK_FACE_CULLING, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_BILINEAR_FILTER", "", EMF_BILINEAR_FILTER, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_TRILINEAR_FILTER", "", EMF_TRILINEAR_FILTER, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_ANISOTROPIC_FILTER", "", EMF_ANISOTROPIC_FILTER, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_FOG_ENABLE", "", EMF_FOG_ENABLE, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_NORMALIZE_NORMALS", "", EMF_NORMALIZE_NORMALS, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_TEXTURE_WRAP", "", EMF_TEXTURE_WRAP, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMF_MATERIAL_FLAG_COUNT", "", EMF_MATERIAL_FLAG_COUNT, thinBasic_ConstTypeAuto);
// Equates ANIMATION TYPE
thinBasic_AddEquate("%IRR_EMAT_STAND", "", EMAT_STAND, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_RUN", "", EMAT_RUN, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_ATTACK", "", EMAT_ATTACK, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_PAIN_A", "", EMAT_PAIN_A, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_PAIN_B", "", EMAT_PAIN_B, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_PAIN_C", "", EMAT_PAIN_C, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_JUMP", "", EMAT_JUMP, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_FLIP", "", EMAT_FLIP, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_SALUTE", "", EMAT_SALUTE, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_FALLBACK", "", EMAT_FALLBACK, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_WAVE", "", EMAT_WAVE, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_POINT", "", EMAT_POINT, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_CROUCH_STAND", "", EMAT_CROUCH_STAND, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_CROUCH_WALK", "", EMAT_CROUCH_WALK, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_CROUCH_ATTACK", "", EMAT_CROUCH_ATTACK, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_CROUCH_PAIN", "", EMAT_CROUCH_PAIN, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_CROUCH_DEATH", "", EMAT_CROUCH_DEATH, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_DEATH_FALLBACK", "", EMAT_DEATH_FALLBACK, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_DEATH_FALLFORWARD", "", EMAT_DEATH_FALLFORWARD, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_DEATH_FALLBACKSLOW", "", EMAT_DEATH_FALLBACKSLOW, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_EMAT_BOOM", "", EMAT_BOOM, thinBasic_ConstTypeAuto);
// Equates OTHERS
thinBasic_AddEquate("%IRR_WINDOWED", "", IRR_WINDOWED, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_SHADOWS", "", IRR_SHADOWS, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_IGNORE_EVENTS", "", IRR_IGNORE_EVENTS, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_GUI_BORDER", "", IRR_GUI_BORDER, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_GUI_WRAP", "", IRR_GUI_WRAP, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_GUI_NO_BORDER", "", IRR_GUI_NO_BORDER, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_GUI_NO_WRAP", "", IRR_GUI_NO_WRAP, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_IMesh", "", IRR_IMesh, thinBasic_ConstTypeAuto);
thinBasic_AddEquate("%IRR_IAnimatedMesh", "", IRR_IAnimatedMesh, thinBasic_ConstTypeAuto);
return 1;
}