Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Transform class
- package model;
- import cameras.Camera;
- import cameras.CameraFP;
- import math.Matrix4f;
- import math.Vector3f;
- public class Transform
- {
- private static Camera camera;
- private static float zNear;
- private static float zFar;
- private static float width;
- private static float height;
- private static float fov;
- private Vector3f translation;
- private Vector3f rotation;
- private Vector3f scale;
- public Transform()
- {
- setTranslation(new Vector3f(0,0,0));
- setRotation(new Vector3f(0,0,0));
- setScale(new Vector3f(1,1,1));
- }
- public Matrix4f getTransformation()
- {
- Matrix4f translationMatrix = new Matrix4f().setTranslation(translation.getX(), translation.getY(), translation.getZ());
- Matrix4f rotationMatrix = new Matrix4f().setRotation(rotation.getX(), rotation.getY(), rotation.getZ());
- Matrix4f scaleMatrix = new Matrix4f().setScale(scale.getX(), scale.getY(), scale.getZ());
- return translationMatrix.multiply(rotationMatrix.multiply(scaleMatrix));
- }
- public static void setProjection(float fov, float width,float height, float zNear, float zFar)
- {
- Transform.fov = fov;
- Transform.width = width;
- Transform.height = height;
- Transform.zNear = zNear;
- Transform.zFar = zFar;
- }
- public Matrix4f getProjectedTransformation()
- {
- Matrix4f transformationMatrix = getTransformation();
- Matrix4f projectionMatrix = new Matrix4f().setProjection(fov, width, height, zNear, zFar);
- Matrix4f cameraRotation = new Matrix4f().setCamera(camera.getForward(), camera.getUp());
- Matrix4f cameraTranslation = new Matrix4f().setTranslation(-camera.getPosition().getX(), -camera.getPosition().getY(), -camera.getPosition().getZ());
- return projectionMatrix.multiply(cameraRotation.multiply(cameraTranslation.multiply(transformationMatrix)));
- }
- public Vector3f getTranslation()
- {
- return translation;
- }
- public void setTranslation(Vector3f translation)
- {
- this.translation = translation;
- }
- public void setTranslation(float x, float y, float z)
- {
- this.translation = new Vector3f(x, y, z);
- }
- public Vector3f getRotation() {
- return rotation;
- }
- public void setRotation(Vector3f rotation) {
- this.rotation = rotation;
- }
- public void setRotation(float x, float y, float z)
- {
- this.rotation = new Vector3f(x, y, z);
- }
- public void setScale(float x, float y, float z)
- {
- this.scale = new Vector3f(x, y, z);
- }
- public Vector3f getScale() {
- return scale;
- }
- public void setScale(Vector3f scale) {
- this.scale = scale;
- }
- public static Camera getCamera() {
- return camera;
- }
- public void setCamera(Camera camera) {
- Transform.camera = camera;
- }
- }
- Shader bind and update methods
- InterfaceShader shader = InterfaceShader.getInstance();
- shader.bind();
- shader.setColour(this.getActingColour());
- shader.setLocation(this.getLocation());
- shader.setSize(this.getBounds());
- shader.setGradient(this.getShouldGradient());
- Transform t = new Transform();
- t.setTranslation(this.location.getX(),this.location.getY(),this.getZDepth());
- shader.setViewMatrix(t.getProjectedTransformation());
- shader.updateUniforms();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement