SimsWorld/ComponentBasic/SurfaceMotionPlugin.h

38 lines
1.4 KiB
C++

#pragma once
#include <motion_access.h>
#include "componentbasic.h"
/// <summary>
/// 水面平台机动组件
/// </summary>
class COMPONENTBASIC_EXPORT SurfaceMotionControlPlugin : public ProcList<
WsRespond<HorizontalArcMotion, RespondDefault>,
WsRespond<StrightLineMotion, RespondDefault>,
WsRespond<MotionDeduceRequest, RespondDefault>,
WsRespond<SyncRequest, RespondDefault>
>{
private:
std::weak_ptr<WsEntity> _bind_entity;
std::shared_ptr<const PlatformMotionCommand> _current_cmd = nullptr;
LonLatAlt _start_lla;
Posture _start_posture;
public:
SurfaceMotionControlPlugin();
// 通过 ProcList 继承
void execute(std::shared_ptr<Immediate> map, std::shared_ptr<const HorizontalArcMotion> in, QList<std::shared_ptr<RespondDefault>>& out) override;
void execute(std::shared_ptr<Immediate> map, std::shared_ptr<const StrightLineMotion> in, QList<std::shared_ptr<RespondDefault>>& out) override;
void execute(std::shared_ptr<Immediate> map, std::shared_ptr<const MotionDeduceRequest> in, QList<std::shared_ptr<RespondDefault>>& out) override;
void execute(std::shared_ptr<Immediate> map, std::shared_ptr<const SyncRequest> in, QList<std::shared_ptr<RespondDefault>>& out) override;
std::shared_ptr<WsComponent> defaultNew() const override;
void bindEntity(std::weak_ptr<WsEntity> host) override;
QString name() const override;
void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override;
};