VoxelEngine
 
Loading...
Searching...
No Matches
Rotation.h
1#pragma once
2
3#include <glm/glm.hpp>
4
5#include "block/Block.h"
6
7namespace engine {
8 class BlockState;
9
15 glm::vec3 getFacingDirection(
16 glm::vec3 lookDir, RotationMode rot, glm::ivec3 clickedFaceN
17 ) noexcept;
18
19 // TODO use quaternions for rotations?
20 //glm::quat getRotationQuat(glm::vec3 lookDir, RotationMode rot, glm::ivec3 clickedFaceN);
21
22 float getAngleToSide(Side side, glm::vec3 from, glm::vec3& axis) noexcept;
23 float getAngleFromSide(Side side, glm::vec3 to, glm::vec3& axis) noexcept;
24 float getAngle(glm::vec3 from, glm::vec3 to, glm::vec3& axis) noexcept;
25
27 glm::mat4 transformMatrix(glm::vec3 t, glm::vec3 axis, float angle) noexcept;
28
29 void calculateRotationFromState(
30 const BlockState* state, const Block* block, float& angle, glm::vec3& axis
31 ) noexcept;
32
33 glm::ivec3 closestAxis(glm::vec3 vec) noexcept;
34
35} // namespace engine