From e592af10de129bae8a6f565cfb81faacd776bf27 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 22 Sep 2006 03:23:13 +0000 Subject: [PATCH] SetTransformFromReference --- stepmania/src/ActorScroller.cpp | 12 +++++++++--- stepmania/src/ActorScroller.h | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/stepmania/src/ActorScroller.cpp b/stepmania/src/ActorScroller.cpp index 2d432bd102..349975564a 100644 --- a/stepmania/src/ActorScroller.cpp +++ b/stepmania/src/ActorScroller.cpp @@ -52,10 +52,10 @@ void ActorScroller::Load2() LUA->Release( L ); } -void ActorScroller::SetTransformFromExpression( const RString &sTransformFunction ) +void ActorScroller::SetTransformFromReference( const LuaReference &ref ) { - m_exprTransformFunction.SetFromExpression( sTransformFunction ); - + m_exprTransformFunction.SetFromReference( ref ); + // Probe to find which of the parameters are used. #define GP(a,b) m_exprTransformFunction.GetPosition( a, b, 2 ) m_bFunctionDependsOnPositionOffset = (GP(0,0) != GP(1,0)) && (GP(0,1) != GP(1,1)); @@ -63,6 +63,12 @@ void ActorScroller::SetTransformFromExpression( const RString &sTransformFunctio m_exprTransformFunction.ClearCache(); } +void ActorScroller::SetTransformFromExpression( const RString &sTransformFunction ) +{ + LuaReference ref; + ref.SetFromExpression( sTransformFunction ); +} + void ActorScroller::SetTransformFromHeight( float fItemHeight ) { SetTransformFromExpression( ssprintf("function(self,offset,itemIndex,numItems) self:y(%f*offset) end",fItemHeight) ); diff --git a/stepmania/src/ActorScroller.h b/stepmania/src/ActorScroller.h index 609cdfaa84..775bfaa81a 100644 --- a/stepmania/src/ActorScroller.h +++ b/stepmania/src/ActorScroller.h @@ -13,6 +13,7 @@ class ActorScroller : public ActorFrame public: ActorScroller(); + void SetTransformFromReference( const LuaReference &ref ); void SetTransformFromExpression( const RString &sTransformFunction ); void SetTransformFromHeight( float fItemHeight );