Update to TimelineController for CYLControl
This commit is contained in:
parent
ca64fc6b39
commit
33d2cc5444
2 changed files with 37 additions and 17 deletions
|
@ -18,7 +18,7 @@ namespace cylvester
|
||||||
private float transitionTargetRealtime_;
|
private float transitionTargetRealtime_;
|
||||||
private float previousMarkerTime_;
|
private float previousMarkerTime_;
|
||||||
private float nextMarkerTime_;
|
private float nextMarkerTime_;
|
||||||
private float restTime_;
|
private bool transitionDirectionReverse_;
|
||||||
|
|
||||||
public void Start()
|
public void Start()
|
||||||
{
|
{
|
||||||
|
@ -43,8 +43,8 @@ namespace cylvester
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
playableDirector.time = qlistMarkers_[i].time;
|
playableDirector.time = qlistMarkers_[i].time;
|
||||||
var previousMarkerTime = i > 0 ? (double?) qlistMarkers_[i - 1].time : null;
|
var previousMarkerTime = i > 0 ? (double?) qlistMarkers_[i - 1].time : 0;
|
||||||
var nextMarkerTime = i < numMarkers - 1 ? (double?) qlistMarkers_[i + 1].time : null;
|
var nextMarkerTime = i < numMarkers - 1 ? (double?) qlistMarkers_[i + 1].time : qlistMarkers_[numMarkers - 1].time;
|
||||||
previousMarkerTime_ = (float) previousMarkerTime;
|
previousMarkerTime_ = (float) previousMarkerTime;
|
||||||
nextMarkerTime_ = (float) nextMarkerTime;
|
nextMarkerTime_ = (float) nextMarkerTime;
|
||||||
boundary_ = new Boundary(previousMarkerTime, nextMarkerTime);
|
boundary_ = new Boundary(previousMarkerTime, nextMarkerTime);
|
||||||
|
@ -58,29 +58,43 @@ namespace cylvester
|
||||||
if (playableDirector.state == PlayState.Paused)
|
if (playableDirector.state == PlayState.Paused)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!(Time.fixedUnscaledTime >= transitionTargetRealtime_)) // check o current time >= targetTime
|
if (!(Time.fixedUnscaledTime >= transitionTargetRealtime_)) // check if Transition has not finished yet
|
||||||
{
|
{
|
||||||
speed_ = (CalculateTransitionSpeed(nextMarkerTime_));// berechne tnrsitionSpeed
|
if (!transitionDirectionReverse_) // if transition direction forward, speed becomes positive
|
||||||
|
{
|
||||||
|
speed_ = CalculateTransitionSpeed(nextMarkerTime_);
|
||||||
|
}
|
||||||
|
|
||||||
Debug.Log("Rest time: " + restTime_);
|
else // if transition direction backward, speed becomes negative
|
||||||
Debug.Log("Speed set to: " + speed_);
|
{
|
||||||
|
speed_ = CalculateTransitionSpeed(previousMarkerTime_);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var deltaTime = Time.deltaTime;
|
var deltaTime = Time.deltaTime;
|
||||||
var expectedTimeIncrement = speed_ * deltaTime;
|
var expectedTimeIncrement = speed_ * deltaTime;
|
||||||
var expectedTimeInTimeline = playableDirector.time + expectedTimeIncrement;
|
var expectedTimeInTimeline = playableDirector.time + expectedTimeIncrement;
|
||||||
|
|
||||||
if (boundary_.IsInside(expectedTimeInTimeline))
|
if (boundary_.IsInside(expectedTimeInTimeline)) // check if we are in between next and previous marker
|
||||||
{
|
{
|
||||||
playableDirector.time = expectedTimeInTimeline;
|
playableDirector.time = expectedTimeInTimeline;
|
||||||
playableDirector.Evaluate();
|
playableDirector.Evaluate();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//sets playhead precisly to marker position at the end of transition.
|
||||||
|
if (!transitionDirectionReverse_)
|
||||||
|
{
|
||||||
|
playableDirector.time = nextMarkerTime_;
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
playableDirector.time = previousMarkerTime_;
|
||||||
|
}
|
||||||
|
|
||||||
playableDirector.Pause();
|
playableDirector.Pause();
|
||||||
ResetSpeed();
|
ResetSpeed();
|
||||||
Debug.Log("Speed Reset to " + speed_);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,10 +104,10 @@ namespace cylvester
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void UpdateTransitionTargetRealTime(float restTime)
|
public void UpdateTransitionTargetRealTime(float restTime, bool reverse)
|
||||||
{
|
{
|
||||||
|
transitionDirectionReverse_ = reverse;
|
||||||
transitionTargetRealtime_ = Time.fixedUnscaledTime + restTime;
|
transitionTargetRealtime_ = Time.fixedUnscaledTime + restTime;
|
||||||
restTime_ = restTime;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private float CalculateTransitionSpeed(float targetMarkerTime)
|
private float CalculateTransitionSpeed(float targetMarkerTime)
|
||||||
|
@ -103,3 +117,9 @@ namespace cylvester
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
if (reverse_ == true)
|
||||||
|
{
|
||||||
|
speed_ = speed_* -1;
|
||||||
|
}
|
||||||
|
*/
|
|
@ -72,12 +72,12 @@ namespace cylvester
|
||||||
var restTime = CalculateRestTime(FourBarTrigger - currentTick_ % FourBarTrigger);
|
var restTime = CalculateRestTime(FourBarTrigger - currentTick_ % FourBarTrigger);
|
||||||
if (nextSelectedScene_ > currentSelectedScene_)
|
if (nextSelectedScene_ > currentSelectedScene_)
|
||||||
{
|
{
|
||||||
timelineController.UpdateTransitionTargetRealTime(restTime);
|
timelineController.UpdateTransitionTargetRealTime(restTime, false);
|
||||||
stateManager.SelectedState = nextSelectedScene_;
|
stateManager.SelectedState = nextSelectedScene_;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
timelineController.UpdateTransitionTargetRealTime(-restTime);
|
timelineController.UpdateTransitionTargetRealTime(restTime, true);
|
||||||
stateManager.SelectedState = nextSelectedScene_ + 1;
|
stateManager.SelectedState = nextSelectedScene_ + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,14 +88,14 @@ namespace cylvester
|
||||||
var restTime = CalculateRestTime(OneBarTrigger - currentTick_ % OneBarTrigger);
|
var restTime = CalculateRestTime(OneBarTrigger - currentTick_ % OneBarTrigger);
|
||||||
if (nextSelectedScene_ > currentSelectedScene_)
|
if (nextSelectedScene_ > currentSelectedScene_)
|
||||||
{
|
{
|
||||||
timelineController.UpdateTransitionTargetRealTime(restTime);
|
timelineController.UpdateTransitionTargetRealTime(restTime, false);
|
||||||
stateManager.SelectedState = nextSelectedScene_;
|
stateManager.SelectedState = nextSelectedScene_;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
timelineController.UpdateTransitionTargetRealTime(-restTime);
|
timelineController.UpdateTransitionTargetRealTime(restTime, true);
|
||||||
stateManager.SelectedState = nextSelectedScene_ + 1;
|
stateManager.SelectedState = nextSelectedScene_ + 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in a new issue