@@ -0,0 +1,1220 @@
+package engine.object3d.camera;%0A%0Aimport engine.object3d.Object3d;%0Aimport org.joml.Matrix4f;%0Aimport org.joml.Vector3f;%0Aimport org.joml.Vector4f;%0A%0Apublic class Camera extends Object3d %7B%0A%0A    protected Matrix4f projection;%0A%0A    public Camera() %7B%0A        super();%0A        projection = new Matrix4f();%0A    %7D%0A%0A    public Matrix4f getProjection() %7B%0A        return projection;%0A    %7D%0A%0A    public Matrix4f getView() %7B%0A        return getWorldToLocal();%0A    %7D%0A%0A    //TODO: possibly move these into object3d itself%0A    public void translateRelativeToLocal(Vector4f v) %7B%0A        Vector4f worldTranslation = getLocalToWorld().transform(v);%0A        translate(new Vector3f(worldTranslation.x, worldTranslation.y, worldTranslation.z));%0A    %7D%0A%0A    public void moveForward(float amt) %7B%0A        Vector4f localTargetVector = new Vector4f(0, 0, -amt, 1);%0A        translateRelativeToLocal(localTargetVector);%0A    %7D%0A%0A    public void moveRight(float amt) %7B%0A        Vector4f localTargetVector = new Vector4f(amt, 0, 0, 1);%0A        translateRelativeToLocal(localTargetVector);%0A    %7D%0A%0A    public void moveUp(float amt) %7B%0A        Vector4f localTargetVector = new Vector4f(0, amt, 0, 1);%0A        translateRelativeToLocal(localTargetVector);%0A    %7D%0A%0A%0A%7D%0A

add camera class.