41 lines
1.2 KiB
Java
41 lines
1.2 KiB
Java
package engine.camera;
|
|
|
|
import engine.Engine;
|
|
import engine.math.Vector3f;
|
|
import engine.object.ObjectGl;
|
|
|
|
public class TrackingSF3ThirdStrick implements TrackingDummy {
|
|
|
|
private final ObjectGl obj1;
|
|
private final ObjectGl obj2;
|
|
private final Engine engine;
|
|
|
|
/**
|
|
* Un tracking ou les personnages "pousse" la camera
|
|
*/
|
|
public TrackingSF3ThirdStrick(ObjectGl obj1, ObjectGl obj2, Engine engine){
|
|
this.obj1 = obj1;
|
|
this.obj2 = obj2;
|
|
this.engine = engine;
|
|
}
|
|
|
|
@Override
|
|
public Vector3f getViewVector() {
|
|
Vector3f vec = new Vector3f();
|
|
|
|
float viewXPos = -this.engine.getViewXPos();
|
|
float dimension = this.engine.getCamera().getDimension();
|
|
|
|
ObjectGl left = obj1.getXPos() >= obj2.getXPos() ? obj2 : obj1;
|
|
ObjectGl right = obj1.getXPos() < obj2.getXPos() ? obj2 : obj1;
|
|
|
|
if ((right.getXPos() + right.getWidth() * right.getScalingFactor()) > viewXPos + dimension){
|
|
vec.x = - Math.abs((right.getXPos() + right.getWidth() * right.getScalingFactor()) - (viewXPos + dimension));
|
|
} else if (left.getXPos() < viewXPos - dimension){
|
|
vec.x = Math.abs(left.getXPos() - (viewXPos - dimension));
|
|
}
|
|
|
|
return vec;
|
|
}
|
|
}
|