fix GCC errors and warnings

This commit is contained in:
Chris Danford
2005-02-01 07:49:23 +00:00
parent 1f56e7dfef
commit d6c33c96d6
2 changed files with 207 additions and 194 deletions
+188 -187
View File
@@ -16,193 +16,6 @@ struct lua_State;
#define DRAW_ORDER_TRANSITIONS 100
#define DRAW_ORDER_AFTER_EVERYTHING 200
template<class T>
class LunaActor : public Luna<T>
{
public:
LunaActor() { LUA->Register( Register ); }
static int sleep( T* p, lua_State *L ) { p->Sleep(FArg(1)); return 0; } \
static int linear( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_LINEAR); return 0; } \
static int accelerate( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_ACCELERATE); return 0; } \
static int decelerate( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_DECELERATE); return 0; } \
static int bouncebegin( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_BOUNCE_BEGIN); return 0; } \
static int bounceend( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_BOUNCE_END); return 0; } \
static int spring( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_SPRING); return 0; } \
static int stoptweening( T* p, lua_State *L ) { p->StopTweening(); p->BeginTweening( 0.0001f, Actor::TWEEN_LINEAR ); return 0; } \
static int finishtweening( T* p, lua_State *L ) { p->FinishTweening(); return 0; } \
static int hurrytweening( T* p, lua_State *L ) { p->HurryTweening(FArg(1)); return 0; } \
static int x( T* p, lua_State *L ) { p->SetX(FArg(1)); return 0; } \
static int y( T* p, lua_State *L ) { p->SetY(FArg(1)); return 0; } \
static int z( T* p, lua_State *L ) { p->SetZ(FArg(1)); return 0; } \
static int addx( T* p, lua_State *L ) { p->AddX(FArg(1)); return 0; } \
static int addy( T* p, lua_State *L ) { p->AddY(FArg(1)); return 0; } \
static int addz( T* p, lua_State *L ) { p->AddZ(FArg(1)); return 0; } \
static int zoom( T* p, lua_State *L ) { p->SetZoom(FArg(1)); return 0; } \
static int zoomx( T* p, lua_State *L ) { p->SetZoomX(FArg(1)); return 0; } \
static int zoomy( T* p, lua_State *L ) { p->SetZoomY(FArg(1)); return 0; } \
static int zoomz( T* p, lua_State *L ) { p->SetZoomZ(FArg(1)); return 0; } \
static int zoomtowidth( T* p, lua_State *L ) { p->ZoomToWidth(FArg(1)); return 0; } \
static int zoomtoheight( T* p, lua_State *L ) { p->ZoomToHeight(FArg(1)); return 0; } \
static int stretchto( T* p, lua_State *L ) { p->StretchTo( RectF(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int cropleft( T* p, lua_State *L ) { p->SetCropLeft(FArg(1)); return 0; } \
static int croptop( T* p, lua_State *L ) { p->SetCropTop(FArg(1)); return 0; } \
static int cropright( T* p, lua_State *L ) { p->SetCropRight(FArg(1)); return 0; } \
static int cropbottom( T* p, lua_State *L ) { p->SetCropBottom(FArg(1)); return 0; } \
static int fadeleft( T* p, lua_State *L ) { p->SetFadeLeft(FArg(1)); return 0; } \
static int fadetop( T* p, lua_State *L ) { p->SetFadeTop(FArg(1)); return 0; } \
static int faderight( T* p, lua_State *L ) { p->SetFadeRight(FArg(1)); return 0; } \
static int fadebottom( T* p, lua_State *L ) { p->SetFadeBottom(FArg(1)); return 0; } \
static int diffuse( T* p, lua_State *L ) { p->SetDiffuse( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffuseleftedge( T* p, lua_State *L ) { p->SetDiffuseLeftEdge( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffuserightedge( T* p, lua_State *L ) { p->SetDiffuseRightEdge( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffusetopedge( T* p, lua_State *L ) { p->SetDiffuseTopEdge( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffusebottomedge( T* p, lua_State *L ) { p->SetDiffuseBottomEdge( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffusealpha( T* p, lua_State *L ) { p->SetDiffuseAlpha(FArg(1)); return 0; } \
static int diffusecolor( T* p, lua_State *L ) { p->SetDiffuseColor( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int glow( T* p, lua_State *L ) { p->SetGlow( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int rotationx( T* p, lua_State *L ) { p->SetRotationX(FArg(1)); return 0; } \
static int rotationy( T* p, lua_State *L ) { p->SetRotationY(FArg(1)); return 0; } \
static int rotationz( T* p, lua_State *L ) { p->SetRotationZ(FArg(1)); return 0; } \
static int heading( T* p, lua_State *L ) { p->AddRotationH(FArg(1)); return 0; } \
static int pitch( T* p, lua_State *L ) { p->AddRotationP(FArg(1)); return 0; } \
static int roll( T* p, lua_State *L ) { p->AddRotationR(FArg(1)); return 0; } \
static int shadowlength( T* p, lua_State *L ) { p->SetShadowLength(FArg(1)); return 0; } \
static int horizalign( T* p, lua_State *L ) { p->SetHorizAlignString(SArg(1)); return 0; } \
static int vertalign( T* p, lua_State *L ) { p->SetVertAlignString(SArg(1)); return 0; } \
static int diffuseblink( T* p, lua_State *L ) { p->SetEffectDiffuseBlink(); return 0; } \
static int diffuseshift( T* p, lua_State *L ) { p->SetEffectDiffuseShift(); return 0; } \
static int glowblink( T* p, lua_State *L ) { p->SetEffectGlowBlink(); return 0; } \
static int glowshift( T* p, lua_State *L ) { p->SetEffectGlowShift(); return 0; } \
static int rainbow( T* p, lua_State *L ) { p->SetEffectRainbow(); return 0; } \
static int wag( T* p, lua_State *L ) { p->SetEffectWag(); return 0; } \
static int bounce( T* p, lua_State *L ) { p->SetEffectBounce(); return 0; } \
static int bob( T* p, lua_State *L ) { p->SetEffectBob(); return 0; } \
static int pulse( T* p, lua_State *L ) { p->SetEffectPulse(); return 0; } \
static int spin( T* p, lua_State *L ) { p->SetEffectSpin(); return 0; } \
static int vibrate( T* p, lua_State *L ) { p->SetEffectVibrate(); return 0; } \
static int stopeffect( T* p, lua_State *L ) { p->SetEffectNone(); return 0; } \
static int effectcolor1( T* p, lua_State *L ) { p->SetEffectColor1( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int effectcolor2( T* p, lua_State *L ) { p->SetEffectColor2( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int effectperiod( T* p, lua_State *L ) { p->SetEffectPeriod(FArg(1)); return 0; } \
static int effectoffset( T* p, lua_State *L ) { p->SetEffectOffset(FArg(1)); return 0; } \
static int effectdelay( T* p, lua_State *L ) { p->SetEffectDelay(FArg(1)); return 0; } \
static int effectclock( T* p, lua_State *L ) { p->SetEffectClockString(SArg(1)); return 0; } \
static int effectmagnitude( T* p, lua_State *L ) { p->SetEffectMagnitude( RageVector3(FArg(1),FArg(2),FArg(3)) ); return 0; } \
static int scaletocover( T* p, lua_State *L ) { p->ScaleToCover( RectF(FArg(1), FArg(2), FArg(3), FArg(4)) ); return 0; } \
static int scaletofit( T* p, lua_State *L ) { p->ScaleToFitInside( RectF(FArg(1), FArg(2), FArg(3), FArg(4)) ); return 0; } \
static int animate( T* p, lua_State *L ) { p->EnableAnimation(BArg(1)); return 0; } \
static int play( T* p, lua_State *L ) { p->EnableAnimation(true); return 0; } \
static int pause( T* p, lua_State *L ) { p->EnableAnimation(false); return 0; } \
static int setstate( T* p, lua_State *L ) { p->SetState(IArg(1)); return 0; } \
static int texturewrapping( T* p, lua_State *L ) { p->SetTextureWrapping(BArg(1)); return 0; } \
static int additiveblend( T* p, lua_State *L ) { p->SetBlendMode(BArg(1) ? BLEND_ADD : BLEND_NORMAL); return 0; } \
static int blend( T* p, lua_State *L ) { p->SetBlendModeString(SArg(1)); return 0; } \
static int zbuffer( T* p, lua_State *L ) { p->SetUseZBuffer(BArg(1)); return 0; } \
static int ztest( T* p, lua_State *L ) { p->SetZTestMode(BArg(1)?ZTEST_WRITE_ON_PASS:ZTEST_OFF); return 0; } \
static int ztestmode( T* p, lua_State *L ) { p->SetZTestModeString(SArg(1)); return 0; } \
static int zwrite( T* p, lua_State *L ) { p->SetZWrite(BArg(1)); return 0; } \
static int clearzbuffer( T* p, lua_State *L ) { p->SetClearZBuffer(BArg(1)); return 0; } \
static int backfacecull( T* p, lua_State *L ) { p->SetCullMode(BArg(1) ? CULL_BACK : CULL_NONE); return 0; } \
static int cullmode( T* p, lua_State *L ) { p->SetCullModeString(SArg(1)); return 0; } \
static int hidden( T* p, lua_State *L ) { p->SetHidden(BArg(1)); return 0; } \
static int hibernate( T* p, lua_State *L ) { p->SetHibernate(FArg(1)); return 0; } \
static int draworder( T* p, lua_State *L ) { p->SetDrawOrder(IArg(1)); return 0; } \
static int playcommand( T* p, lua_State *L ) { p->PlayCommand(SArg(1)); return 0; } \
static int queuecommand( T* p, lua_State *L ) { p->QueueCommand(SArg(1)); return 0; } \
static void Register(lua_State *L) {
ADD_METHOD( sleep ) \
ADD_METHOD( linear ) \
ADD_METHOD( accelerate ) \
ADD_METHOD( decelerate ) \
ADD_METHOD( bouncebegin ) \
ADD_METHOD( bounceend ) \
ADD_METHOD( spring ) \
ADD_METHOD( stoptweening ) \
ADD_METHOD( finishtweening ) \
ADD_METHOD( hurrytweening ) \
ADD_METHOD( x ) \
ADD_METHOD( y ) \
ADD_METHOD( z ) \
ADD_METHOD( addx ) \
ADD_METHOD( addy ) \
ADD_METHOD( addz ) \
ADD_METHOD( zoom ) \
ADD_METHOD( zoomx ) \
ADD_METHOD( zoomy ) \
ADD_METHOD( zoomz ) \
ADD_METHOD( zoomtowidth ) \
ADD_METHOD( zoomtoheight ) \
ADD_METHOD( stretchto ) \
ADD_METHOD( cropleft ) \
ADD_METHOD( croptop ) \
ADD_METHOD( cropright ) \
ADD_METHOD( cropbottom ) \
ADD_METHOD( fadeleft ) \
ADD_METHOD( fadetop ) \
ADD_METHOD( faderight ) \
ADD_METHOD( fadebottom ) \
ADD_METHOD( diffuse ) \
ADD_METHOD( diffuseleftedge ) \
ADD_METHOD( diffuserightedge ) \
ADD_METHOD( diffusetopedge ) \
ADD_METHOD( diffusebottomedge ) \
ADD_METHOD( diffusealpha ) \
ADD_METHOD( diffusecolor ) \
ADD_METHOD( glow ) \
ADD_METHOD( rotationx ) \
ADD_METHOD( rotationy ) \
ADD_METHOD( rotationz ) \
ADD_METHOD( heading ) \
ADD_METHOD( pitch ) \
ADD_METHOD( roll ) \
ADD_METHOD( shadowlength ) \
ADD_METHOD( horizalign ) \
ADD_METHOD( vertalign ) \
ADD_METHOD( diffuseblink ) \
ADD_METHOD( diffuseshift ) \
ADD_METHOD( glowblink ) \
ADD_METHOD( glowshift ) \
ADD_METHOD( rainbow ) \
ADD_METHOD( wag ) \
ADD_METHOD( bounce ) \
ADD_METHOD( bob ) \
ADD_METHOD( pulse ) \
ADD_METHOD( spin ) \
ADD_METHOD( vibrate ) \
ADD_METHOD( stopeffect ) \
ADD_METHOD( effectcolor1 ) \
ADD_METHOD( effectcolor2 ) \
ADD_METHOD( effectperiod ) \
ADD_METHOD( effectoffset ) \
ADD_METHOD( effectdelay ) \
ADD_METHOD( effectclock ) \
ADD_METHOD( effectmagnitude ) \
ADD_METHOD( scaletocover ) \
ADD_METHOD( scaletofit ) \
ADD_METHOD( animate ) \
ADD_METHOD( play ) \
ADD_METHOD( pause ) \
ADD_METHOD( setstate ) \
ADD_METHOD( texturewrapping ) \
ADD_METHOD( additiveblend ) \
ADD_METHOD( blend ) \
ADD_METHOD( zbuffer ) \
ADD_METHOD( ztest ) \
ADD_METHOD( ztestmode ) \
ADD_METHOD( zwrite ) \
ADD_METHOD( clearzbuffer ) \
ADD_METHOD( backfacecull ) \
ADD_METHOD( cullmode ) \
ADD_METHOD( hidden ) \
ADD_METHOD( hibernate ) \
ADD_METHOD( draworder ) \
ADD_METHOD( playcommand ) \
ADD_METHOD( queuecommand ) \
Luna<T>::Register( L );
}
};
class Actor
{
@@ -607,6 +420,194 @@ protected:
map<CString, apActorCommands> m_mapNameToCommands;
};
template<class T>
class LunaActor : public Luna<T>
{
public:
LunaActor() { LUA->Register( Register ); }
static int sleep( T* p, lua_State *L ) { p->Sleep(FArg(1)); return 0; } \
static int linear( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_LINEAR); return 0; } \
static int accelerate( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_ACCELERATE); return 0; } \
static int decelerate( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_DECELERATE); return 0; } \
static int bouncebegin( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_BOUNCE_BEGIN); return 0; } \
static int bounceend( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_BOUNCE_END); return 0; } \
static int spring( T* p, lua_State *L ) { p->BeginTweening(FArg(1),Actor::TWEEN_SPRING); return 0; } \
static int stoptweening( T* p, lua_State *L ) { p->StopTweening(); p->BeginTweening( 0.0001f, Actor::TWEEN_LINEAR ); return 0; } \
static int finishtweening( T* p, lua_State *L ) { p->FinishTweening(); return 0; } \
static int hurrytweening( T* p, lua_State *L ) { p->HurryTweening(FArg(1)); return 0; } \
static int x( T* p, lua_State *L ) { p->SetX(FArg(1)); return 0; } \
static int y( T* p, lua_State *L ) { p->SetY(FArg(1)); return 0; } \
static int z( T* p, lua_State *L ) { p->SetZ(FArg(1)); return 0; } \
static int addx( T* p, lua_State *L ) { p->AddX(FArg(1)); return 0; } \
static int addy( T* p, lua_State *L ) { p->AddY(FArg(1)); return 0; } \
static int addz( T* p, lua_State *L ) { p->AddZ(FArg(1)); return 0; } \
static int zoom( T* p, lua_State *L ) { p->SetZoom(FArg(1)); return 0; } \
static int zoomx( T* p, lua_State *L ) { p->SetZoomX(FArg(1)); return 0; } \
static int zoomy( T* p, lua_State *L ) { p->SetZoomY(FArg(1)); return 0; } \
static int zoomz( T* p, lua_State *L ) { p->SetZoomZ(FArg(1)); return 0; } \
static int zoomtowidth( T* p, lua_State *L ) { p->ZoomToWidth(FArg(1)); return 0; } \
static int zoomtoheight( T* p, lua_State *L ) { p->ZoomToHeight(FArg(1)); return 0; } \
static int stretchto( T* p, lua_State *L ) { p->StretchTo( RectF(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int cropleft( T* p, lua_State *L ) { p->SetCropLeft(FArg(1)); return 0; } \
static int croptop( T* p, lua_State *L ) { p->SetCropTop(FArg(1)); return 0; } \
static int cropright( T* p, lua_State *L ) { p->SetCropRight(FArg(1)); return 0; } \
static int cropbottom( T* p, lua_State *L ) { p->SetCropBottom(FArg(1)); return 0; } \
static int fadeleft( T* p, lua_State *L ) { p->SetFadeLeft(FArg(1)); return 0; } \
static int fadetop( T* p, lua_State *L ) { p->SetFadeTop(FArg(1)); return 0; } \
static int faderight( T* p, lua_State *L ) { p->SetFadeRight(FArg(1)); return 0; } \
static int fadebottom( T* p, lua_State *L ) { p->SetFadeBottom(FArg(1)); return 0; } \
static int diffuse( T* p, lua_State *L ) { p->SetDiffuse( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffuseleftedge( T* p, lua_State *L ) { p->SetDiffuseLeftEdge( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffuserightedge( T* p, lua_State *L ) { p->SetDiffuseRightEdge( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffusetopedge( T* p, lua_State *L ) { p->SetDiffuseTopEdge( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffusebottomedge( T* p, lua_State *L ) { p->SetDiffuseBottomEdge( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int diffusealpha( T* p, lua_State *L ) { p->SetDiffuseAlpha(FArg(1)); return 0; } \
static int diffusecolor( T* p, lua_State *L ) { p->SetDiffuseColor( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int glow( T* p, lua_State *L ) { p->SetGlow( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int rotationx( T* p, lua_State *L ) { p->SetRotationX(FArg(1)); return 0; } \
static int rotationy( T* p, lua_State *L ) { p->SetRotationY(FArg(1)); return 0; } \
static int rotationz( T* p, lua_State *L ) { p->SetRotationZ(FArg(1)); return 0; } \
static int heading( T* p, lua_State *L ) { p->AddRotationH(FArg(1)); return 0; } \
static int pitch( T* p, lua_State *L ) { p->AddRotationP(FArg(1)); return 0; } \
static int roll( T* p, lua_State *L ) { p->AddRotationR(FArg(1)); return 0; } \
static int shadowlength( T* p, lua_State *L ) { p->SetShadowLength(FArg(1)); return 0; } \
static int horizalign( T* p, lua_State *L ) { p->SetHorizAlignString(SArg(1)); return 0; } \
static int vertalign( T* p, lua_State *L ) { p->SetVertAlignString(SArg(1)); return 0; } \
static int diffuseblink( T* p, lua_State *L ) { p->SetEffectDiffuseBlink(); return 0; } \
static int diffuseshift( T* p, lua_State *L ) { p->SetEffectDiffuseShift(); return 0; } \
static int glowblink( T* p, lua_State *L ) { p->SetEffectGlowBlink(); return 0; } \
static int glowshift( T* p, lua_State *L ) { p->SetEffectGlowShift(); return 0; } \
static int rainbow( T* p, lua_State *L ) { p->SetEffectRainbow(); return 0; } \
static int wag( T* p, lua_State *L ) { p->SetEffectWag(); return 0; } \
static int bounce( T* p, lua_State *L ) { p->SetEffectBounce(); return 0; } \
static int bob( T* p, lua_State *L ) { p->SetEffectBob(); return 0; } \
static int pulse( T* p, lua_State *L ) { p->SetEffectPulse(); return 0; } \
static int spin( T* p, lua_State *L ) { p->SetEffectSpin(); return 0; } \
static int vibrate( T* p, lua_State *L ) { p->SetEffectVibrate(); return 0; } \
static int stopeffect( T* p, lua_State *L ) { p->SetEffectNone(); return 0; } \
static int effectcolor1( T* p, lua_State *L ) { p->SetEffectColor1( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int effectcolor2( T* p, lua_State *L ) { p->SetEffectColor2( RageColor(FArg(1),FArg(2),FArg(3),FArg(4)) ); return 0; } \
static int effectperiod( T* p, lua_State *L ) { p->SetEffectPeriod(FArg(1)); return 0; } \
static int effectoffset( T* p, lua_State *L ) { p->SetEffectOffset(FArg(1)); return 0; } \
static int effectdelay( T* p, lua_State *L ) { p->SetEffectDelay(FArg(1)); return 0; } \
static int effectclock( T* p, lua_State *L ) { p->SetEffectClockString(SArg(1)); return 0; } \
static int effectmagnitude( T* p, lua_State *L ) { p->SetEffectMagnitude( RageVector3(FArg(1),FArg(2),FArg(3)) ); return 0; } \
static int scaletocover( T* p, lua_State *L ) { p->ScaleToCover( RectF(FArg(1), FArg(2), FArg(3), FArg(4)) ); return 0; } \
static int scaletofit( T* p, lua_State *L ) { p->ScaleToFitInside( RectF(FArg(1), FArg(2), FArg(3), FArg(4)) ); return 0; } \
static int animate( T* p, lua_State *L ) { p->EnableAnimation(BArg(1)); return 0; } \
static int play( T* p, lua_State *L ) { p->EnableAnimation(true); return 0; } \
static int pause( T* p, lua_State *L ) { p->EnableAnimation(false); return 0; } \
static int setstate( T* p, lua_State *L ) { p->SetState(IArg(1)); return 0; } \
static int texturewrapping( T* p, lua_State *L ) { p->SetTextureWrapping(BArg(1)); return 0; } \
static int additiveblend( T* p, lua_State *L ) { p->SetBlendMode(BArg(1) ? BLEND_ADD : BLEND_NORMAL); return 0; } \
static int blend( T* p, lua_State *L ) { p->SetBlendModeString(SArg(1)); return 0; } \
static int zbuffer( T* p, lua_State *L ) { p->SetUseZBuffer(BArg(1)); return 0; } \
static int ztest( T* p, lua_State *L ) { p->SetZTestMode(BArg(1)?ZTEST_WRITE_ON_PASS:ZTEST_OFF); return 0; } \
static int ztestmode( T* p, lua_State *L ) { p->SetZTestModeString(SArg(1)); return 0; } \
static int zwrite( T* p, lua_State *L ) { p->SetZWrite(BArg(1)); return 0; } \
static int clearzbuffer( T* p, lua_State *L ) { p->SetClearZBuffer(BArg(1)); return 0; } \
static int backfacecull( T* p, lua_State *L ) { p->SetCullMode(BArg(1) ? CULL_BACK : CULL_NONE); return 0; } \
static int cullmode( T* p, lua_State *L ) { p->SetCullModeString(SArg(1)); return 0; } \
static int hidden( T* p, lua_State *L ) { p->SetHidden(BArg(1)); return 0; } \
static int hibernate( T* p, lua_State *L ) { p->SetHibernate(FArg(1)); return 0; } \
static int draworder( T* p, lua_State *L ) { p->SetDrawOrder(IArg(1)); return 0; } \
static int playcommand( T* p, lua_State *L ) { p->PlayCommand(SArg(1)); return 0; } \
static int queuecommand( T* p, lua_State *L ) { p->QueueCommand(SArg(1)); return 0; } \
static void Register(lua_State *L) {
ADD_METHOD( sleep ) \
ADD_METHOD( linear ) \
ADD_METHOD( accelerate ) \
ADD_METHOD( decelerate ) \
ADD_METHOD( bouncebegin ) \
ADD_METHOD( bounceend ) \
ADD_METHOD( spring ) \
ADD_METHOD( stoptweening ) \
ADD_METHOD( finishtweening ) \
ADD_METHOD( hurrytweening ) \
ADD_METHOD( x ) \
ADD_METHOD( y ) \
ADD_METHOD( z ) \
ADD_METHOD( addx ) \
ADD_METHOD( addy ) \
ADD_METHOD( addz ) \
ADD_METHOD( zoom ) \
ADD_METHOD( zoomx ) \
ADD_METHOD( zoomy ) \
ADD_METHOD( zoomz ) \
ADD_METHOD( zoomtowidth ) \
ADD_METHOD( zoomtoheight ) \
ADD_METHOD( stretchto ) \
ADD_METHOD( cropleft ) \
ADD_METHOD( croptop ) \
ADD_METHOD( cropright ) \
ADD_METHOD( cropbottom ) \
ADD_METHOD( fadeleft ) \
ADD_METHOD( fadetop ) \
ADD_METHOD( faderight ) \
ADD_METHOD( fadebottom ) \
ADD_METHOD( diffuse ) \
ADD_METHOD( diffuseleftedge ) \
ADD_METHOD( diffuserightedge ) \
ADD_METHOD( diffusetopedge ) \
ADD_METHOD( diffusebottomedge ) \
ADD_METHOD( diffusealpha ) \
ADD_METHOD( diffusecolor ) \
ADD_METHOD( glow ) \
ADD_METHOD( rotationx ) \
ADD_METHOD( rotationy ) \
ADD_METHOD( rotationz ) \
ADD_METHOD( heading ) \
ADD_METHOD( pitch ) \
ADD_METHOD( roll ) \
ADD_METHOD( shadowlength ) \
ADD_METHOD( horizalign ) \
ADD_METHOD( vertalign ) \
ADD_METHOD( diffuseblink ) \
ADD_METHOD( diffuseshift ) \
ADD_METHOD( glowblink ) \
ADD_METHOD( glowshift ) \
ADD_METHOD( rainbow ) \
ADD_METHOD( wag ) \
ADD_METHOD( bounce ) \
ADD_METHOD( bob ) \
ADD_METHOD( pulse ) \
ADD_METHOD( spin ) \
ADD_METHOD( vibrate ) \
ADD_METHOD( stopeffect ) \
ADD_METHOD( effectcolor1 ) \
ADD_METHOD( effectcolor2 ) \
ADD_METHOD( effectperiod ) \
ADD_METHOD( effectoffset ) \
ADD_METHOD( effectdelay ) \
ADD_METHOD( effectclock ) \
ADD_METHOD( effectmagnitude ) \
ADD_METHOD( scaletocover ) \
ADD_METHOD( scaletofit ) \
ADD_METHOD( animate ) \
ADD_METHOD( play ) \
ADD_METHOD( pause ) \
ADD_METHOD( setstate ) \
ADD_METHOD( texturewrapping ) \
ADD_METHOD( additiveblend ) \
ADD_METHOD( blend ) \
ADD_METHOD( zbuffer ) \
ADD_METHOD( ztest ) \
ADD_METHOD( ztestmode ) \
ADD_METHOD( zwrite ) \
ADD_METHOD( clearzbuffer ) \
ADD_METHOD( backfacecull ) \
ADD_METHOD( cullmode ) \
ADD_METHOD( hidden ) \
ADD_METHOD( hibernate ) \
ADD_METHOD( draworder ) \
ADD_METHOD( playcommand ) \
ADD_METHOD( queuecommand ) \
Luna<T>::Register( L );
}
};
#endif
/*
+19 -7
View File
@@ -21,14 +21,18 @@ extern "C"
#define FArg(n) ((float) luaL_checknumber(L,n))
template <typename T>
struct RegType
{
const char *name;
int (*mfunc)(T *p, lua_State *L);
};
template <typename T>
class Luna
{
typedef struct { T *pT; } userdataType;
public:
typedef int (*mfp)(T *p, lua_State *L);
typedef struct { const char *name; mfp mfunc; } RegType;
static void Register(lua_State *L) {
lua_newtable(L);
@@ -56,8 +60,9 @@ public:
lua_settable(L, metatable);
// fill method table with methods from class T
for (vector<RegType>::const_iterator i = s_pvMethods->begin(); i != s_pvMethods->end(); i++) {
const RegType *l = &(*i);
for (unsigned i=0; i<s_pvMethods->size(); i++ )
{
const MyRegType *l = &(*s_pvMethods)[i];
lua_pushstring(L, l->name);
lua_pushlightuserdata(L, (void*)l);
lua_pushcclosure(L, thunk, 1);
@@ -83,7 +88,7 @@ private:
T *obj = check(L, 1); // get 'self', or if you prefer, 'this'
lua_remove(L, 1); // remove self so member function args start at index 1
// get member function from upvalue
RegType *l = static_cast<RegType*>(lua_touserdata(L, lua_upvalueindex(1)));
MyRegType *l = static_cast<MyRegType*>(lua_touserdata(L, lua_upvalueindex(1)));
return (*(l->mfunc))(obj,L); // call member function
}
@@ -98,8 +103,15 @@ public:
return 1; // userdata containing pointer to T object
}
typedef vector<RegType> RegTypeVector;
typedef RegType<T> MyRegType;
typedef vector<MyRegType> RegTypeVector;
static RegTypeVector *s_pvMethods;
static void CreateMethodsVector()
{
if(s_pvMethods==NULL)
s_pvMethods = new RegTypeVector;
}
private:
static const char s_className[];
@@ -121,7 +133,7 @@ static Luna##T<T> registera; \
void T::PushSelf( lua_State *L ) { Luna##T<T>::Push( L, this ); }
#define ADD_METHOD( method_name ) \
{ if(s_pvMethods==NULL) s_pvMethods = new RegTypeVector; RegType r = {#method_name,method_name}; s_pvMethods->push_back(r); }
{ CreateMethodsVector(); RegType<T> r = {#method_name,method_name}; s_pvMethods->push_back(r); }
#endif