package com.javamarcher.tweening; import com.javamarcher.ecs.component.CameraTransform; import aurelienribon.tweenengine.TweenAccessor; public class CamTransformTweenAccessor implements TweenAccessor<CameraTransform> { public static final int POSITION_X = 1; public static final int POSITION_Y = 2; public static final int POSITION_Z = 3; public static final int POSITION_XYZ = 4; public static final int ROTATION_PITCH = 5; public static final int ROTATION_YAW = 6; public static final int ROTATION_PITCH_YAW = 7; @Override public int getValues(CameraTransform target, int tweenType, float[] returnValues) { switch(tweenType) { case POSITION_X: returnValues[0] = target.position.x; return 1; case POSITION_Y: returnValues[0] = target.position.y; return 1; case POSITION_Z: returnValues[0] = target.position.z; return 1; case POSITION_XYZ: returnValues[0] = target.position.x; returnValues[1] = target.position.y; returnValues[2] = target.position.z; return 3; case ROTATION_PITCH: returnValues[0] = target.getPitch(); return 1; case ROTATION_YAW: returnValues[0] = target.getYaw(); return 1; case ROTATION_PITCH_YAW: returnValues[0] = target.getPitch(); returnValues[1] = target.getYaw(); return 2; default: assert false; return -1; } } @Override public void setValues(CameraTransform target, int tweenType, float[] newValues) { switch(tweenType) { case POSITION_X: target.position.x = newValues[0]; break; case POSITION_Y: target.position.y = newValues[0]; break; case POSITION_Z: target.position.z = newValues[0]; break; case POSITION_XYZ: target.position.set(newValues[0], newValues[1], newValues[2]); break; case ROTATION_PITCH: target.setPitch(newValues[0]); break; case ROTATION_YAW: target.setYaw(newValues[0]); break; case ROTATION_PITCH_YAW: target.setPitch(newValues[0]); target.setYaw(newValues[1]); break; default: assert false; break; } } }