feat(entity): the client's pathfinding control component (86) on pets

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-10-01 09:37:17 -05:00
parent c65f559b39
commit 4a546607f7
2 changed files with 22 additions and 0 deletions

View File

@@ -95,6 +95,7 @@
#include "GateRushComponent.h"
#include "FactionTriggerComponent.h"
#include "RocketLandingComponent.h"
#include "PathfindingComponent.h"
#include "PhysicsSystemComponent.h"
#include "VehiclePhysicsComponent.h"
#include "ProjectilePhysicsComponent.h"
@@ -455,6 +456,8 @@ void Entity::Initialize() {
}
case eReplicaComponentType::PET: {
if (petComponentID > 0) {
// LWOPetComponent::Factory (0x01031240): a pet that isn't in an inventory gets pathfinding control first
if (!GetVar<bool>(u"inInventory") && !HasComponent(eReplicaComponentType::PATHFINDING)) AddComponent<PathfindingComponent>(-1);
AddComponent<PetComponent>(petComponentID);
}
break;

View File

@@ -0,0 +1,19 @@
#ifndef PATHFINDINGCOMPONENT_H
#define PATHFINDINGCOMPONENT_H
#include "Component.h"
#include "eReplicaComponentType.h"
/**
* Pathfinding control, as the client's LWOPathfindingControlComponent: the client adds one (componentID -1) to a pet
* that isn't in an inventory, and to a script or combat AI object with movement physics. Nothing of it is sent or done
* on the server yet (the server's pathing is MovementAIComponent).
*/
class PathfindingComponent final : public Component {
public:
static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::PATHFINDING;
PathfindingComponent(Entity* parent, const int32_t componentID) : Component(parent, componentID) {}
};
#endif // PATHFINDINGCOMPONENT_H