48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "Transform.h"
 | |
| 
 | |
| Transform::Transform() {
 | |
|   position = Vector3(0.0f);
 | |
|   rotation = Vector3(0.0f);
 | |
|   scale = Vector3(1.0f, 1.0f, 1.0f);
 | |
| }
 | |
| 
 | |
| Transform::Transform(Vector3 position, Vector3 rotation) {
 | |
|   this->position = position;
 | |
|   this->rotation = rotation;
 | |
|   this->scale = Vector3(1.0f, 1.0f, 1.0f);
 | |
| }
 | |
| 
 | |
| Transform::Transform(Vector3 position, Vector3 rotation, Vector3 scale) {
 | |
|   this->position = position;
 | |
|   this->rotation = rotation;
 | |
|   this->scale = scale;
 | |
| }
 | |
| 
 | |
| 
 | |
| void Transform::Translate(cfloat x, cfloat y, cfloat z) {
 | |
|   position = position + Vector3(x, y, z);
 | |
| }
 | |
| 
 | |
| 
 | |
| Matrix Transform::RotationMatrix() {
 | |
|   Matrix mat(1.0f);
 | |
|   
 | |
|   mat = glm::rotate(mat, this->rotation.z, Vector3(0.0f, 0.0f, 1.0f));
 | |
|   mat = glm::rotate(mat, this->rotation.y, Vector3(0.0f, 1.0f, 0.0f));
 | |
|   mat = glm::rotate(mat, this->rotation.x, Vector3(1.0f, 0.0f, 0.0f));
 | |
| 
 | |
|   return mat;
 | |
| }
 | |
| 
 | |
| Vector3 Transform::Forward() {
 | |
|   return glm::vec3(RotationMatrix() * glm::vec4(0.0f, 0.0f, -1.0f, 1.0f));
 | |
| }
 | |
| 
 | |
| Vector3 Transform::Up() {
 | |
|   return glm::vec3(RotationMatrix() * glm::vec4(0.0f, 1.0f, 0.0f, 1.0f));
 | |
| }
 | |
| 
 | |
| Vector3 Transform::Right() {
 | |
|   return glm::vec3(RotationMatrix() * glm::vec4(1.0f, 0.0f, 0.0f, 1.0f));
 | |
| }
 | 
