mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-05 18:24:12 +00:00
feat: Add MovingAI pathing for NPCs without combatAI (#1509)
* remove goto * Update MovementAIComponent.cpp * convert to PathWaypoint Easier for usage with paths * add path parsing * ref removal, simplification of work * it works * Update MovementAIComponent.cpp * disable pathing for combat we just need it for npcs for now, combat ai can be done later * fixed stuttery enemies wow * start at ramped up speed * add pausing and resuming * Update MovementAIComponent.cpp * Update MovementAIComponent.h * Update CMakeLists.txt
This commit is contained in:
@@ -16,57 +16,57 @@ class Level;
|
||||
enum class eWaypointCommandType : uint32_t;
|
||||
|
||||
struct WaypointCommand {
|
||||
eWaypointCommandType command;
|
||||
eWaypointCommandType command{};
|
||||
std::string data;
|
||||
};
|
||||
|
||||
|
||||
struct SceneRef {
|
||||
std::string filename;
|
||||
uint32_t id;
|
||||
uint32_t sceneType; //0 = general, 1 = audio?
|
||||
uint32_t id{};
|
||||
uint32_t sceneType{}; //0 = general, 1 = audio?
|
||||
std::string name;
|
||||
NiPoint3 unknown1;
|
||||
float unknown2;
|
||||
uint8_t color_r;
|
||||
uint8_t color_g;
|
||||
uint8_t color_b;
|
||||
float unknown2{};
|
||||
uint8_t color_r{};
|
||||
uint8_t color_g{};
|
||||
uint8_t color_b{};
|
||||
Level* level;
|
||||
std::map<uint32_t, LUTriggers::Trigger*> triggers;
|
||||
};
|
||||
|
||||
struct SceneTransitionInfo {
|
||||
uint64_t sceneID; //id of the scene being transitioned to.
|
||||
uint64_t sceneID{}; //id of the scene being transitioned to.
|
||||
NiPoint3 position;
|
||||
};
|
||||
|
||||
struct SceneTransition {
|
||||
std::string name;
|
||||
std::vector<SceneTransitionInfo> points;
|
||||
float width;
|
||||
float width{};
|
||||
};
|
||||
|
||||
struct MovingPlatformPathWaypoint {
|
||||
uint8_t lockPlayer;
|
||||
float wait;
|
||||
uint8_t lockPlayer{};
|
||||
float wait{};
|
||||
std::string departSound;
|
||||
std::string arriveSound;
|
||||
};
|
||||
|
||||
struct CameraPathWaypoint {
|
||||
float time;
|
||||
float fov;
|
||||
float tension;
|
||||
float continuity;
|
||||
float bias;
|
||||
float time{};
|
||||
float fov{};
|
||||
float tension{};
|
||||
float continuity{};
|
||||
float bias{};
|
||||
};
|
||||
|
||||
struct RacingPathWaypoint {
|
||||
uint8_t isResetNode;
|
||||
uint8_t isNonHorizontalCamera;
|
||||
float planeWidth;
|
||||
float planeHeight;
|
||||
float shortestDistanceToEnd;
|
||||
uint8_t isResetNode{};
|
||||
uint8_t isNonHorizontalCamera{};
|
||||
float planeWidth{};
|
||||
float planeHeight{};
|
||||
float shortestDistanceToEnd{};
|
||||
};
|
||||
|
||||
struct PathWaypoint {
|
||||
@@ -75,7 +75,7 @@ struct PathWaypoint {
|
||||
MovingPlatformPathWaypoint movingPlatform;
|
||||
CameraPathWaypoint camera;
|
||||
RacingPathWaypoint racing;
|
||||
float speed;
|
||||
float speed{};
|
||||
std::vector<LDFBaseData*> config;
|
||||
std::vector<WaypointCommand> commands;
|
||||
};
|
||||
@@ -137,49 +137,49 @@ enum class PropertyAchievmentRequired : uint32_t {
|
||||
|
||||
struct MovingPlatformPath {
|
||||
std::string platformTravelSound;
|
||||
uint8_t timeBasedMovement;
|
||||
uint8_t timeBasedMovement{};
|
||||
};
|
||||
|
||||
struct PropertyPath {
|
||||
PropertyPathType pathType;
|
||||
int32_t price;
|
||||
uint32_t rentalTime;
|
||||
uint64_t associatedZone;
|
||||
PropertyPathType pathType{};
|
||||
int32_t price{};
|
||||
uint32_t rentalTime{};
|
||||
uint64_t associatedZone{};
|
||||
std::string displayName;
|
||||
std::string displayDesc;
|
||||
PropertyType type;
|
||||
uint32_t cloneLimit;
|
||||
float repMultiplier;
|
||||
PropertyRentalPeriod rentalPeriod;
|
||||
PropertyAchievmentRequired achievementRequired;
|
||||
PropertyType type{};
|
||||
uint32_t cloneLimit{};
|
||||
float repMultiplier{};
|
||||
PropertyRentalPeriod rentalPeriod{};
|
||||
PropertyAchievmentRequired achievementRequired{};
|
||||
|
||||
// Player respawn coordinates in the main zone (not the property zone)
|
||||
NiPoint3 playerZoneCoords;
|
||||
float maxBuildHeight;
|
||||
float maxBuildHeight{};
|
||||
};
|
||||
|
||||
struct CameraPath {
|
||||
std::string nextPath;
|
||||
uint8_t rotatePlayer;
|
||||
uint8_t rotatePlayer{};
|
||||
};
|
||||
|
||||
struct SpawnerPath {
|
||||
LOT spawnedLOT;
|
||||
uint32_t respawnTime;
|
||||
int32_t maxToSpawn;
|
||||
uint32_t amountMaintained;
|
||||
LOT spawnedLOT{};
|
||||
uint32_t respawnTime{};
|
||||
int32_t maxToSpawn{};
|
||||
uint32_t amountMaintained{};
|
||||
LWOOBJID spawnerObjID;
|
||||
uint8_t spawnerNetActive;
|
||||
uint8_t spawnerNetActive{};
|
||||
};
|
||||
|
||||
|
||||
struct Path {
|
||||
uint32_t pathVersion;
|
||||
uint32_t pathVersion{};
|
||||
PathType pathType;
|
||||
std::string pathName;
|
||||
uint32_t flags;
|
||||
uint32_t flags{};
|
||||
PathBehavior pathBehavior;
|
||||
uint32_t waypointCount;
|
||||
uint32_t waypointCount{};
|
||||
std::vector<PathWaypoint> pathWaypoints;
|
||||
SpawnerPath spawner;
|
||||
MovingPlatformPath movingPlatform;
|
||||
|
Reference in New Issue
Block a user