コード例 #1
0
ファイル: Playback.cpp プロジェクト: LukasBanana/GeometronLib
bool Playback::HasEndReached() const
{
    if (IsForward())
        return (AreFramesChrono() ? frame >= lastFrame : frame <= lastFrame);
    else
        return (AreFramesChrono() ? frame <= firstFrame : frame >= firstFrame);
}
コード例 #2
0
ファイル: Playback.cpp プロジェクト: LukasBanana/GeometronLib
void Playback::SetNextFrame(FrameIndex nextFrameIndex)
{
    if (IsForward())
        nextFrame = nextFrameIndex;
    else
        frame = nextFrameIndex;
}
コード例 #3
0
ファイル: Playback.cpp プロジェクト: LukasBanana/GeometronLib
void Playback::SetNextFrame()
{
    /* Set next frame index depending on playback chronology */
    if (IsForward())
        nextFrame = (AreFramesChrono() ? frame + 1 : frame - 1);
    else
        frame = (AreFramesChrono() ? frame - 1 : frame + 1);
}
コード例 #4
0
ファイル: Playback.cpp プロジェクト: LukasBanana/GeometronLib
void Playback::Update(Gs::Real deltaTime)
{
    /* Check if playback is currently being played */
    if (GetState() != State::Playing || deltaTime <= Gs::Real(0))
        return;

    /* Increase frame interpolator */
    interpolator += (deltaTime * speed);

    if (IsForward())
    {
        /* Post event for each animation frame */
        while (interpolator >= Gs::Real(1))
        {
            /* Set current frame to the next frame */
            interpolator -= Gs::Real(1);
            frame = nextFrame;

            /* Get next frame by event listener */
            PostNextFrame();
        }
    }
    else
    {
        /* Post event for each animation frame */
        while (interpolator <= Gs::Real(0))
        {
            /* Set current frame to the next frame */
            interpolator += Gs::Real(1);
            nextFrame = frame;

            /* Get next frame by event listener */
            PostNextFrame();
        }
    }
}
コード例 #5
0
bool FCurveSequence::IsAtEnd( ) const
{
	return ( IsForward() == true && IsPlaying() == false && !bIsLooping );
}