/*
* Copyright 2016 MovingBlocks
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.terasology.rendering.nui.animation;
import org.terasology.math.geom.Rect2i;
/**
* Controls animations to and from different screens
*/
public interface MenuAnimationSystem {
/**
* Trigger animation from previous screen to this one
*/
void triggerFromPrev();
/**
* Trigger animation from this one back to the previous screen
*/
void triggerToPrev();
/**
* Trigger animation from the next screen to this one
*/
void triggerFromNext();
/**
* Trigger animation from this one to the next screen
*/
void triggerToNext();
/**
* Use this method to show the next/previous screen.
* @param listener the listener to trigger when the animation has ended
*/
void onEnd(Runnable listener);
/**
* @param delta time difference in seconds
*/
void update(float delta);
/**
* Transforms the provides area with respect to the current animations
* @param rc the rect to transform
* @return the transformed rectangle
*/
Rect2i animateRegion(Rect2i rc);
/**
* Stops the current animation by skipping straight to the end
*/
void skip();
/**
* Stops the current animation and plays the animation in reverse, if needed
*/
void stop();
}