00001 #include "lugre_prefix.h"
00002 #include "lugre_scripting.h"
00003 #include "lugre_luabind.h"
00004 #include "lugre_gfx2D.h"
00005 #include "lugre_BorderColourClipPaneOverlay.h"
00006 #include "lugre_CompassOverlay.h"
00007 #include "lugre_RobRenderableOverlay.h"
00008 #include "lugre_SortedOverlayContainer.h"
00009 #include "lugre_gfx3D.h"
00010 #include "lugre_ogrewrapper.h"
00011
00012 extern "C" {
00013 #include "lua.h"
00014 #include "lauxlib.h"
00015 #include "lualib.h"
00016 }
00017
00018 #define kCursorOverlayZOrder 640
00019
00020
00021 namespace Lugre {
00022
00023 class cGfx2D_L : public cLuaBind<cGfx2D> { public:
00025 virtual void RegisterMethods (lua_State *L) { PROFILE
00026
00027
00028
00029
00030 lua_register(L,"CreateGfx2D", &cGfx2D_L::CreateGfx2D);
00031 lua_register(L,"CreateCursorGfx2D", &cGfx2D_L::CreateCursorGfx2D);
00032 lua_register(L,"GetGfx2DCount", &cGfx2D_L::GetGfx2DCount);
00033
00034 #define REGISTER_METHOD(methodname) mlMethod.push_back(make_luaL_reg(#methodname,&cGfx2D_L::methodname));
00035
00036 REGISTER_METHOD(Destroy);
00037 REGISTER_METHOD(InitCompass);
00038 REGISTER_METHOD(InitPanel);
00039 REGISTER_METHOD(InitCCPO);
00040 REGISTER_METHOD(InitCCTO);
00041 REGISTER_METHOD(InitBCCPO);
00042 REGISTER_METHOD(InitSOC);
00043 REGISTER_METHOD(InitRROC);
00044 REGISTER_METHOD(InitText);
00045 REGISTER_METHOD(SetPrepareFrameStep);
00046 REGISTER_METHOD(SetTransparent);
00047 REGISTER_METHOD(SetVisible);
00048 REGISTER_METHOD(GetVisible);
00049 REGISTER_METHOD(SetMaterial);
00050 REGISTER_METHOD(SetBorderMaterial);
00051 REGISTER_METHOD(SetPos);
00052 REGISTER_METHOD(GetPos);
00053 REGISTER_METHOD(SetDimensions);
00054 REGISTER_METHOD(GetDimensions);
00055 REGISTER_METHOD(SetTextAlignment);
00056 REGISTER_METHOD(SetAlignment);
00057 REGISTER_METHOD(SetUV);
00058 REGISTER_METHOD(SetPartUV);
00059 REGISTER_METHOD(SetClip);
00060 REGISTER_METHOD(SetBorder);
00061 REGISTER_METHOD(SetCharHeight);
00062 REGISTER_METHOD(SetFont);
00063 REGISTER_METHOD(SetText);
00064 REGISTER_METHOD(SetAutoWrap);
00065 REGISTER_METHOD(SetColour);
00066 REGISTER_METHOD(SetColours);
00067 REGISTER_METHOD(SetPartColours);
00068 REGISTER_METHOD(SetRotate);
00069 REGISTER_METHOD(GetTextBounds);
00070 REGISTER_METHOD(GetGlyphAtPos);
00071 REGISTER_METHOD(GetGlyphBounds);
00072 REGISTER_METHOD(SetUVMid);
00073 REGISTER_METHOD(SetUVRad);
00074 REGISTER_METHOD(SetAngBias);
00075 REGISTER_METHOD(SetRankFactor);
00076
00077 REGISTER_METHOD(SetTrackPosSceneNode);
00078 REGISTER_METHOD(SetTrackOffset);
00079 REGISTER_METHOD(SetTrackMouse);
00080
00081 REGISTER_METHOD(GetLeft);
00082 REGISTER_METHOD(GetTop);
00083 REGISTER_METHOD(GetDerivedLeft);
00084 REGISTER_METHOD(GetDerivedTop);
00085 REGISTER_METHOD(GetWidth);
00086 REGISTER_METHOD(GetHeight);
00087
00088 REGISTER_METHOD(RenderableBegin);
00089 REGISTER_METHOD(RenderableVertex);
00090 REGISTER_METHOD(RenderableIndex);
00091 REGISTER_METHOD(RenderableIndex3);
00092 REGISTER_METHOD(RenderableEnd);
00093 REGISTER_METHOD(RenderableSkipVertices);
00094 REGISTER_METHOD(RenderableSkipIndices);
00095
00096 REGISTER_METHOD(SOC_ChildBringToFront);
00097 REGISTER_METHOD(SOC_ChildSendToBack);
00098 REGISTER_METHOD(SOC_ChildInsertAfter);
00099 REGISTER_METHOD(SOC_ChildInsertBefore);
00100
00101
00102 #define RegisterClassConstant(name) cScripting::SetGlobal(L,#name,cGfx2D::name)
00103
00104 RegisterClassConstant(kGfx2DAlign_Left);
00105 RegisterClassConstant(kGfx2DAlign_Top);
00106 RegisterClassConstant(kGfx2DAlign_Right);
00107 RegisterClassConstant(kGfx2DAlign_Bottom);
00108 RegisterClassConstant(kGfx2DAlign_Center);
00109
00110 #undef RegisterClassConstant
00111 #define RegisterClassConstant(name) cScripting::SetGlobal(L,#name,cBorderColourClipPaneOverlay::name)
00112 RegisterClassConstant(kBCCPOPart_LT);
00113 RegisterClassConstant(kBCCPOPart_T);
00114 RegisterClassConstant(kBCCPOPart_RT);
00115 RegisterClassConstant(kBCCPOPart_L);
00116 RegisterClassConstant(kBCCPOPart_R);
00117 RegisterClassConstant(kBCCPOPart_LB);
00118 RegisterClassConstant(kBCCPOPart_B);
00119 RegisterClassConstant(kBCCPOPart_RB);
00120 RegisterClassConstant(kBCCPOPart_M);
00121 }
00122
00124 virtual void RegisterMembers () { PROFILE
00125 cGfx2D* prototype = new cGfx2D();
00126 cMemberVar_REGISTER(prototype, kVarType_Vector2, mvTrackPosOffset, 0);
00127 cMemberVar_REGISTER(prototype, kVarType_Vector2, mvTrackPosTargetSizeFactor, 0);
00128 cMemberVar_REGISTER(prototype, kVarType_Vector2, mvTrackPosOwnSizeFactor, 0);
00129 cMemberVar_REGISTER(prototype, kVarType_Vector2, mvTrackClampMin, 0);
00130 cMemberVar_REGISTER(prototype, kVarType_Vector2, mvTrackClampMax, 0);
00131 cMemberVar_REGISTER(prototype, kVarType_Vector2, mvTrackSetSizeFactor, 0);
00132 cMemberVar_REGISTER(prototype, kVarType_bool, mbTrackClamp, 0);
00133 cMemberVar_REGISTER(prototype, kVarType_bool, mbTrackHideIfClamped, 0);
00134 cMemberVar_REGISTER(prototype, kVarType_bool, mbTrackHideIfBehindCam, 0);
00135 cMemberVar_REGISTER(prototype, kVarType_bool, mbTrackClampMaxXIfBehindCam, 0);
00136 cMemberVar_REGISTER(prototype, kVarType_bool, mbTrackClampMaxYIfBehindCam, 0);
00137 cMemberVar_REGISTER(prototype, kVarType_bool, mbTrackSetSize, 0);
00138 cMemberVar_REGISTER(prototype, kVarType_bool, mbTrackMouse, 0);
00139 }
00140
00142
00144 static int GetGfx2DCount (lua_State *L) { PROFILE
00145 lua_pushnumber(L,cGfx2D::miCount);
00146 return 1;
00147 }
00148
00150 static int CreateGfx2D (lua_State *L) { PROFILE
00151 cGfx2D* target = new cGfx2D();
00152 return CreateUData(L,target);
00153 }
00154
00157 static int CreateCursorGfx2D (lua_State *L) { PROFILE
00158 Ogre::Overlay* pCursorOverlay = cGfx2D::CreateOverlay(cGfx2D::GetUniqueName().c_str(),kCursorOverlayZOrder);
00159 cGfx2D* target = new cGfx2D(pCursorOverlay);
00160 return CreateUData(L,target);
00161 }
00162
00164 static int Destroy (lua_State *L) { PROFILE
00165
00166 delete checkudata_alive(L);
00167
00168 return 0;
00169 }
00170
00173 static int InitPanel (lua_State *L) { PROFILE
00174 checkudata_alive(L)->InitPanel((lua_gettop(L) > 1 && !lua_isnil(L,2))?checkudata_alive(L,2):0);
00175 return 0;
00176 }
00177
00180 static int InitCompass (lua_State *L) { PROFILE
00181 checkudata_alive(L)->InitCompass((lua_gettop(L) > 1 && !lua_isnil(L,2))?checkudata_alive(L,2):0);
00182 return 0;
00183 }
00184
00187 static int InitCCPO (lua_State *L) { PROFILE
00188 checkudata_alive(L)->InitCCPO((lua_gettop(L) > 1 && !lua_isnil(L,2))?checkudata_alive(L,2):0);
00189 return 0;
00190 }
00191
00194 static int InitCCTO (lua_State *L) { PROFILE
00195 checkudata_alive(L)->InitCCTO((lua_gettop(L) > 1 && !lua_isnil(L,2))?checkudata_alive(L,2):0);
00196 return 0;
00197 }
00198
00201 static int InitBCCPO (lua_State *L) { PROFILE
00202 checkudata_alive(L)->InitBCCPO((lua_gettop(L) > 1 && !lua_isnil(L,2))?checkudata_alive(L,2):0);
00203 return 0;
00204 }
00205
00208 static int InitSOC (lua_State *L) { PROFILE
00209 checkudata_alive(L)->InitSOC((lua_gettop(L) > 1 && !lua_isnil(L,2))?checkudata_alive(L,2):0);
00210 return 0;
00211 }
00212
00215 static int InitRROC (lua_State *L) { PROFILE
00216 checkudata_alive(L)->InitRROC((lua_gettop(L) > 1 && !lua_isnil(L,2))?checkudata_alive(L,2):0);
00217 return 0;
00218 }
00219
00222 static int InitText (lua_State *L) { PROFILE
00223 checkudata_alive(L)->InitText((lua_gettop(L) > 1 && !lua_isnil(L,2))?checkudata_alive(L,2):0);
00224 return 0;
00225 }
00226
00227
00230 static int SetPrepareFrameStep (lua_State *L) { PROFILE
00231 checkudata_alive(L)->SetPrepareFrameStep(lua_isboolean(L,2) ? lua_toboolean(L,2) : luaL_checkint(L,2));
00232 return 0;
00233 }
00234
00238 static int SetVisible (lua_State *L) { PROFILE
00239 checkudata_alive(L)->SetVisible(lua_isboolean(L,2) ? lua_toboolean(L,2) : luaL_checkint(L,2));
00240 return 0;
00241 }
00242
00247 static int SetTransparent (lua_State *L) { PROFILE
00248 cColourClipPaneOverlay* pCCPO = checkudata_alive(L)->mpCCPO;
00249 if (pCCPO) pCCPO->setTransparent(lua_isboolean(L,2) ? lua_toboolean(L,2) : luaL_checkint(L,2));
00250 return 0;
00251 }
00252
00254 static int GetVisible (lua_State *L) { PROFILE
00255 lua_pushboolean(L,checkudata_alive(L)->GetVisible());
00256 return 1;
00257 }
00258
00261 static int SetMaterial (lua_State *L) { PROFILE
00262 checkudata_alive(L)->SetMaterial(luaL_checkstring(L, 2));
00263 return 0;
00264 }
00265
00268 static int SetBorderMaterial (lua_State *L) { PROFILE
00269 checkudata_alive(L)->SetBorderMaterial(luaL_checkstring(L, 2));
00270 return 0;
00271 }
00272
00275 static int SetPos (lua_State *L) { PROFILE
00276 checkudata_alive(L)->SetPos(luaL_checknumber(L, 2),luaL_checknumber(L, 3));
00277 return 0;
00278 }
00279
00282 static int GetPos (lua_State *L) { PROFILE
00283 lua_pushnumber(L,checkudata_alive(L)->GetLeft());
00284 lua_pushnumber(L,checkudata_alive(L)->GetTop());
00285 return 2;
00286 }
00287
00290 static int SetDimensions (lua_State *L) { PROFILE
00291 checkudata_alive(L)->SetDimensions(luaL_checknumber(L, 2),luaL_checknumber(L, 3));
00292 return 0;
00293 }
00294
00296 static int GetDimensions (lua_State *L) { PROFILE
00297 lua_pushnumber(L,checkudata_alive(L)->GetWidth());
00298 lua_pushnumber(L,checkudata_alive(L)->GetHeight());
00299 return 2;
00300 }
00301
00305 static int SetAlignment (lua_State *L) { PROFILE
00306 checkudata_alive(L)->SetAlignment(luaL_checkint(L, 2),luaL_checkint(L, 3));
00307 return 0;
00308 }
00309
00312 static int SetTextAlignment (lua_State *L) { PROFILE
00313 checkudata_alive(L)->SetTextAlignment(luaL_checkint(L, 2));
00314 return 0;
00315 }
00316
00319 static int SetUV (lua_State *L) { PROFILE
00320 checkudata_alive(L)->SetUV(luaL_checknumber(L, 2),luaL_checknumber(L, 3),luaL_checknumber(L, 4),luaL_checknumber(L, 5));
00321 return 0;
00322 }
00323
00327 static int SetPartUV (lua_State *L) { PROFILE
00328 checkudata_alive(L)->SetPartUV(luaL_checkint(L, 2),luaL_checknumber(L, 3),luaL_checknumber(L, 4),luaL_checknumber(L, 5),luaL_checknumber(L, 6));
00329 return 0;
00330 }
00331
00335 static int SetClip (lua_State *L) { PROFILE
00336 checkudata_alive(L)->SetClip(luaL_checknumber(L, 2),luaL_checknumber(L, 3),luaL_checknumber(L, 4),luaL_checknumber(L, 5));
00337 return 0;
00338 }
00339
00342 static int SetBorder (lua_State *L) { PROFILE
00343 checkudata_alive(L)->SetBorder(luaL_checknumber(L, 2),luaL_checknumber(L, 3),luaL_checknumber(L, 4),luaL_checknumber(L, 5));
00344 return 0;
00345 }
00346
00350 static int SetCharHeight (lua_State *L) { PROFILE
00351 checkudata_alive(L)->SetCharHeight(luaL_checknumber(L, 2));
00352 return 0;
00353 }
00354
00358 static int SetFont (lua_State *L) { PROFILE
00359 checkudata_alive(L)->SetFont(luaL_checkstring(L, 2));
00360 return 0;
00361 }
00362
00367 static int SetText (lua_State *L) { PROFILE
00368 checkudata_alive(L)->SetText(luaL_checkstring(L, 2));
00369 return 0;
00370 }
00371
00374 static int SetAutoWrap (lua_State *L) { PROFILE
00375 checkudata_alive(L)->SetAutoWrap(luaL_checkint(L, 2));
00376 return 0;
00377 }
00378
00382 static int SetColour (lua_State *L) { PROFILE
00383 checkudata_alive(L)->SetColour(luaSFZ_checkColour4(L, 2));
00384 return 0;
00385 }
00386
00389 static int SetColours (lua_State *L) { PROFILE
00390 checkudata_alive(L)->SetColours(luaSFZ_checkColour4(L,2),luaSFZ_checkColour4(L,6),luaSFZ_checkColour4(L,10),luaSFZ_checkColour4(L,14));
00391 return 0;
00392 }
00393
00397 static int SetPartColours (lua_State *L) { PROFILE
00398 checkudata_alive(L)->SetPartColours(luaL_checkint(L, 2),luaSFZ_checkColour4(L,3),luaSFZ_checkColour4(L,7),luaSFZ_checkColour4(L,11),luaSFZ_checkColour4(L,15));
00399 return 0;
00400 }
00401
00404 static int SetRotate (lua_State *L) { PROFILE
00405 checkudata_alive(L)->SetRotate(luaL_checknumber(L, 2));
00406 return 0;
00407 }
00408
00411 static int GetTextBounds (lua_State *L) { PROFILE
00412 Ogre::Real w,h;
00413 checkudata_alive(L)->GetTextBounds(w,h);
00414 lua_pushnumber(L,w);
00415 lua_pushnumber(L,h);
00416 return 2;
00417 }
00418
00422 static int GetGlyphAtPos (lua_State *L) { PROFILE
00423 lua_pushnumber(L,checkudata_alive(L)->GetGlyphAtPos(luaL_checkint(L, 2),luaL_checkint(L, 3)));
00424 return 1;
00425 }
00426
00430 static int GetGlyphBounds (lua_State *L) { PROFILE
00431 Ogre::Real l,t,r,b;
00432 checkudata_alive(L)->GetGlyphBounds(luaL_checkint(L, 2),l,t,r,b);
00433 lua_pushnumber(L,l);
00434 lua_pushnumber(L,t);
00435 lua_pushnumber(L,r);
00436 lua_pushnumber(L,b);
00437 return 4;
00438 }
00439
00442 static int GetLeft (lua_State *L) { PROFILE
00443 lua_pushnumber(L,checkudata_alive(L)->GetLeft());
00444 return 1;
00445 }
00446
00449 static int GetTop (lua_State *L) { PROFILE
00450 lua_pushnumber(L,checkudata_alive(L)->GetTop());
00451 return 1;
00452 }
00453
00456 static int GetDerivedLeft (lua_State *L) { PROFILE
00457 lua_pushnumber(L,checkudata_alive(L)->GetDerivedLeft());
00458 return 1;
00459 }
00460
00463 static int GetDerivedTop (lua_State *L) { PROFILE
00464 lua_pushnumber(L,checkudata_alive(L)->GetDerivedTop());
00465 return 1;
00466 }
00467
00470 static int GetWidth (lua_State *L) { PROFILE
00471 lua_pushnumber(L,checkudata_alive(L)->GetWidth());
00472 return 1;
00473 }
00474
00477 static int GetHeight (lua_State *L) { PROFILE
00478 lua_pushnumber(L,checkudata_alive(L)->GetHeight());
00479 return 1;
00480 }
00481
00482
00483
00484
00485
00486
00487
00490 static int RenderableBegin (lua_State *L) { PROFILE
00491
00492 checkudata_alive(L)->mpRROC->Begin(
00493 luaL_checkint(L,2),
00494 luaL_checkint(L,3),
00495 lua_isboolean(L,4) ? lua_toboolean(L,4) : luaL_checkint(L,4),
00496 lua_isboolean(L,5) ? lua_toboolean(L,5) : luaL_checkint(L,5),
00497 (Ogre::RenderOperation::OperationType)luaL_checkint(L,6)
00498 );
00499 return 0;
00500 }
00501
00508 static int RenderableVertex (lua_State *L) { PROFILE
00509 cRobRenderOp* pRobRenderOp = checkudata_alive(L)->mpRROC;
00510 if (!pRobRenderOp) return 0;
00511 #define F(i) luaL_checknumber(L,i)
00512 #define V(i) Vector3(F(i+0),F(i+1),F(i+2))
00513 #define C(i) ColourValue(F(i+0),F(i+1),F(i+2),F(i+3))
00514 Ogre::Vector3 p(F(2),F(3),F(4));
00515 int argc = lua_gettop(L) - 1;
00516 switch (argc) {
00517 case 3: pRobRenderOp->Vertex(p);
00518 break;case 5: pRobRenderOp->Vertex(p,F(5),F(6));
00519 break;case 6: pRobRenderOp->Vertex(p,V(5));
00520 break;case 8: pRobRenderOp->Vertex(p,V(5),F(8),F(9));
00521
00522 break;case 7: pRobRenderOp->Vertex(p,C(5));
00523 break;case 9: pRobRenderOp->Vertex(p,F(5),F(6),C(7));
00524 break;case 10: pRobRenderOp->Vertex(p,V(5),C(8));
00525 break;case 12: pRobRenderOp->Vertex(p,V(5),F(8),F(9),C(10));
00526 break;default: printf("WARNING ! cGfx3D_L::RenderableVertex : strange argument count : %d\n",argc);
00527 }
00528 return 0;
00529 }
00530
00533 static int RenderableIndex (lua_State *L) { PROFILE
00534 checkudata_alive(L)->mpRROC->Index(luaL_checkint(L,2));
00535 return 0;
00536 }
00537
00540 static int RenderableIndex3 (lua_State *L) { PROFILE
00541 checkudata_alive(L)->mpRROC->Index(luaL_checkint(L,2));
00542 checkudata_alive(L)->mpRROC->Index(luaL_checkint(L,3));
00543 checkudata_alive(L)->mpRROC->Index(luaL_checkint(L,4));
00544 return 0;
00545 }
00546
00548 static int RenderableSkipVertices (lua_State *L) { PROFILE
00549 checkudata_alive(L)->mpRROC->SkipVertices(luaL_checkint(L,2));
00550 return 0;
00551 }
00552
00554 static int RenderableSkipIndices (lua_State *L) { PROFILE
00555 checkudata_alive(L)->mpRROC->SkipIndices(luaL_checkint(L,2));
00556 return 0;
00557 }
00558
00560 static int RenderableEnd (lua_State *L) { PROFILE
00561 checkudata_alive(L)->mpRROC->End();
00562 return 0;
00563 }
00564
00565
00567
00569 static int SOC_ChildBringToFront (lua_State *L) { PROFILE
00570 cSortedOverlayContainer* pSOC = checkudata_alive(L)->mpSOC;
00571 Ogre::OverlayElement* pChild = checkudata_alive(L,2)->mpOverlayElement;
00572 if (pSOC && pChild) pSOC->ChildBringToFront(pChild);
00573 return 0;
00574 }
00576 static int SOC_ChildSendToBack (lua_State *L) { PROFILE
00577 cSortedOverlayContainer* pSOC = checkudata_alive(L)->mpSOC;
00578 Ogre::OverlayElement* pChild = checkudata_alive(L,2)->mpOverlayElement;
00579 if (pSOC && pChild) pSOC->ChildSendToBack(pChild);
00580 return 0;
00581 }
00583 static int SOC_ChildInsertAfter (lua_State *L) { PROFILE
00584 cSortedOverlayContainer* pSOC = checkudata_alive(L)->mpSOC;
00585 Ogre::OverlayElement* pChild = checkudata_alive(L,2)->mpOverlayElement;
00586 Ogre::OverlayElement* pOther = checkudata_alive(L,3)->mpOverlayElement;
00587 if (pSOC && pChild && pOther) pSOC->ChildInsertAfter(pChild,pOther);
00588 return 0;
00589 }
00591 static int SOC_ChildInsertBefore (lua_State *L) { PROFILE
00592 cSortedOverlayContainer* pSOC = checkudata_alive(L)->mpSOC;
00593 Ogre::OverlayElement* pChild = checkudata_alive(L,2)->mpOverlayElement;
00594 Ogre::OverlayElement* pOther = checkudata_alive(L,3)->mpOverlayElement;
00595 if (pSOC && pChild && pOther) pSOC->ChildInsertBefore(pChild,pOther);
00596 return 0;
00597 }
00598
00599
00601
00604 static int SetUVMid (lua_State *L) { PROFILE
00605 cCompassOverlay* pCompass = checkudata_alive(L)->mpCompass;
00606 if (pCompass) pCompass->SetUVMid(luaL_checknumber(L,2),luaL_checknumber(L,3));
00607 return 0;
00608 }
00609
00612 static int SetUVRad (lua_State *L) { PROFILE
00613 cCompassOverlay* pCompass = checkudata_alive(L)->mpCompass;
00614 if (pCompass) pCompass->SetUVRad(luaL_checknumber(L,2),luaL_checknumber(L,3));
00615 return 0;
00616 }
00617
00621 static int SetAngBias (lua_State *L) { PROFILE
00622 cCompassOverlay* pCompass = checkudata_alive(L)->mpCompass;
00623 if (pCompass) pCompass->SetAngBias(luaL_checknumber(L,2));
00624 return 0;
00625 }
00626
00630 static int SetRankFactor (lua_State *L) { PROFILE
00631 cSortedOverlayContainer* pSortedContainer = checkudata_alive(L)->mpSOC;
00632 if (pSortedContainer) pSortedContainer->SetRankFactor(luaL_checkint(L,2));
00633 return 0;
00634 }
00635
00638 static int SetTrackPosSceneNode (lua_State *L) { PROFILE
00639 cGfx3D* target = (lua_gettop(L) > 1 && !lua_isnil(L,2))?cLuaBind<cGfx3D>::checkudata_alive(L,2):0;
00640 checkudata_alive(L)->mpTrackPosTarget = target;
00641 if (target) checkudata_alive(L)->SetPrepareFrameStep(true);
00642 return 0;
00643 }
00644
00647 static int SetTrackOffset (lua_State *L) { PROFILE
00648 checkudata_alive(L)->mvTrackPosOffset.x = luaL_checknumber(L,2);
00649 checkudata_alive(L)->mvTrackPosOffset.y = luaL_checknumber(L,3);
00650 return 0;
00651 }
00652
00656 static int SetTrackMouse (lua_State *L) { PROFILE
00657 bool bOn = (lua_isboolean(L,2) ? lua_toboolean(L,2) : luaL_checkint(L,2));
00658 checkudata_alive(L)->mbTrackMouse = bOn;
00659 if (bOn) checkudata_alive(L)->SetPrepareFrameStep(true);
00660 return 0;
00661 }
00662
00663 virtual const char* GetLuaTypeName () { return "lugre.gfx2D"; }
00664 };
00665
00667 void cGfx2D::LuaRegister (lua_State *L) { PROFILE
00668 cLuaBind<cGfx2D>::GetSingletonPtr(new cGfx2D_L())->LuaRegister(L);
00669 }
00670
00671 };