Refactor MovingPlatformComponent to support subcomponents for movement and rotation

- Introduced PlatformSubComponent as a base class for platform movement logic.
- Added MoverSubComponent for standard path-following behavior.
- Implemented SimpleMoverSubComponent for auto-generating two-waypoint paths.
- Created RotatorSubComponent to handle angular velocity and rotation along paths.
- Updated MovingPlatformComponent to manage multiple subcomponents and their states.
- Modified serialization and update logic to accommodate new subcomponent architecture.
- Adjusted GameMessages to include additional parameters for platform state synchronization.
- Enhanced SimplePhysicsComponent to prevent double movement when on a moving platform.
- Added new CMakeLists.txt for organizing MovingPlatformComponent files.
This commit is contained in:
Aaron Kimbrell
2026-04-08 16:32:10 -05:00
parent 247576e101
commit 5e40aaf420
17 changed files with 1097 additions and 430 deletions

View File

@@ -0,0 +1,28 @@
#ifndef SIMPLEMOVERSUBCOMPONENT_H
#define SIMPLEMOVERSUBCOMPONENT_H
#include "PlatformSubComponent.h"
#include <memory>
class Path;
/**
* Simple mover - auto-generates a 2-waypoint path from component properties.
* Corresponds to client LWOPlatformSimpleMover (type 5).
*/
class SimpleMoverSubComponent final : public PlatformSubComponent {
public:
SimpleMoverSubComponent(Entity* parentEntity, const NiPoint3& startPos,
const NiQuaternion& startRot, const NiPoint3& platformMove, float platformMoveTime);
const Path* GetGeneratedPath() const { return m_GeneratedPath.get(); }
private:
void GeneratePath(const NiPoint3& startPos, const NiQuaternion& startRot,
const NiPoint3& platformMove, float platformMoveTime);
std::unique_ptr<Path> m_GeneratedPath;
};
#endif // SIMPLEMOVERSUBCOMPONENT_H