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 );