From a556b45abf18f1bd509daaf63b66b7d55e9fd291 Mon Sep 17 00:00:00 2001 From: jjesswan Date: Mon, 22 Apr 2024 21:56:26 -0400 Subject: add engine version --- .../Game/Components/TransformComponent.cpp | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 engine-ocean/Game/Components/TransformComponent.cpp (limited to 'engine-ocean/Game/Components/TransformComponent.cpp') diff --git a/engine-ocean/Game/Components/TransformComponent.cpp b/engine-ocean/Game/Components/TransformComponent.cpp new file mode 100644 index 0000000..582b623 --- /dev/null +++ b/engine-ocean/Game/Components/TransformComponent.cpp @@ -0,0 +1,92 @@ +#include "transformcomponent.h" + +TransformComponent::TransformComponent(std::shared_ptr mt, + std::string entity_id, + std::map& global_blackboard, bool isAI): + m_model_transform(mt), + m_global_blackboard(global_blackboard), + isAIObject(isAI) +{ + old_pos = mt->getPos(); + estimated_final_pos = mt->getPos(); + m_entity_id = entity_id; + + // initialize blackboard data for entity + BlackboardData data; + m_global_blackboard.insert(std::pair(m_entity_id, data)); + m_global_blackboard[m_entity_id].locationData.currPos = old_pos; +} + +std::shared_ptr TransformComponent::getMT(){ + return m_model_transform; +} +std::vector> TransformComponent::getAllMT(){ + return m_all_model_transforms; +} + +bool TransformComponent::hasMultipleMT(){ + return multipleMT; +} + +void TransformComponent::translate(const glm::vec3 &delta){ + m_model_transform->translate(delta); + + // update old pos for collisions + + old_pos = m_model_transform->getPos(); + + if (isAIObject){ + m_global_blackboard[m_entity_id].locationData.currPos = old_pos; + } +} + +void TransformComponent::setPos(const glm::vec3 &new_pos){ + m_model_transform->setPos(new_pos); + + // update old pos for collisions + old_pos = new_pos; + + if (isAIObject){ + m_global_blackboard[m_entity_id].locationData.currPos = old_pos; + } +} + +glm::vec3 TransformComponent::getPos(){ + return m_model_transform->getPos(); +} + +void TransformComponent::setScale(const glm::vec3 &scale){ + m_model_transform->setScale(scale); +} + +glm::vec3 TransformComponent::getScale(){ + return m_model_transform->getScale(); +} + +float TransformComponent::getYRotationAngle(){ + glm::mat4 rotMat = m_model_transform->getRotation(); + float ry0 = rotMat[0][2]; +// float ry1 = rotMat[1][2]; +// float ry2 = rotMat[2][2]; + +// float sign = 1.f; +// if (ry1*ry2 < 0) sign = -1.f; + +// float angley = std::atan2(-ry0, sign*pow((pow(ry1,2) + pow(ry2,2)), .5)); + float angley = -std::asin(ry0); + float angley2 = M_PI - angley; + + //std::cout << "angle 1: " << angley << std::endl; + std::cout << "angle 2: " << angley2 << std::endl; + + return angley; +} + +void TransformComponent::setRotation(float angle, glm::vec3 axis){ + m_model_transform->rotate(angle, axis); +} + + + + -- cgit v1.2.3-70-g09d2