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;
}
}
}