Skip to content
Snippets Groups Projects
Commit 4b0c9a8b authored by Woohyung Choi's avatar Woohyung Choi
Browse files

Transform 따로 분리

parent 56d115fe
No related branches found
No related tags found
No related merge requests found
...@@ -127,6 +127,7 @@ ...@@ -127,6 +127,7 @@
<ClCompile Include="ResourceLoader.cpp" /> <ClCompile Include="ResourceLoader.cpp" />
<ClCompile Include="OpenGLWrapper.cpp" /> <ClCompile Include="OpenGLWrapper.cpp" />
<ClCompile Include="Source.cpp" /> <ClCompile Include="Source.cpp" />
<ClCompile Include="Transform.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="Camera.h" /> <ClInclude Include="Camera.h" />
...@@ -135,6 +136,7 @@ ...@@ -135,6 +136,7 @@
<ClInclude Include="ResourceLoader.h" /> <ClInclude Include="ResourceLoader.h" />
<ClInclude Include="OpenGLWrapper.h" /> <ClInclude Include="OpenGLWrapper.h" />
<ClInclude Include="ShaderType.h" /> <ClInclude Include="ShaderType.h" />
<ClInclude Include="Transform.h" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
......
...@@ -30,6 +30,9 @@ ...@@ -30,6 +30,9 @@
<ClCompile Include="FileSystem.cpp"> <ClCompile Include="FileSystem.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Transform.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="ShaderType.h"> <ClInclude Include="ShaderType.h">
...@@ -50,5 +53,8 @@ ...@@ -50,5 +53,8 @@
<ClInclude Include="FileSystem.h"> <ClInclude Include="FileSystem.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Transform.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
</Project> </Project>
\ No newline at end of file
#include "Transform.h"
Transform::Transform()
{
translate = glm::vec3(0.0f, 0.0f, 0.0f);
rotate = glm::vec3(0.0f, 0.0f, 0.0f);
scale = glm::vec3(1.0f, 1.0f, 1.0f);
update_directional_vector();
}
glm::vec3 Transform::get_translate()
{
return translate;
}
glm::vec3 Transform::get_rotate()
{
return rotate;
}
glm::vec3 Transform::get_scale()
{
return scale;
}
void Transform::set_translate(glm::vec3 _translate)
{
translate = _translate;
update_directional_vector();
}
void Transform::set_rotate(glm::vec3 _rotate)
{
rotate = _rotate;
update_directional_vector();
}
void Transform::set_scale(glm::vec3 _scale)
{
scale = _scale;
update_directional_vector();
}
glm::mat4 Transform::get_model_matrix()
{
glm::mat4 model = glm::mat4(1.0f);
model = glm::translate(model, translate);
model = glm::rotate(model, glm::radians(rotate.x), glm::vec3(1.0f, 0.0f, 0.0f));
model = glm::rotate(model, glm::radians(rotate.y), glm::vec3(0.0f, 1.0f, 0.0f));
model = glm::rotate(model, glm::radians(rotate.z), glm::vec3(0.0f, 0.0f, 1.0f));
model = glm::scale(model, scale);
return model;
}
void Transform::update_directional_vector()
{
glm::vec3 _front;
_front.x = cos(glm::radians(rotate.y)) * cos(glm::radians(rotate.x));
_front.y = sin(glm::radians(rotate.x));
_front.z = sin(glm::radians(rotate.y)) * cos(glm::radians(rotate.x));
front = glm::normalize(_front);
right = glm::normalize(glm::cross(front, glm::vec3(0.0f, 1.0f, 0.0f)));
up = glm::normalize(glm::cross(right, front));
}
glm::vec3 Transform::get_front()
{
return front;
}
glm::vec3 Transform::get_up()
{
return up;
}
glm::vec3 Transform::get_right()
{
return right;
}
void Transform::move(glm::vec3 _delta)
{
translate += _delta;
update_directional_vector();
}
void Transform::move(glm::vec3 _direction, glm::vec1 _velocity)
{
translate += glm::vec3(_velocity *_direction.x, _velocity *_direction.y, _velocity *_direction.z);
update_directional_vector();
}
\ No newline at end of file
#ifndef TRANSFORM_H
#define TRANSFORM_H
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
class Transform
{
private:
glm::vec3 translate;
glm::vec3 rotate;
glm::vec3 scale;
glm::vec3 front;
glm::vec3 up;
glm::vec3 right;
void update_directional_vector();
public:
Transform();
glm::vec3 get_translate();
glm::vec3 get_rotate();
glm::vec3 get_scale();
void set_translate(glm::vec3 _translate);
void set_rotate(glm::vec3 _rotate);
void set_scale(glm::vec3 _scale);
glm::vec3 get_front();
glm::vec3 get_up();
glm::vec3 get_right();
glm::mat4 get_model_matrix();
void move(glm::vec3 _delta);
void move(glm::vec3 _direction, glm::vec1 _velocity);
};
#endif
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment