mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-10 10:18:21 +00:00
45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
|
#include "ChangeOrientationBehavior.h"
|
||
|
#include "BehaviorBranchContext.h"
|
||
|
#include "BehaviorContext.h"
|
||
|
#include "EntityManager.h"
|
||
|
#include "BaseCombatAIComponent.h"
|
||
|
|
||
|
void ChangeOrientationBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) {
|
||
|
}
|
||
|
|
||
|
void ChangeOrientationBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) {
|
||
|
if (!m_ToTarget) return; // TODO: Add the other arguments to this behavior
|
||
|
|
||
|
auto* self = EntityManager::Instance()->GetEntity(context->originator);
|
||
|
auto* other = EntityManager::Instance()->GetEntity(branch.target);
|
||
|
|
||
|
if (self == nullptr || other == nullptr) return;
|
||
|
|
||
|
const auto source = self->GetPosition();
|
||
|
const auto destination = self->GetPosition();
|
||
|
|
||
|
if (m_OrientCaster) {
|
||
|
auto* baseCombatAIComponent = self->GetComponent<BaseCombatAIComponent>();
|
||
|
|
||
|
/*if (baseCombatAIComponent != nullptr)
|
||
|
{
|
||
|
baseCombatAIComponent->LookAt(destination);
|
||
|
}
|
||
|
else*/
|
||
|
{
|
||
|
self->SetRotation(NiQuaternion::LookAt(source, destination));
|
||
|
}
|
||
|
|
||
|
EntityManager::Instance()->SerializeEntity(self);
|
||
|
} else {
|
||
|
other->SetRotation(NiQuaternion::LookAt(destination, source));
|
||
|
|
||
|
EntityManager::Instance()->SerializeEntity(other);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void ChangeOrientationBehavior::Load() {
|
||
|
m_OrientCaster = GetBoolean("orient_caster");
|
||
|
m_ToTarget = GetBoolean("to_target");
|
||
|
}
|