From: <zcc...@us...> - 2009-05-31 15:30:23
|
Revision: 44 http://sirrf.svn.sourceforge.net/sirrf/?rev=44&view=rev Author: zccdark203 Date: 2009-05-31 15:30:20 +0000 (Sun, 31 May 2009) Log Message: ----------- I've started with binding all Irrlicht value types which are needed by AngelScript scripts. It turns out that this job is a whole lot bigger than I thought, but it's going well. Modified Paths: -------------- trunk/src/scripting/ScriptManager.cpp Added Paths: ----------- trunk/src/scripting/irrlicht/ trunk/src/scripting/irrlicht/asIrrlicht.cpp trunk/src/scripting/irrlicht/asIrrlicht.h trunk/src/scripting/irrlicht/asVector2d.cpp trunk/src/scripting/irrlicht/asVector2d.h Removed Paths: ------------- trunk/src/scripting/bindIrrlicht.cpp trunk/src/scripting/bindIrrlicht.h Modified: trunk/src/scripting/ScriptManager.cpp =================================================================== --- trunk/src/scripting/ScriptManager.cpp 2009-05-30 13:16:53 UTC (rev 43) +++ trunk/src/scripting/ScriptManager.cpp 2009-05-31 15:30:20 UTC (rev 44) @@ -16,7 +16,7 @@ // Include files #include "ScriptManager.h" -#include "bindIrrlicht.h" +#include "irrlicht/asIrrlicht.h" #include "../core/GameManager.h" Deleted: trunk/src/scripting/bindIrrlicht.cpp =================================================================== --- trunk/src/scripting/bindIrrlicht.cpp 2009-05-30 13:16:53 UTC (rev 43) +++ trunk/src/scripting/bindIrrlicht.cpp 2009-05-31 15:30:20 UTC (rev 44) @@ -1,413 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// -// Name: bindIrrlicht.cpp -// Author: Michael Bartsch (ZCCdark203) -// -// Desc : Binds various Irrlicht objects to AngelScript. -// -// License: Copyright (C) 2009 Michael Bartsch -// -// This program is free software: you can redistribute it -// and/or modify it under the terms of the zlib/libpng License. -// See main.cpp for conditions of distribution and use. -// -// ///////////////////////////////////////////////////////////////////////////// - -// Include files -#include "bindIrrlicht.h" - - -// aabbox3d<T> binding. -template<typename T> -void bindaabbox3d(asIScriptEngine *engine, const char *typeName, const char *asType) -{ - // Forward declarations. - int r; - - // Bind aabbox3d<T> class. - r = engine->RegisterObjectType(typeName, sizeof(aabbox3d<T>), asOBJ_REF); assert(r >= 0); - - // Set aabbox3d<T> behaviour. - - - // Bind aabbox3d<T> class functions. - -} - -// dimension2d<T> binding. -template<typename T> -void bindDimension2d(asIScriptEngine *engine, const char *typeName, const char *asType) -{ - // Forward declarations. - int r; - - // Bind dimension2d<T> class. - r = engine->RegisterObjectType(typeName, sizeof(dimension2d<T>), asOBJ_REF); assert(r >= 0); - - // Set dimension2d<T> behaviour. - - - // Bind dimension2d<T> class functions. - -} - -// CMatrix4<T> binding. -template<typename T> -void bindMatrix4(asIScriptEngine *engine, const char *typeName, const char *asType) -{ - // Forward declarations. - int r; - - // Bind CMatrix4<T> class. - r = engine->RegisterObjectType(typeName, sizeof(CMatrix4<T>), asOBJ_REF); assert(r >= 0); - - // Set CMatrix4<T> behaviour. - - - // Bind CMatrix4<T> class functions. - -} - -// SColor binding. -void bindSColor(asIScriptEngine *engine) -{ - // Forward declarations. - int r; - - // Bind SColor class. - r = engine->RegisterObjectType("SColor", sizeof(SColor), asOBJ_REF); assert(r >= 0); - - // Set SColor behaviour. - - - // Bind SColor class functions. - -} - -// Vector2d<T> binding. -template<typename T> -void bindVector2d(asIScriptEngine *engine, const char *typeName, const char *asType) -{ - // Forward declarations. - int r; - - // Bind Vector3d<T> class. - r = engine->RegisterObjectType(typeName, sizeof(vector2d<T>), asOBJ_REF); assert(r >= 0); - - // Set vector3d<T> behaviour. - - - // Bind vector3d<T> class functions. - -} - -// Vector3d<T> binding. -template<typename T> -void bindVector3d(asIScriptEngine *engine, const char *typeName, const char *asType) -{ - // Forward declarations. - int r; - - // Bind Vector3d<T> class. - r = engine->RegisterObjectType(typeName, sizeof(vector3d<T>), asOBJ_REF); assert(r >= 0); - - // Set vector3d<T> behaviour. - - - // Bind vector3d<T> class functions. - -} - - -// Enumerations -// E_CULLING_TYPE -void bindE_CULLING_TYPE(asIScriptEngine *engine) -{ - // Forward declarations. - int r; - - // Bind E_CULLING_TYPE enumeration. - r = engine->RegisterEnum("E_CULLING_TYPE"); assert(r >= 0); - - // Bind E_CULLING_TYPE enumeration values. - r = engine->RegisterEnumValue("E_CULLING_TYPE", "EAC_OFF", EAC_OFF); assert(r >= 0); - r = engine->RegisterEnumValue("E_CULLING_TYPE", "EAC_BOX", EAC_BOX); assert(r >= 0); - r = engine->RegisterEnumValue("E_CULLING_TYPE", "EAC_FRUSTUM_BOX", EAC_FRUSTUM_BOX); assert(r >= 0); - r = engine->RegisterEnumValue("E_CULLING_TYPE", "EAC_FRUSTUM_SPHERE", EAC_FRUSTUM_SPHERE); assert(r >= 0); -} - -// EKEY_CODE -void bindEKEY_CODE(asIScriptEngine *engine) -{ - // Forward declarations. - int r; - - // Bind EKEY_CODE enumeration. - r = engine->RegisterEnum("EKEY_CODE"); assert(r >= 0); - - // Bind EKEY_CODE enumeration values. -#define bindEnumValue(x) \ -r = engine->RegisterEnumValue("EKEY_CODE", #x, x); assert(r >= 0) - bindEnumValue(KEY_LBUTTON); - bindEnumValue(KEY_RBUTTON); - bindEnumValue(KEY_CANCEL); - bindEnumValue(KEY_MBUTTON); - bindEnumValue(KEY_XBUTTON1); - bindEnumValue(KEY_XBUTTON2); - bindEnumValue(KEY_BACK); - bindEnumValue(KEY_TAB); - bindEnumValue(KEY_CLEAR); - bindEnumValue(KEY_RETURN); - bindEnumValue(KEY_SHIFT); - bindEnumValue(KEY_CONTROL); - bindEnumValue(KEY_MENU); - bindEnumValue(KEY_PAUSE); - bindEnumValue(KEY_CAPITAL); - bindEnumValue(KEY_KANA); - bindEnumValue(KEY_HANGUEL); - bindEnumValue(KEY_HANGUL); - bindEnumValue(KEY_JUNJA); - bindEnumValue(KEY_FINAL); - bindEnumValue(KEY_HANJA); - bindEnumValue(KEY_KANJI); - bindEnumValue(KEY_ESCAPE); - bindEnumValue(KEY_CONVERT); - bindEnumValue(KEY_NONCONVERT); - bindEnumValue(KEY_ACCEPT); - bindEnumValue(KEY_MODECHANGE); - bindEnumValue(KEY_SPACE); - bindEnumValue(KEY_PRIOR); - bindEnumValue(KEY_NEXT); - bindEnumValue(KEY_END); - bindEnumValue(KEY_HOME); - bindEnumValue(KEY_LEFT); - bindEnumValue(KEY_UP); - bindEnumValue(KEY_RIGHT); - bindEnumValue(KEY_DOWN); - bindEnumValue(KEY_SELECT); - bindEnumValue(KEY_PRINT); - bindEnumValue(KEY_EXECUT); - bindEnumValue(KEY_SNAPSHOT); - bindEnumValue(KEY_INSERT); - bindEnumValue(KEY_DELETE); - bindEnumValue(KEY_HELP); - bindEnumValue(KEY_KEY_0); - bindEnumValue(KEY_KEY_1); - bindEnumValue(KEY_KEY_2); - bindEnumValue(KEY_KEY_3); - bindEnumValue(KEY_KEY_4); - bindEnumValue(KEY_KEY_5); - bindEnumValue(KEY_KEY_6); - bindEnumValue(KEY_KEY_7); - bindEnumValue(KEY_KEY_8); - bindEnumValue(KEY_KEY_9); - bindEnumValue(KEY_KEY_A); - bindEnumValue(KEY_KEY_B); - bindEnumValue(KEY_KEY_C); - bindEnumValue(KEY_KEY_D); - bindEnumValue(KEY_KEY_E); - bindEnumValue(KEY_KEY_F); - bindEnumValue(KEY_KEY_G); - bindEnumValue(KEY_KEY_H); - bindEnumValue(KEY_KEY_I); - bindEnumValue(KEY_KEY_J); - bindEnumValue(KEY_KEY_K); - bindEnumValue(KEY_KEY_L); - bindEnumValue(KEY_KEY_M); - bindEnumValue(KEY_KEY_N); - bindEnumValue(KEY_KEY_O); - bindEnumValue(KEY_KEY_P); - bindEnumValue(KEY_KEY_Q); - bindEnumValue(KEY_KEY_R); - bindEnumValue(KEY_KEY_S); - bindEnumValue(KEY_KEY_T); - bindEnumValue(KEY_KEY_U); - bindEnumValue(KEY_KEY_V); - bindEnumValue(KEY_KEY_W); - bindEnumValue(KEY_KEY_X); - bindEnumValue(KEY_KEY_Y); - bindEnumValue(KEY_KEY_Z); - bindEnumValue(KEY_LWIN); - bindEnumValue(KEY_RWIN); - bindEnumValue(KEY_APPS); - bindEnumValue(KEY_SLEEP); - bindEnumValue(KEY_NUMPAD0); - bindEnumValue(KEY_NUMPAD1); - bindEnumValue(KEY_NUMPAD2); - bindEnumValue(KEY_NUMPAD3); - bindEnumValue(KEY_NUMPAD4); - bindEnumValue(KEY_NUMPAD5); - bindEnumValue(KEY_NUMPAD6); - bindEnumValue(KEY_NUMPAD7); - bindEnumValue(KEY_NUMPAD8); - bindEnumValue(KEY_NUMPAD9); - bindEnumValue(KEY_MULTIPLY); - bindEnumValue(KEY_ADD); - bindEnumValue(KEY_SEPARATOR); - bindEnumValue(KEY_SUBTRACT); - bindEnumValue(KEY_DECIMAL); - bindEnumValue(KEY_DIVIDE); - bindEnumValue(KEY_F1); - bindEnumValue(KEY_F2); - bindEnumValue(KEY_F3); - bindEnumValue(KEY_F4); - bindEnumValue(KEY_F5); - bindEnumValue(KEY_F6); - bindEnumValue(KEY_F7); - bindEnumValue(KEY_F8); - bindEnumValue(KEY_F9); - bindEnumValue(KEY_F10); - bindEnumValue(KEY_F11); - bindEnumValue(KEY_F12); - bindEnumValue(KEY_F13); - bindEnumValue(KEY_F14); - bindEnumValue(KEY_F15); - bindEnumValue(KEY_F16); - bindEnumValue(KEY_F17); - bindEnumValue(KEY_F18); - bindEnumValue(KEY_F19); - bindEnumValue(KEY_F20); - bindEnumValue(KEY_F21); - bindEnumValue(KEY_F22); - bindEnumValue(KEY_F23); - bindEnumValue(KEY_F24); - bindEnumValue(KEY_NUMLOCK); - bindEnumValue(KEY_SCROLL); - bindEnumValue(KEY_LSHIFT); - bindEnumValue(KEY_RSHIFT); - bindEnumValue(KEY_LCONTROL); - bindEnumValue(KEY_RCONTROL); - bindEnumValue(KEY_LMENU); - bindEnumValue(KEY_RMENU); - bindEnumValue(KEY_PLUS); - bindEnumValue(KEY_COMMA); - bindEnumValue(KEY_MINUS); - bindEnumValue(KEY_PERIOD); - bindEnumValue(KEY_ATTN); - bindEnumValue(KEY_CRSEL); - bindEnumValue(KEY_EXSEL); - bindEnumValue(KEY_EREOF); - bindEnumValue(KEY_PLAY); - bindEnumValue(KEY_ZOOM); - bindEnumValue(KEY_PA1); - bindEnumValue(KEY_OEM_CLEAR); -#undef bindEnumValue -} - -// E_LIGHT_TYPE -void bindE_LIGHT_TYPE(asIScriptEngine *engine) -{ - // Forward declarations. - int r; - - // Bind E_LIGHT_TYPE enumeration. - r = engine->RegisterEnum("E_LIGHT_TYPE"); assert(r >= 0); - - // Bind E_LIGHT_TYPE enumeration values. -#define bindEnumValue(x) \ -r = engine->RegisterEnumValue("E_LIGHT_TYPE", #x, x); assert(r >= 0) - bindEnumValue(ELT_POINT); - bindEnumValue(ELT_SPOT); - bindEnumValue(ELT_DIRECTIONAL); -#undef bindEnumValue -} - -// E_MATERIAL_FLAG -void bindE_MATERIAL_FLAG(asIScriptEngine *engine) -{ - // Forward declarations. - int r; - - // Bind E_MATERIAL_FLAG enumeration. - r = engine->RegisterEnum("E_MATERIAL_FLAG"); assert(r >= 0); - - // Bind E_MATERIAL_FLAG enumeration values. -#define bindEnumValue(x) \ -r = engine->RegisterEnumValue("E_MATERIAL_FLAG", #x, x); assert(r >= 0) - bindEnumValue(EMF_WIREFRAME); - bindEnumValue(EMF_POINTCLOUD); - bindEnumValue(EMF_GOURAUD_SHADING); - bindEnumValue(EMF_LIGHTING); - bindEnumValue(EMF_ZBUFFER); - bindEnumValue(EMF_ZWRITE_ENABLE); - bindEnumValue(EMF_BACK_FACE_CULLING); - bindEnumValue(EMF_FRONT_FACE_CULLING); - bindEnumValue(EMF_BILINEAR_FILTER); - bindEnumValue(EMF_TRILINEAR_FILTER); - bindEnumValue(EMF_ANISOTROPIC_FILTER); - bindEnumValue(EMF_FOG_ENABLE); - bindEnumValue(EMF_NORMALIZE_NORMALS); - bindEnumValue(EMF_TEXTURE_WRAP); -#undef bindEnumValue -} - -// E_MATERIAL_TYPE -void bindE_MATERIAL_TYPE(asIScriptEngine *engine) -{ - // Forward declarations. - int r; - - // Bind E_MATERIAL_TYPE enumeration. - r = engine->RegisterEnum("E_MATERIAL_TYPE"); assert(r >= 0); - - // Bind E_MATERIAL_TYPE enumeration values. -#define bindEnumValue(x) \ -r = engine->RegisterEnumValue("E_MATERIAL_TYPE", #x, x); assert(r >= 0) - bindEnumValue(EMT_SOLID); - bindEnumValue(EMT_SOLID_2_LAYER); - bindEnumValue(EMT_LIGHTMAP); - bindEnumValue(EMT_LIGHTMAP_ADD); - bindEnumValue(EMT_LIGHTMAP_M2); - bindEnumValue(EMT_LIGHTMAP_M4); - bindEnumValue(EMT_LIGHTMAP_LIGHTING); - bindEnumValue(EMT_LIGHTMAP_LIGHTING_M2); - bindEnumValue(EMT_LIGHTMAP_LIGHTING_M4); - bindEnumValue(EMT_DETAIL_MAP); - bindEnumValue(EMT_SPHERE_MAP); - bindEnumValue(EMT_REFLECTION_2_LAYER); - bindEnumValue(EMT_TRANSPARENT_ADD_COLOR); - bindEnumValue(EMT_TRANSPARENT_ALPHA_CHANNEL); - bindEnumValue(EMT_TRANSPARENT_ALPHA_CHANNEL_REF); - bindEnumValue(EMT_TRANSPARENT_VERTEX_ALPHA); - bindEnumValue(EMT_TRANSPARENT_REFLECTION_2_LAYER); - bindEnumValue(EMT_NORMAL_MAP_SOLID); - bindEnumValue(EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR); - bindEnumValue(EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA); - bindEnumValue(EMT_PARALLAX_MAP_SOLID); - bindEnumValue(EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR); - bindEnumValue(EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA); - bindEnumValue(EMT_ONETEXTURE_BLEND); -#undef bindEnumValue -} - - -// Irrlicht AngelScript binding -void bindIrrlicht(asIScriptEngine *engine) -{ - // Vector3d<T> - bindaabbox3d<f32>(engine, "aabbox3df", "f32"); - bindaabbox3d<s32>(engine, "aabbox3di", "s32"); - - bindDimension2d<f32>(engine, "dimension2df", "f32"); - bindDimension2d<s32>(engine, "dimension2di", "s32"); - - bindMatrix4<f32>(engine, "matrix4", "f32"); - - bindSColor(engine); - - bindVector2d<f32>(engine, "vector2df", "f32"); - bindVector2d<s32>(engine, "vector2di", "s32"); - - bindVector3d<f32>(engine, "vector3df", "f32"); - bindVector3d<s32>(engine, "vector3di", "s32"); - - // Enumerations - bindE_CULLING_TYPE(engine); - bindEKEY_CODE(engine); - bindE_LIGHT_TYPE(engine); - bindE_MATERIAL_FLAG(engine); - bindE_MATERIAL_TYPE(engine); -} - -// End of File - Deleted: trunk/src/scripting/bindIrrlicht.h =================================================================== --- trunk/src/scripting/bindIrrlicht.h 2009-05-30 13:16:53 UTC (rev 43) +++ trunk/src/scripting/bindIrrlicht.h 2009-05-31 15:30:20 UTC (rev 44) @@ -1,28 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// -// Name: bindIrrlicht.h -// Author: Michael Bartsch (ZCCdark203) -// -// Desc : Binds various Irrlicht objects to AngelScript. -// -// License: Copyright (C) 2009 Michael Bartsch -// -// This program is free software: you can redistribute it -// and/or modify it under the terms of the zlib/libpng License. -// See main.cpp for conditions of distribution and use. -// -// ///////////////////////////////////////////////////////////////////////////// - -#ifndef __BINDIRRLICHT_H__ -#define __BINDIRRLICHT_H__ - -// Include files -#include "../dependencies.h" - - -// AngelScript binding -extern void bindIrrlicht(asIScriptEngine *engine); - -#endif - - Copied: trunk/src/scripting/irrlicht/asIrrlicht.cpp (from rev 43, trunk/src/scripting/bindIrrlicht.cpp) =================================================================== --- trunk/src/scripting/irrlicht/asIrrlicht.cpp (rev 0) +++ trunk/src/scripting/irrlicht/asIrrlicht.cpp 2009-05-31 15:30:20 UTC (rev 44) @@ -0,0 +1,399 @@ +// ///////////////////////////////////////////////////////////////////////////// +// +// Name: bindIrrlicht.cpp +// Author: Michael Bartsch (ZCCdark203) +// +// Desc : Binds various Irrlicht objects to AngelScript. +// +// License: Copyright (C) 2009 Michael Bartsch +// +// This program is free software: you can redistribute it +// and/or modify it under the terms of the zlib/libpng License. +// See main.cpp for conditions of distribution and use. +// +// ///////////////////////////////////////////////////////////////////////////// + +// Include files +#include "asIrrlicht.h" +#include "asVector2d.h" + + +// aabbox3d<T> binding. +template<typename T> +void bindaabbox3d(asIScriptEngine *engine, const char *typeName, const char *asType) +{ + // Forward declarations. + int r; + + // Bind aabbox3d<T> class. + r = engine->RegisterObjectType(typeName, sizeof(aabbox3d<T>), asOBJ_REF); assert(r >= 0); + + // Set aabbox3d<T> behaviour. + + + // Bind aabbox3d<T> class functions. + +} + +// dimension2d<T> binding. +template<typename T> +void bindDimension2d(asIScriptEngine *engine, const char *typeName, const char *asType) +{ + // Forward declarations. + int r; + + // Bind dimension2d<T> class. + r = engine->RegisterObjectType(typeName, sizeof(dimension2d<T>), asOBJ_REF); assert(r >= 0); + + // Set dimension2d<T> behaviour. + + + // Bind dimension2d<T> class functions. + +} + +// CMatrix4<T> binding. +template<typename T> +void bindMatrix4(asIScriptEngine *engine, const char *typeName, const char *asType) +{ + // Forward declarations. + int r; + + // Bind CMatrix4<T> class. + r = engine->RegisterObjectType(typeName, sizeof(CMatrix4<T>), asOBJ_REF); assert(r >= 0); + + // Set CMatrix4<T> behaviour. + + + // Bind CMatrix4<T> class functions. + +} + +// SColor binding. +void bindSColor(asIScriptEngine *engine) +{ + // Forward declarations. + int r; + + // Bind SColor class. + r = engine->RegisterObjectType("SColor", sizeof(SColor), asOBJ_REF); assert(r >= 0); + + // Set SColor behaviour. + + + // Bind SColor class functions. + +} + +// Vector3d<T> binding. +template<typename T> +void bindVector3d(asIScriptEngine *engine, const char *typeName, const char *asType) +{ + // Forward declarations. + int r; + + // Bind Vector3d<T> class. + r = engine->RegisterObjectType(typeName, sizeof(vector3d<T>), asOBJ_REF); assert(r >= 0); + + // Set vector3d<T> behaviour. + + + // Bind vector3d<T> class functions. + +} + + +// Enumerations +// E_CULLING_TYPE +void bindE_CULLING_TYPE(asIScriptEngine *engine) +{ + // Forward declarations. + int r; + + // Bind E_CULLING_TYPE enumeration. + r = engine->RegisterEnum("E_CULLING_TYPE"); assert(r >= 0); + + // Bind E_CULLING_TYPE enumeration values. +#define bindEnumValue(x) \ +r = engine->RegisterEnumValue("E_CULLING_TYPE", #x, x); assert(r >= 0) + bindEnumValue(EAC_OFF); + bindEnumValue(EAC_BOX); + bindEnumValue(EAC_FRUSTUM_BOX); + bindEnumValue(EAC_FRUSTUM_SPHERE); +#undef bindEnumValue +} + +// EKEY_CODE +void bindEKEY_CODE(asIScriptEngine *engine) +{ + // Forward declarations. + int r; + + // Bind EKEY_CODE enumeration. + r = engine->RegisterEnum("EKEY_CODE"); assert(r >= 0); + + // Bind EKEY_CODE enumeration values. +#define bindEnumValue(x) \ +r = engine->RegisterEnumValue("EKEY_CODE", #x, x); assert(r >= 0) + bindEnumValue(KEY_LBUTTON); + bindEnumValue(KEY_RBUTTON); + bindEnumValue(KEY_CANCEL); + bindEnumValue(KEY_MBUTTON); + bindEnumValue(KEY_XBUTTON1); + bindEnumValue(KEY_XBUTTON2); + bindEnumValue(KEY_BACK); + bindEnumValue(KEY_TAB); + bindEnumValue(KEY_CLEAR); + bindEnumValue(KEY_RETURN); + bindEnumValue(KEY_SHIFT); + bindEnumValue(KEY_CONTROL); + bindEnumValue(KEY_MENU); + bindEnumValue(KEY_PAUSE); + bindEnumValue(KEY_CAPITAL); + bindEnumValue(KEY_KANA); + bindEnumValue(KEY_HANGUEL); + bindEnumValue(KEY_HANGUL); + bindEnumValue(KEY_JUNJA); + bindEnumValue(KEY_FINAL); + bindEnumValue(KEY_HANJA); + bindEnumValue(KEY_KANJI); + bindEnumValue(KEY_ESCAPE); + bindEnumValue(KEY_CONVERT); + bindEnumValue(KEY_NONCONVERT); + bindEnumValue(KEY_ACCEPT); + bindEnumValue(KEY_MODECHANGE); + bindEnumValue(KEY_SPACE); + bindEnumValue(KEY_PRIOR); + bindEnumValue(KEY_NEXT); + bindEnumValue(KEY_END); + bindEnumValue(KEY_HOME); + bindEnumValue(KEY_LEFT); + bindEnumValue(KEY_UP); + bindEnumValue(KEY_RIGHT); + bindEnumValue(KEY_DOWN); + bindEnumValue(KEY_SELECT); + bindEnumValue(KEY_PRINT); + bindEnumValue(KEY_EXECUT); + bindEnumValue(KEY_SNAPSHOT); + bindEnumValue(KEY_INSERT); + bindEnumValue(KEY_DELETE); + bindEnumValue(KEY_HELP); + bindEnumValue(KEY_KEY_0); + bindEnumValue(KEY_KEY_1); + bindEnumValue(KEY_KEY_2); + bindEnumValue(KEY_KEY_3); + bindEnumValue(KEY_KEY_4); + bindEnumValue(KEY_KEY_5); + bindEnumValue(KEY_KEY_6); + bindEnumValue(KEY_KEY_7); + bindEnumValue(KEY_KEY_8); + bindEnumValue(KEY_KEY_9); + bindEnumValue(KEY_KEY_A); + bindEnumValue(KEY_KEY_B); + bindEnumValue(KEY_KEY_C); + bindEnumValue(KEY_KEY_D); + bindEnumValue(KEY_KEY_E); + bindEnumValue(KEY_KEY_F); + bindEnumValue(KEY_KEY_G); + bindEnumValue(KEY_KEY_H); + bindEnumValue(KEY_KEY_I); + bindEnumValue(KEY_KEY_J); + bindEnumValue(KEY_KEY_K); + bindEnumValue(KEY_KEY_L); + bindEnumValue(KEY_KEY_M); + bindEnumValue(KEY_KEY_N); + bindEnumValue(KEY_KEY_O); + bindEnumValue(KEY_KEY_P); + bindEnumValue(KEY_KEY_Q); + bindEnumValue(KEY_KEY_R); + bindEnumValue(KEY_KEY_S); + bindEnumValue(KEY_KEY_T); + bindEnumValue(KEY_KEY_U); + bindEnumValue(KEY_KEY_V); + bindEnumValue(KEY_KEY_W); + bindEnumValue(KEY_KEY_X); + bindEnumValue(KEY_KEY_Y); + bindEnumValue(KEY_KEY_Z); + bindEnumValue(KEY_LWIN); + bindEnumValue(KEY_RWIN); + bindEnumValue(KEY_APPS); + bindEnumValue(KEY_SLEEP); + bindEnumValue(KEY_NUMPAD0); + bindEnumValue(KEY_NUMPAD1); + bindEnumValue(KEY_NUMPAD2); + bindEnumValue(KEY_NUMPAD3); + bindEnumValue(KEY_NUMPAD4); + bindEnumValue(KEY_NUMPAD5); + bindEnumValue(KEY_NUMPAD6); + bindEnumValue(KEY_NUMPAD7); + bindEnumValue(KEY_NUMPAD8); + bindEnumValue(KEY_NUMPAD9); + bindEnumValue(KEY_MULTIPLY); + bindEnumValue(KEY_ADD); + bindEnumValue(KEY_SEPARATOR); + bindEnumValue(KEY_SUBTRACT); + bindEnumValue(KEY_DECIMAL); + bindEnumValue(KEY_DIVIDE); + bindEnumValue(KEY_F1); + bindEnumValue(KEY_F2); + bindEnumValue(KEY_F3); + bindEnumValue(KEY_F4); + bindEnumValue(KEY_F5); + bindEnumValue(KEY_F6); + bindEnumValue(KEY_F7); + bindEnumValue(KEY_F8); + bindEnumValue(KEY_F9); + bindEnumValue(KEY_F10); + bindEnumValue(KEY_F11); + bindEnumValue(KEY_F12); + bindEnumValue(KEY_F13); + bindEnumValue(KEY_F14); + bindEnumValue(KEY_F15); + bindEnumValue(KEY_F16); + bindEnumValue(KEY_F17); + bindEnumValue(KEY_F18); + bindEnumValue(KEY_F19); + bindEnumValue(KEY_F20); + bindEnumValue(KEY_F21); + bindEnumValue(KEY_F22); + bindEnumValue(KEY_F23); + bindEnumValue(KEY_F24); + bindEnumValue(KEY_NUMLOCK); + bindEnumValue(KEY_SCROLL); + bindEnumValue(KEY_LSHIFT); + bindEnumValue(KEY_RSHIFT); + bindEnumValue(KEY_LCONTROL); + bindEnumValue(KEY_RCONTROL); + bindEnumValue(KEY_LMENU); + bindEnumValue(KEY_RMENU); + bindEnumValue(KEY_PLUS); + bindEnumValue(KEY_COMMA); + bindEnumValue(KEY_MINUS); + bindEnumValue(KEY_PERIOD); + bindEnumValue(KEY_ATTN); + bindEnumValue(KEY_CRSEL); + bindEnumValue(KEY_EXSEL); + bindEnumValue(KEY_EREOF); + bindEnumValue(KEY_PLAY); + bindEnumValue(KEY_ZOOM); + bindEnumValue(KEY_PA1); + bindEnumValue(KEY_OEM_CLEAR); +#undef bindEnumValue +} + +// E_LIGHT_TYPE +void bindE_LIGHT_TYPE(asIScriptEngine *engine) +{ + // Forward declarations. + int r; + + // Bind E_LIGHT_TYPE enumeration. + r = engine->RegisterEnum("E_LIGHT_TYPE"); assert(r >= 0); + + // Bind E_LIGHT_TYPE enumeration values. +#define bindEnumValue(x) \ +r = engine->RegisterEnumValue("E_LIGHT_TYPE", #x, x); assert(r >= 0) + bindEnumValue(ELT_POINT); + bindEnumValue(ELT_SPOT); + bindEnumValue(ELT_DIRECTIONAL); +#undef bindEnumValue +} + +// E_MATERIAL_FLAG +void bindE_MATERIAL_FLAG(asIScriptEngine *engine) +{ + // Forward declarations. + int r; + + // Bind E_MATERIAL_FLAG enumeration. + r = engine->RegisterEnum("E_MATERIAL_FLAG"); assert(r >= 0); + + // Bind E_MATERIAL_FLAG enumeration values. +#define bindEnumValue(x) \ +r = engine->RegisterEnumValue("E_MATERIAL_FLAG", #x, x); assert(r >= 0) + bindEnumValue(EMF_WIREFRAME); + bindEnumValue(EMF_POINTCLOUD); + bindEnumValue(EMF_GOURAUD_SHADING); + bindEnumValue(EMF_LIGHTING); + bindEnumValue(EMF_ZBUFFER); + bindEnumValue(EMF_ZWRITE_ENABLE); + bindEnumValue(EMF_BACK_FACE_CULLING); + bindEnumValue(EMF_FRONT_FACE_CULLING); + bindEnumValue(EMF_BILINEAR_FILTER); + bindEnumValue(EMF_TRILINEAR_FILTER); + bindEnumValue(EMF_ANISOTROPIC_FILTER); + bindEnumValue(EMF_FOG_ENABLE); + bindEnumValue(EMF_NORMALIZE_NORMALS); + bindEnumValue(EMF_TEXTURE_WRAP); +#undef bindEnumValue +} + +// E_MATERIAL_TYPE +void bindE_MATERIAL_TYPE(asIScriptEngine *engine) +{ + // Forward declarations. + int r; + + // Bind E_MATERIAL_TYPE enumeration. + r = engine->RegisterEnum("E_MATERIAL_TYPE"); assert(r >= 0); + + // Bind E_MATERIAL_TYPE enumeration values. +#define bindEnumValue(x) \ +r = engine->RegisterEnumValue("E_MATERIAL_TYPE", #x, x); assert(r >= 0) + bindEnumValue(EMT_SOLID); + bindEnumValue(EMT_SOLID_2_LAYER); + bindEnumValue(EMT_LIGHTMAP); + bindEnumValue(EMT_LIGHTMAP_ADD); + bindEnumValue(EMT_LIGHTMAP_M2); + bindEnumValue(EMT_LIGHTMAP_M4); + bindEnumValue(EMT_LIGHTMAP_LIGHTING); + bindEnumValue(EMT_LIGHTMAP_LIGHTING_M2); + bindEnumValue(EMT_LIGHTMAP_LIGHTING_M4); + bindEnumValue(EMT_DETAIL_MAP); + bindEnumValue(EMT_SPHERE_MAP); + bindEnumValue(EMT_REFLECTION_2_LAYER); + bindEnumValue(EMT_TRANSPARENT_ADD_COLOR); + bindEnumValue(EMT_TRANSPARENT_ALPHA_CHANNEL); + bindEnumValue(EMT_TRANSPARENT_ALPHA_CHANNEL_REF); + bindEnumValue(EMT_TRANSPARENT_VERTEX_ALPHA); + bindEnumValue(EMT_TRANSPARENT_REFLECTION_2_LAYER); + bindEnumValue(EMT_NORMAL_MAP_SOLID); + bindEnumValue(EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR); + bindEnumValue(EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA); + bindEnumValue(EMT_PARALLAX_MAP_SOLID); + bindEnumValue(EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR); + bindEnumValue(EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA); + bindEnumValue(EMT_ONETEXTURE_BLEND); +#undef bindEnumValue +} + + +// Irrlicht AngelScript binding +void bindIrrlicht(asIScriptEngine *engine) +{ + // Vector3d<T> + bindaabbox3d<f32>(engine, "aabbox3df", "f32"); + bindaabbox3d<s32>(engine, "aabbox3di", "s32"); + + bindDimension2d<f32>(engine, "dimension2df", "f32"); + bindDimension2d<s32>(engine, "dimension2di", "s32"); + + bindMatrix4<f32>(engine, "matrix4", "f32"); + + bindSColor(engine); + + bindVector2d(engine); + + bindVector3d<f32>(engine, "vector3df", "f32"); + bindVector3d<s32>(engine, "vector3di", "s32"); + + // Enumerations + bindE_CULLING_TYPE(engine); + bindEKEY_CODE(engine); + bindE_LIGHT_TYPE(engine); + bindE_MATERIAL_FLAG(engine); + bindE_MATERIAL_TYPE(engine); +} + +// End of File + Property changes on: trunk/src/scripting/irrlicht/asIrrlicht.cpp ___________________________________________________________________ Added: svn:mergeinfo + Copied: trunk/src/scripting/irrlicht/asIrrlicht.h (from rev 39, trunk/src/scripting/bindIrrlicht.h) =================================================================== --- trunk/src/scripting/irrlicht/asIrrlicht.h (rev 0) +++ trunk/src/scripting/irrlicht/asIrrlicht.h 2009-05-31 15:30:20 UTC (rev 44) @@ -0,0 +1,28 @@ +// ///////////////////////////////////////////////////////////////////////////// +// +// Name: bindIrrlicht.h +// Author: Michael Bartsch (ZCCdark203) +// +// Desc : Binds various Irrlicht objects to AngelScript. +// +// License: Copyright (C) 2009 Michael Bartsch +// +// This program is free software: you can redistribute it +// and/or modify it under the terms of the zlib/libpng License. +// See main.cpp for conditions of distribution and use. +// +// ///////////////////////////////////////////////////////////////////////////// + +#ifndef __BINDIRRLICHT_H__ +#define __BINDIRRLICHT_H__ + +// Include files +#include "../../dependencies.h" + + +// AngelScript binding +extern void bindIrrlicht(asIScriptEngine *engine); + +#endif + + Property changes on: trunk/src/scripting/irrlicht/asIrrlicht.h ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/src/scripting/irrlicht/asVector2d.cpp =================================================================== --- trunk/src/scripting/irrlicht/asVector2d.cpp (rev 0) +++ trunk/src/scripting/irrlicht/asVector2d.cpp 2009-05-31 15:30:20 UTC (rev 44) @@ -0,0 +1,377 @@ +// ///////////////////////////////////////////////////////////////////////////// +// +// Name: asVector2d.cpp +// Author: Michael Bartsch (ZCCdark203) +// +// Desc : Binds the vector2d<T> class from the Irrlicht engine. +// +// License: Copyright (C) 2009 Michael Bartsch +// +// This program is free software: you can redistribute it +// and/or modify it under the terms of the zlib/libpng License. +// See main.cpp for conditions of distribution and use. +// +// ///////////////////////////////////////////////////////////////////////////// + +// Include files +#include "asVector2d.h" + + +// vector2d<T> behaviour functions. +//! An AngelScript wrapper function so that vector2d<T> objects can be +//! constructed within AngelScript. +//! @note For internal use only! +template<typename T> +void constructor(void *memory) +{ + new (memory) vector2d<T>(); +} + +//! An AngelScript wrapper function so that vector2d<T> objects can be +//! constructed within AngelScript. +//! @note For internal use only! +template<typename T> +void constructor(const vector2d<T> &other, void *memory) +{ + new (memory) vector2d<T>(other); +} + +//! An AngelScript wrapper function so that vector2d<T> objects can be +//! constructed within AngelScript. +//! @note For internal use only! +template<typename T> +void constructor(T x, T y, void *memory) +{ + new (memory) vector2d<T>(x, y); +} + +//! An AngelScript wrapper function so that vector2d<T> objects can be +//! deconstructed within AngelScript. +//! @note For internal use only! +template<typename T> +void deconstructor(void *memory) +{ + ((vector2d<T>*)memory)->~vector2d<T>(); +} + +//! An AngelScript wrapper function for the multiply behaviour. +//! @note For internal use only! +template<typename T> +vector2d<T> multiply(const vector2d<T> &a, const vector2d<T> &b) +{ + return a * b; +} + +//! An AngelScript wrapper function for the multiply behaviour. +//! @note For internal use only! +template<typename T> +vector2d<T> multiply(const vector2d<T> &a, const T &b) +{ + return a * b; +} + +//! An AngelScript wrapper function for the addition behaviour. +//! @note For internal use only! +template<typename T> +vector2d<T> add(const vector2d<T> &a, const vector2d<T> &b) +{ + return a + b; +} + +//! An AngelScript wrapper function for the addition behaviour. +//! @note For internal use only! +template<typename T> +vector2d<T> add(const vector2d<T> &a, const T &b) +{ + return a + b; +} + +//! An AngelScript wrapper function for the substraction behaviour. +//! @note For internal use only! +template<typename T> +vector2d<T> subtract(const vector2d<T> &a, const vector2d<T> &b) +{ + return a - b; +} + +//! An AngelScript wrapper function for the substraction behaviour. +//! @note For internal use only! +template<typename T> +vector2d<T> subtract(const vector2d<T> &a, const T &b) +{ + return a - b; +} + +//! An AngelScript wrapper function for the divide behaviour. +//! @note For internal use only! +template<typename T> +vector2d<T> divide(const vector2d<T> &a, const vector2d<T> &b) +{ + return a / b; +} + +//! An AngelScript wrapper function for the divide behaviour. +//! @note For internal use only! +template<typename T> +vector2d<T> divide(const vector2d<T> &a, const T &b) +{ + return a / b; +} + +//! An AngelScript wrapper function for the equal behaviour. +//! @note For internal use only! +template<typename T> +bool equal(const vector2d<T> &a, const vector2d<T> &b) +{ + return (a==b); +} + +//! An AngelScript wrapper function for the not-equal behaviour. +//! @note For internal use only! +template<typename T> +bool not_equal(const vector2d<T> &a, const vector2d<T> &b) +{ + return (a!=b); +} + +//! An AngelScript wrapper function for the less-than behaviour. +//! @note For internal use only! +template<typename T> +bool less_than(const vector2d<T> &a, const vector2d<T> &b) +{ + return (a<b); +} + +//! An AngelScript wrapper function for the greater-than behaviour. +//! @note For internal use only! +template<typename T> +bool greater_than(const vector2d<T> &a, const vector2d<T> &b) +{ + return (a>b); +} + +//! An AngelScript wrapper function for the less-or-equal behaviour. +//! @note For internal use only! +template<typename T> +bool l_equal(const vector2d<T> &a, const vector2d<T> &b) +{ + return (a<=b); +} + +//! An AngelScript wrapper function for the greater-or-equal behaviour. +//! @note For internal use only! +template<typename T> +bool g_equal(const vector2d<T> &a, const vector2d<T> &b) +{ + return (a>=b); +} + +//! Binds vector2d<T> as a value type to AngelScript with the given template. +//! @param engine Pointer to the AngelScript engine +//! @param typeName The name of the object within AngelScript; +//! @param asType The AngelScript name of the used template; +template<typename T> +void bindVector2dT(asIScriptEngine *engine, const char *typeName, const char *asType) +{ + // Forward declarations. + int r; + std::stringstream ss; + + // Bind Vector2d<T> class. + r = engine->RegisterObjectType(typeName, sizeof(vector2d<T>), asOBJ_VALUE | asOBJ_APP_CLASS_CDA); assert(r >= 0); + + // Set vector2d<T> behaviour. + // Initialisation and deinitialisation + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_CONSTRUCT, "void f()", asFUNCTIONPR(constructor<T>, + (void*), void), asCALL_CDECL_OBJLAST); assert(r >= 0); + + ss.str(""); + ss << "void f(const " << typeName << "&in)"; + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_CONSTRUCT, ss.str().c_str(), asFUNCTIONPR(constructor<T>, + (const vector2d<T>&, void*), void), asCALL_CDECL_OBJLAST); assert(r >= 0); + + ss.str(""); + ss << "void f(" << asType << ", " << asType << ")"; + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_CONSTRUCT, ss.str().c_str(), asFUNCTIONPR(constructor<T>, + (T, T, void*), void), asCALL_CDECL_OBJLAST); assert(r >= 0); + + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_DESTRUCT, "void f()", asFUNCTION(deconstructor<T>), + asCALL_CDECL_OBJLAST); assert(r >= 0); + + // Calculation behaviours. + ss.str(""); + ss << typeName << " f(const " << typeName << " &in, const " << typeName << " &in)"; + std::string declActionType = ss.str(); + + ss.str(""); + ss << typeName << " f(const " << typeName << " &in, " << asType << ")"; + std::string declActionValue = ss.str(); + + ss.str(""); + ss << typeName << "& f(const " << typeName << " &in)"; + std::string declAssignType = ss.str(); + + ss.str(""); + ss << typeName << "& f(const " << asType << ")"; + std::string declAssignValue = ss.str(); + + // Assignment + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_ASSIGNMENT, declAssignType.c_str(), + asMETHODPR(vector2d<T>, operator=, (const vector2d<T>&), + vector2d<T>&), asCALL_THISCALL); assert(r >= 0); + + // Multiply (*) + r = engine->RegisterGlobalBehaviour(asBEHAVE_MULTIPLY, declActionType.c_str(), asFUNCTIONPR(multiply<T>, + (const vector2d<T>&, const vector2d<T>&), vector2d<T>), + asCALL_CDECL); assert(r >= 0); + r = engine->RegisterGlobalBehaviour(asBEHAVE_MULTIPLY, declActionValue.c_str(), asFUNCTIONPR(multiply<T>, + (const vector2d<T>&, const T&), vector2d<T>), + asCALL_CDECL); assert(r >= 0); + + // Multiply Assign (*=) + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_MUL_ASSIGN, declAssignType.c_str(), + asMETHODPR(vector2d<T>, operator*=, (const vector2d<T>&), + vector2d<T>&), asCALL_THISCALL); assert(r >= 0); + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_MUL_ASSIGN, declAssignValue.c_str(), + asMETHODPR(vector2d<T>, operator*=, (const T), vector2d<T>&), + asCALL_THISCALL); assert(r >= 0); + + // Add (+) + r = engine->RegisterGlobalBehaviour(asBEHAVE_ADD, declActionType.c_str(), asFUNCTIONPR(add<T>, + (const vector2d<T>&, const vector2d<T>&), vector2d<T>), + asCALL_CDECL); assert(r >= 0); + r = engine->RegisterGlobalBehaviour(asBEHAVE_ADD, declActionValue.c_str(), asFUNCTIONPR(add<T>, + (const vector2d<T>&, const T&), vector2d<T>), + asCALL_CDECL); assert(r >= 0); + + // Add Assign (+=) + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_ADD_ASSIGN, declAssignType.c_str(), + asMETHODPR(vector2d<T>, operator+=, (const vector2d<T>&), + vector2d<T>&), asCALL_THISCALL); assert(r >= 0); + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_ADD_ASSIGN, declAssignValue.c_str(), + asMETHODPR(vector2d<T>, operator+=, (const T), vector2d<T>&), + asCALL_THISCALL); assert(r >= 0); + + // Subtract (-) + r = engine->RegisterGlobalBehaviour(asBEHAVE_SUBTRACT, declActionType.c_str(), asFUNCTIONPR(subtract<T>, + (const vector2d<T>&, const vector2d<T>&), vector2d<T>), + asCALL_CDECL); assert(r >= 0); + r = engine->RegisterGlobalBehaviour(asBEHAVE_SUBTRACT, declActionValue.c_str(), asFUNCTIONPR(subtract<T>, + (const vector2d<T>&, const T&), vector2d<T>), + asCALL_CDECL); assert(r >= 0); + + // Subtract Assign (-=) + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_SUB_ASSIGN, declAssignType.c_str(), + asMETHODPR(vector2d<T>, operator-=, (const vector2d<T>&), + vector2d<T>&), asCALL_THISCALL); assert(r >= 0); + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_SUB_ASSIGN, declAssignValue.c_str(), + asMETHODPR(vector2d<T>, operator-=, (const T), vector2d<T>&), + asCALL_THISCALL); assert(r >= 0); + + // Divide (/) + r = engine->RegisterGlobalBehaviour(asBEHAVE_DIVIDE, declActionType.c_str(), asFUNCTIONPR(divide<T>, + (const vector2d<T>&, const vector2d<T>&), vector2d<T>), + asCALL_CDECL); assert(r >= 0); + r = engine->RegisterGlobalBehaviour(asBEHAVE_DIVIDE, declActionValue.c_str(), asFUNCTIONPR(divide<T>, + (const vector2d<T>&, const T&), vector2d<T>), + asCALL_CDECL); assert(r >= 0); + + // Divide Assign (/=) + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_DIV_ASSIGN, declAssignType.c_str(), + asMETHODPR(vector2d<T>, operator/=, (const vector2d<T>&), + vector2d<T>&), asCALL_THISCALL); assert(r >= 0); + r = engine->RegisterObjectBehaviour(typeName, asBEHAVE_DIV_ASSIGN, declAssignValue.c_str(), + asMETHODPR(vector2d<T>, operator/=, (const T), vector2d<T>&), + asCALL_THISCALL); assert(r >= 0); + + // Comparison behaviours. + ss.str(""); + ss << "bool f(const " << typeName << " &in, const " << typeName << " &in)"; + std::string declComparison = ss.str(); + + r = engine->RegisterGlobalBehaviour(asBEHAVE_EQUAL, declComparison.c_str(), asFUNCTIONPR(equal<T>, + (const vector2d<T>&, const vector2d<T>&), bool), asCALL_CDECL); assert(r >= 0); + r = engine->RegisterGlobalBehaviour(asBEHAVE_NOTEQUAL, declComparison.c_str(), asFUNCTIONPR(not_equal<T>, + (const vector2d<T>&, const vector2d<T>&), bool), asCALL_CDECL); assert(r >= 0); + r = engine->RegisterGlobalBehaviour(asBEHAVE_LESSTHAN, declComparison.c_str(), asFUNCTIONPR(less_than<T>, + (const vector2d<T>&, const vector2d<T>&), bool), asCALL_CDECL); assert(r >= 0); + r = engine->RegisterGlobalBehaviour(asBEHAVE_GREATERTHAN, declComparison.c_str(), asFUNCTIONPR(greater_than<T>, + (const vector2d<T>&, const vector2d<T>&), bool), asCALL_CDECL); assert(r >= 0); + r = engine->RegisterGlobalBehaviour(asBEHAVE_LEQUAL, declComparison.c_str(), asFUNCTIONPR(l_equal<T>, + (const vector2d<T>&, const vector2d<T>&), bool), asCALL_CDECL); assert(r >= 0); + r = engine->RegisterGlobalBehaviour(asBEHAVE_GEQUAL, declComparison.c_str(), asFUNCTIONPR(g_equal<T>, + (const vector2d<T>&, const vector2d<T>&), bool), asCALL_CDECL); assert(r >= 0); + + // Bind vector2d<T> class functions. + ss.str(""); + ss << asType << " dotProduct(const " << typeName << " &in)"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, dotProduct), asCALL_THISCALL); assert(r >= 0); + + r = engine->RegisterObjectMethod(typeName, "f64 getAngle()", + asMETHOD(vector2d<T>, getAngle), asCALL_THISCALL); assert(r >= 0); + + r = engine->RegisterObjectMethod(typeName, "f64 getAngleTrig()", + asMETHOD(vector2d<T>, getAngleTrig), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << "f64 getAngleWith(const " << typeName << " &in)"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, getAngleWith), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << asType << " getDistanceFrom(const " << typeName << " &in)"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, getDistanceFrom), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << asType << " getDistanceFromSQ(const " << typeName << " &in)"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, getDistanceFromSQ), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << typeName << " getInterpolated(const " << typeName << " &in, f64)"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, getInterpolated), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << typeName << " getInterpolated_quadratic(const " << typeName << " &in, const " << typeName << "&in, f64)"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, getInterpolated_quadratic), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << asType << " getLength()"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, getLength), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << asType << " getLengthSQ()"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, getLengthSQ), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << typeName << "& interpolate(const " << typeName << " &in, const " << typeName << "&in, f64)"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, interpolate), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << "bool isBetweenPoints(const " << typeName << " &in, const " << typeName << "&in)"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, isBetweenPoints), asCALL_THISCALL); assert(r >= 0); + + ss.str(""); + ss << typeName << "& normalize()"; + r = engine->RegisterObjectMethod(typeName, ss.str().c_str(), + asMETHOD(vector2d<T>, normalize), asCALL_THISCALL); assert(r >= 0); + +} + +//! Binds all needed vector2d<T> objects to AngelScript. +//! @param engine Pointer to the AngelScript engine +void bindVector2d(asIScriptEngine *engine) +{ + bindVector2dT<f32>(engine, "vector2df", "f32"); + bindVector2dT<s32>(engine, "vector2di", "s32"); +} + +// End of File Added: trunk/src/scripting/irrlicht/asVector2d.h =================================================================== --- trunk/src/scripting/irrlicht/asVector2d.h (rev 0) +++ trunk/src/scripting/irrlicht/asVector2d.h 2009-05-31 15:30:20 UTC (rev 44) @@ -0,0 +1,26 @@ +// ///////////////////////////////////////////////////////////////////////////// +// +// Name: asVector2d.h +// Author: Michael Bartsch (ZCCdark203) +// +// Desc : Binds the vector2d<T> class from the Irrlicht engine. +// +// License: Copyright (C) 2009 Michael Bartsch +// +// This program is free software: you can redistribute it +// and/or modify it under the terms of the zlib/libpng License. +// See main.cpp for conditions of distribution and use. +// +// ///////////////////////////////////////////////////////////////////////////// + +#ifndef __ASVECTOR2D_INCLUDED__ +#define __ASVECTOR2D_INCLUDED__ + +// Include files +#include "../../dependencies.h" + + +// AngelScript binding +extern void bindVector2d(asIScriptEngine *engine); + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |