Added flag for making an actor use the effect delta for tweening. Updated changelog.
This commit is contained in:
@@ -4,6 +4,24 @@ The StepMania 5 Changelog covers all post-sm-ssc changes. For a list of changes
|
|||||||
from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
|
from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt.
|
||||||
________________________________________________________________________________
|
________________________________________________________________________________
|
||||||
|
|
||||||
|
2016/03/17
|
||||||
|
----------
|
||||||
|
* [Actor] Added get and set_tween_uses_effect_delta lua functions to make an
|
||||||
|
Actor use the effect clock for tweening. [kyzentun]
|
||||||
|
|
||||||
|
2016/03/15
|
||||||
|
----------
|
||||||
|
* [ProfileManager] Added GetStatsPrefix and SetStatsPrefix lua functions for
|
||||||
|
separating scores into different stats files. [kyzentun]
|
||||||
|
(this is kind of a stop gap, I'd really like to rewrite scoring to save
|
||||||
|
more data so that a score earned with one set of timing windows and weights
|
||||||
|
can be converted to the equivalent score with different timing windows)
|
||||||
|
|
||||||
|
2016/03/14
|
||||||
|
----------
|
||||||
|
* [Online] Stepmania will force disconnection from the SMO server when
|
||||||
|
entering the jukebox or sync calibration screens to avoid crash. [kyzentun]
|
||||||
|
|
||||||
2016/03/05
|
2016/03/05
|
||||||
----------
|
----------
|
||||||
* [global] get_sound_driver_list lua function added. [kyzentun]
|
* [global] get_sound_driver_list lua function added. [kyzentun]
|
||||||
|
|||||||
@@ -386,6 +386,7 @@
|
|||||||
<Function name='getaux'/>
|
<Function name='getaux'/>
|
||||||
<Function name='geteffectmagnitude'/>
|
<Function name='geteffectmagnitude'/>
|
||||||
<Function name='getrotation'/>
|
<Function name='getrotation'/>
|
||||||
|
<Function name='get_tween_uses_effect_delta'/>
|
||||||
<Function name='glow'/>
|
<Function name='glow'/>
|
||||||
<Function name='glowblink'/>
|
<Function name='glowblink'/>
|
||||||
<Function name='glowramp'/>
|
<Function name='glowramp'/>
|
||||||
@@ -418,6 +419,7 @@
|
|||||||
<Function name='scaletofit'/>
|
<Function name='scaletofit'/>
|
||||||
<Function name='setsize'/>
|
<Function name='setsize'/>
|
||||||
<Function name='setstate'/>
|
<Function name='setstate'/>
|
||||||
|
<Function name='set_tween_uses_effect_delta'/>
|
||||||
<Function name='shadowcolor'/>
|
<Function name='shadowcolor'/>
|
||||||
<Function name='shadowlength'/>
|
<Function name='shadowlength'/>
|
||||||
<Function name='shadowlengthx'/>
|
<Function name='shadowlengthx'/>
|
||||||
|
|||||||
@@ -1225,6 +1225,9 @@ save yourself some time, copy this for undocumented things:
|
|||||||
<Function name='GetZoomedWidth' return='float' arguments=''>
|
<Function name='GetZoomedWidth' return='float' arguments=''>
|
||||||
Returns the zoomed width of an Actor.
|
Returns the zoomed width of an Actor.
|
||||||
</Function>
|
</Function>
|
||||||
|
<Function name='get_tween_uses_effect_delta' return='bool' arguments=''>
|
||||||
|
Returns true if this actor is currently set to use the effect delta for tweening.
|
||||||
|
</Function>
|
||||||
<Function name='glow' return='void' arguments='color c'>
|
<Function name='glow' return='void' arguments='color c'>
|
||||||
Sets the Actor's glow color.
|
Sets the Actor's glow color.
|
||||||
</Function>
|
</Function>
|
||||||
@@ -1334,6 +1337,9 @@ save yourself some time, copy this for undocumented things:
|
|||||||
<Function name='SetWidth' return='void' arguments='float width'>
|
<Function name='SetWidth' return='void' arguments='float width'>
|
||||||
Sets the width of the Actor.
|
Sets the width of the Actor.
|
||||||
</Function>
|
</Function>
|
||||||
|
<Function name='set_tween_uses_effect_delta' return='' arguments='bool'>
|
||||||
|
Use this to make the actor use the effect clock to tween instead of using the global frame delta.
|
||||||
|
</Function>
|
||||||
<Function name='shadowcolor' return='void' arguments='color c'>
|
<Function name='shadowcolor' return='void' arguments='color c'>
|
||||||
Sets the shadow's color to <code>c</code>.
|
Sets the shadow's color to <code>c</code>.
|
||||||
</Function>
|
</Function>
|
||||||
|
|||||||
+24
-6
@@ -723,8 +723,25 @@ void Actor::EndDraw()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Actor::CalcPercentThroughTween()
|
||||||
|
{
|
||||||
|
TweenState &TS = m_Tweens[0]->state;
|
||||||
|
TweenInfo &TI = m_Tweens[0]->info;
|
||||||
|
const float percent_through = 1-(TI.m_fTimeLeftInTween / TI.m_fTweenTime);
|
||||||
|
// distort the percentage if appropriate
|
||||||
|
float percent_along = TI.m_pTween->Tween(percent_through);
|
||||||
|
TweenState::MakeWeightedAverage(m_current, m_start, TS, percent_along);
|
||||||
|
UpdatePercentThroughTween(percent_along);
|
||||||
|
}
|
||||||
|
|
||||||
void Actor::UpdateTweening( float fDeltaTime )
|
void Actor::UpdateTweening( float fDeltaTime )
|
||||||
{
|
{
|
||||||
|
if(fDeltaTime < 0.0 && !m_Tweens.empty())
|
||||||
|
{
|
||||||
|
m_Tweens[0]->info.m_fTimeLeftInTween-= fDeltaTime;
|
||||||
|
CalcPercentThroughTween();
|
||||||
|
return;
|
||||||
|
}
|
||||||
while( !m_Tweens.empty() // something to do
|
while( !m_Tweens.empty() // something to do
|
||||||
&& fDeltaTime > 0 ) // something will change
|
&& fDeltaTime > 0 ) // something will change
|
||||||
{
|
{
|
||||||
@@ -757,12 +774,7 @@ void Actor::UpdateTweening( float fDeltaTime )
|
|||||||
}
|
}
|
||||||
else // in the middle of tweening. Recalcute the current position.
|
else // in the middle of tweening. Recalcute the current position.
|
||||||
{
|
{
|
||||||
const float fPercentThroughTween = 1-(TI.m_fTimeLeftInTween / TI.m_fTweenTime);
|
CalcPercentThroughTween();
|
||||||
|
|
||||||
// distort the percentage if appropriate
|
|
||||||
float fPercentAlongPath = TI.m_pTween->Tween( fPercentThroughTween );
|
|
||||||
TweenState::MakeWeightedAverage( m_current, m_start, TS, fPercentAlongPath );
|
|
||||||
UpdatePercentThroughTween(fPercentAlongPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( bBeginning )
|
if( bBeginning )
|
||||||
@@ -884,6 +896,10 @@ void Actor::UpdateInternal(float delta_time)
|
|||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(m_tween_uses_effect_delta)
|
||||||
|
{
|
||||||
|
delta_time= m_fEffectDelta;
|
||||||
|
}
|
||||||
this->UpdateTweening(delta_time);
|
this->UpdateTweening(delta_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1739,6 +1755,7 @@ public:
|
|||||||
static int effectclock( T* p, lua_State *L ) { p->SetEffectClockString(SArg(1)); COMMON_RETURN_SELF; }
|
static int effectclock( T* p, lua_State *L ) { p->SetEffectClockString(SArg(1)); COMMON_RETURN_SELF; }
|
||||||
static int effectmagnitude( T* p, lua_State *L ) { p->SetEffectMagnitude( RageVector3(FArg(1),FArg(2),FArg(3)) ); COMMON_RETURN_SELF; }
|
static int effectmagnitude( T* p, lua_State *L ) { p->SetEffectMagnitude( RageVector3(FArg(1),FArg(2),FArg(3)) ); COMMON_RETURN_SELF; }
|
||||||
static int geteffectmagnitude( T* p, lua_State *L ) { RageVector3 v = p->GetEffectMagnitude(); lua_pushnumber(L, v[0]); lua_pushnumber(L, v[1]); lua_pushnumber(L, v[2]); return 3; }
|
static int geteffectmagnitude( T* p, lua_State *L ) { RageVector3 v = p->GetEffectMagnitude(); lua_pushnumber(L, v[0]); lua_pushnumber(L, v[1]); lua_pushnumber(L, v[2]); return 3; }
|
||||||
|
GETTER_SETTER_BOOL_METHOD(tween_uses_effect_delta);
|
||||||
static int scaletocover( T* p, lua_State *L ) { p->ScaleToCover( RectF(FArg(1), FArg(2), FArg(3), FArg(4)) ); COMMON_RETURN_SELF; }
|
static int scaletocover( T* p, lua_State *L ) { p->ScaleToCover( RectF(FArg(1), FArg(2), FArg(3), FArg(4)) ); COMMON_RETURN_SELF; }
|
||||||
static int scaletofit( T* p, lua_State *L ) { p->ScaleToFitInside( RectF(FArg(1), FArg(2), FArg(3), FArg(4)) ); COMMON_RETURN_SELF; }
|
static int scaletofit( T* p, lua_State *L ) { p->ScaleToFitInside( RectF(FArg(1), FArg(2), FArg(3), FArg(4)) ); COMMON_RETURN_SELF; }
|
||||||
static int animate( T* p, lua_State *L ) { p->EnableAnimation(BIArg(1)); COMMON_RETURN_SELF; }
|
static int animate( T* p, lua_State *L ) { p->EnableAnimation(BIArg(1)); COMMON_RETURN_SELF; }
|
||||||
@@ -2023,6 +2040,7 @@ public:
|
|||||||
ADD_METHOD( effectclock );
|
ADD_METHOD( effectclock );
|
||||||
ADD_METHOD( effectmagnitude );
|
ADD_METHOD( effectmagnitude );
|
||||||
ADD_METHOD( geteffectmagnitude );
|
ADD_METHOD( geteffectmagnitude );
|
||||||
|
ADD_GET_SET_METHODS(tween_uses_effect_delta);
|
||||||
ADD_METHOD( scaletocover );
|
ADD_METHOD( scaletocover );
|
||||||
ADD_METHOD( scaletofit );
|
ADD_METHOD( scaletofit );
|
||||||
ADD_METHOD( animate );
|
ADD_METHOD( animate );
|
||||||
|
|||||||
@@ -281,10 +281,13 @@ public:
|
|||||||
virtual void Update( float fDeltaTime ); // this can short circuit UpdateInternal
|
virtual void Update( float fDeltaTime ); // this can short circuit UpdateInternal
|
||||||
virtual void UpdateInternal( float fDeltaTime ); // override this
|
virtual void UpdateInternal( float fDeltaTime ); // override this
|
||||||
void UpdateTweening( float fDeltaTime );
|
void UpdateTweening( float fDeltaTime );
|
||||||
|
void CalcPercentThroughTween();
|
||||||
// These next functions should all be overridden by a derived class that has its own tweening states to handle.
|
// These next functions should all be overridden by a derived class that has its own tweening states to handle.
|
||||||
virtual void SetCurrentTweenStart() {}
|
virtual void SetCurrentTweenStart() {}
|
||||||
virtual void EraseHeadTween() {}
|
virtual void EraseHeadTween() {}
|
||||||
virtual void UpdatePercentThroughTween( float PercentThroughTween ) {}
|
virtual void UpdatePercentThroughTween( float PercentThroughTween ) {}
|
||||||
|
bool get_tween_uses_effect_delta() { return m_tween_uses_effect_delta; }
|
||||||
|
void set_tween_uses_effect_delta(bool t) { m_tween_uses_effect_delta= t; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Retrieve the Actor's name.
|
* @brief Retrieve the Actor's name.
|
||||||
@@ -700,6 +703,7 @@ protected:
|
|||||||
// -Kyz
|
// -Kyz
|
||||||
float m_effect_period;
|
float m_effect_period;
|
||||||
EffectClock m_EffectClock;
|
EffectClock m_EffectClock;
|
||||||
|
bool m_tween_uses_effect_delta;
|
||||||
|
|
||||||
/* This can be used in lieu of the fDeltaTime parameter to Update() to
|
/* This can be used in lieu of the fDeltaTime parameter to Update() to
|
||||||
* follow the effect clock. Actor::Update must be called first. */
|
* follow the effect clock. Actor::Update must be called first. */
|
||||||
|
|||||||
Reference in New Issue
Block a user