package sink.scene3d.actions;
import sink.scene3d.Action3d;
import sink.scene3d.Actor3d;
import com.badlogic.gdx.math.Interpolation;
import com.badlogic.gdx.utils.Pool;
import com.badlogic.gdx.utils.Pools;
public class Actions3d {
/** Returns a new or pooled action of the specified type. */
static public <T extends Action3d> T action (Class<T> type) {
Pool<T> pool = Pools.get(type);
T action = pool.obtain();
action.setPool(pool);
return action;
}
static public AddAction addAction (Action3d action) {
AddAction addAction = action(AddAction.class);
addAction.setAction(action);
return addAction;
}
static public AddAction addAction (Action3d action, Actor3d targetActor) {
AddAction addAction = action(AddAction.class);
addAction.setTargetActor(targetActor);
addAction.setAction(action);
return addAction;
}
static public RemoveAction removeAction (Action3d action) {
RemoveAction removeAction = action(RemoveAction.class);
removeAction.setAction(action);
return removeAction;
}
static public RemoveAction removeAction (Action3d action, Actor3d targetActor) {
RemoveAction removeAction = action(RemoveAction.class);
removeAction.setTargetActor(targetActor);
removeAction.setAction(action);
return removeAction;
}
/** Moves the actor instantly. */
static public MoveToAction moveTo (float x, float y, float z) {
return moveTo(x, y, z, 0, null);
}
static public MoveToAction moveTo (float x, float y, float z, float duration) {
return moveTo(x, y, z, duration, null);
}
static public MoveToAction moveTo (float x, float y, float z ,float duration, Interpolation interpolation) {
MoveToAction action = action(MoveToAction.class);
action.setPosition(x, y, z);
action.setDuration(duration);
action.setInterpolation(interpolation);
return action;
}
/** Moves the actor instantly. */
static public MoveByAction moveBy (float amountX, float amountY, float amountZ) {
return moveBy(amountX, amountY, amountZ, 0, null);
}
static public MoveByAction moveBy (float amountX, float amountY, float amountZ, float duration) {
return moveBy(amountX, amountY, amountZ, duration, null);
}
static public MoveByAction moveBy (float amountX, float amountY, float amountZ, float duration, Interpolation interpolation) {
MoveByAction action = action(MoveByAction.class);
action.setAmount(amountX, amountY, amountZ);
action.setDuration(duration);
action.setInterpolation(interpolation);
return action;
}
/** Scales the actor instantly. */
static public ScaleToAction scaleTo (float x, float y, float z) {
return scaleTo(x, y, z, 0, null);
}
static public ScaleToAction scaleTo (float x, float y, float z, float duration) {
return scaleTo(x, y, z, duration, null);
}
static public ScaleToAction scaleTo (float x, float y, float z, float duration, Interpolation interpolation) {
ScaleToAction action = action(ScaleToAction.class);
action.setScale(x, y, z);
action.setDuration(duration);
action.setInterpolation(interpolation);
return action;
}
/** Scales the actor instantly. */
static public ScaleByAction scaleBy (float amountX, float amountY, float amountZ) {
return scaleBy(amountX, amountY, amountZ, 0, null);
}
static public ScaleByAction scaleBy (float amountX, float amountY, float amountZ, float duration) {
return scaleBy(amountX, amountY, amountZ, duration, null);
}
static public ScaleByAction scaleBy (float amountX, float amountY, float amountZ, float duration, Interpolation interpolation) {
ScaleByAction action = action(ScaleByAction.class);
action.setAmount(amountX, amountY, amountZ);
action.setDuration(duration);
action.setInterpolation(interpolation);
return action;
}
/** Rotates the actor instantly. */
static public RotateToAction rotateTo (float rotation) {
return rotateTo(rotation, 0, null);
}
static public RotateToAction rotateTo (float rotation, float duration) {
return rotateTo(rotation, duration, null);
}
static public RotateToAction rotateTo (float rotation, float duration, Interpolation interpolation) {
RotateToAction action = action(RotateToAction.class);
action.setRotation(rotation);
action.setDuration(duration);
action.setInterpolation(interpolation);
return action;
}
/** Rotates the actor instantly. */
static public RotateByAction rotateBy (float rotationAmount) {
return rotateBy(rotationAmount, 0, null);
}
static public RotateByAction rotateBy (float rotationAmount, float duration) {
return rotateBy(rotationAmount, duration, null);
}
static public RotateByAction rotateBy (float rotationAmount, float duration, Interpolation interpolation) {
RotateByAction action = action(RotateByAction.class);
action.setAmount(rotationAmount);
action.setDuration(duration);
action.setInterpolation(interpolation);
return action;
}
static public VisibleAction show () {
return visible(true);
}
static public VisibleAction hide () {
return visible(false);
}
static public VisibleAction visible (boolean visible) {
VisibleAction action = action(VisibleAction.class);
action.setVisible(visible);
return action;
}
static public RemoveActorAction removeActor (Actor3d removeActor) {
RemoveActorAction action = action(RemoveActorAction.class);
action.setRemoveActor(removeActor);
return action;
}
static public DelayAction delay (float duration) {
DelayAction action = action(DelayAction.class);
action.setDuration(duration);
return action;
}
static public DelayAction delay (float duration, Action3d delayedAction) {
DelayAction action = action(DelayAction.class);
action.setDuration(duration);
action.setAction(delayedAction);
return action;
}
static public TimeScaleAction timeScale (float scale, Action3d scaledAction) {
TimeScaleAction action = action(TimeScaleAction.class);
action.setScale(scale);
action.setAction(scaledAction);
return action;
}
static public SequenceAction sequence (Action3d action1) {
SequenceAction action = action(SequenceAction.class);
action.addAction(action1);
return action;
}
static public SequenceAction sequence (Action3d action1, Action3d action2) {
SequenceAction action = action(SequenceAction.class);
action.addAction(action1);
action.addAction(action2);
return action;
}
static public SequenceAction sequence (Action3d action1, Action3d action2, Action3d action3) {
SequenceAction action = action(SequenceAction.class);
action.addAction(action1);
action.addAction(action2);
action.addAction(action3);
return action;
}
static public SequenceAction sequence (Action3d action1, Action3d action2, Action3d action3, Action3d action4) {
SequenceAction action = action(SequenceAction.class);
action.addAction(action1);
action.addAction(action2);
action.addAction(action3);
action.addAction(action4);
return action;
}
static public SequenceAction sequence (Action3d action1, Action3d action2, Action3d action3, Action3d action4, Action3d action5) {
SequenceAction action = action(SequenceAction.class);
action.addAction(action1);
action.addAction(action2);
action.addAction(action3);
action.addAction(action4);
action.addAction(action5);
return action;
}
static public SequenceAction sequence (Action3d... actions) {
SequenceAction action = action(SequenceAction.class);
for (int i = 0, n = actions.length; i < n; i++)
action.addAction(actions[i]);
return action;
}
static public SequenceAction sequence () {
return action(SequenceAction.class);
}
static public ParallelAction parallel (Action3d action1) {
ParallelAction action = action(ParallelAction.class);
action.addAction(action1);
return action;
}
static public ParallelAction parallel (Action3d action1, Action3d action2) {
ParallelAction action = action(ParallelAction.class);
action.addAction(action1);
action.addAction(action2);
return action;
}
static public ParallelAction parallel (Action3d action1, Action3d action2, Action3d action3) {
ParallelAction action = action(ParallelAction.class);
action.addAction(action1);
action.addAction(action2);
action.addAction(action3);
return action;
}
static public ParallelAction parallel (Action3d action1, Action3d action2, Action3d action3, Action3d action4) {
ParallelAction action = action(ParallelAction.class);
action.addAction(action1);
action.addAction(action2);
action.addAction(action3);
action.addAction(action4);
return action;
}
static public ParallelAction parallel (Action3d action1, Action3d action2, Action3d action3, Action3d action4, Action3d action5) {
ParallelAction action = action(ParallelAction.class);
action.addAction(action1);
action.addAction(action2);
action.addAction(action3);
action.addAction(action4);
action.addAction(action5);
return action;
}
static public ParallelAction parallel (Action3d... actions) {
ParallelAction action = action(ParallelAction.class);
for (int i = 0, n = actions.length; i < n; i++)
action.addAction(actions[i]);
return action;
}
static public ParallelAction parallel () {
return action(ParallelAction.class);
}
static public RepeatAction repeat (int count, Action3d repeatedAction) {
RepeatAction action = action(RepeatAction.class);
action.setCount(count);
action.setAction(repeatedAction);
return action;
}
static public RepeatAction forever (Action3d repeatedAction) {
RepeatAction action = action(RepeatAction.class);
action.setCount(RepeatAction.FOREVER);
action.setAction(repeatedAction);
return action;
}
static public RunnableAction run (Runnable runnable) {
RunnableAction action = action(RunnableAction.class);
action.setRunnable(runnable);
return action;
}
static public AfterAction after (Action3d action) {
AfterAction afterAction = action(AfterAction.class);
afterAction.setAction(action);
return afterAction;
}
}