update
This commit is contained in:
parent
3347f1c1e7
commit
e9d2d011f1
|
@ -0,0 +1,40 @@
|
||||||
|
#include "BehaviorPerform.h"
|
||||||
|
|
||||||
|
|
||||||
|
void BehaviorPerformPlugin::recoveryFrom(const QJsonObject& obj)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void BehaviorPerformPlugin::saveTo(QJsonObject& obj) const
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<WsComponent> BehaviorPerformPlugin::defaultNew() const
|
||||||
|
{
|
||||||
|
return std::make_shared<BehaviorPerformPlugin>();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BehaviorPerformPlugin::bindEntity(std::weak_ptr<WsEntity> host)
|
||||||
|
{
|
||||||
|
this->_bind_entity = host;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BehaviorPerformPlugin::name() const
|
||||||
|
{
|
||||||
|
return NAME(BehaviorPerformPlugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MapHost::setVariable(const QString& key, std::shared_ptr<TopicData> ins)
|
||||||
|
{
|
||||||
|
if (_variable_map.contains(key) && _variable_map[key]->topicString() != ins->typeName())
|
||||||
|
throw new UniException("不同数据类型数据绑定同一个名称!");
|
||||||
|
_variable_map[key] = ins;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<TopicData> MapHost::getVariable(const QString& key) const
|
||||||
|
{
|
||||||
|
if(!_variable_map.contains(key))
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
return _variable_map[key];
|
||||||
|
}
|
|
@ -0,0 +1,118 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "componentbasic.h"
|
||||||
|
#include <messagebasic.h>
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 行为树实例化节点
|
||||||
|
/// </summary>
|
||||||
|
class COMPONENTBASIC_EXPORT MapHost : public Serializable {
|
||||||
|
private:
|
||||||
|
/// <summary>
|
||||||
|
/// {Topic,init-value}
|
||||||
|
/// </summary>
|
||||||
|
QHash<QString, std::shared_ptr<TopicData>> _variable_types;
|
||||||
|
/// <summary>
|
||||||
|
/// 变量表
|
||||||
|
/// </summary>
|
||||||
|
QHash<QString, std::shared_ptr<TopicData>> _variable_map;
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual ~MapHost() = default;
|
||||||
|
/// <summary>
|
||||||
|
/// 注册数据类型
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="init"></param>
|
||||||
|
virtual void registData(std::shared_ptr<TopicData> init) = 0;
|
||||||
|
/// <summary>
|
||||||
|
/// 设置变量,如果类型错误会抛出UniException异常
|
||||||
|
/// 节点初始化时会按照配置注册默认值变量
|
||||||
|
/// </summary>
|
||||||
|
virtual void setVariable(const QString& key, std::shared_ptr<TopicData> ins);
|
||||||
|
/// <summary>
|
||||||
|
/// 获取指定名称的数据变量
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <returns>如果不存在指定名称数据,返回nullptr,类型不确定</returns>
|
||||||
|
virtual std::shared_ptr<TopicData> getVariable(const QString& key) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 所有逻辑节点的基类
|
||||||
|
/// </summary>
|
||||||
|
class LogicalNode : public Serializable {
|
||||||
|
public:
|
||||||
|
virtual ~LogicalNode() = default;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置节点id
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="unique_id"></param>
|
||||||
|
virtual void setID(int unique_id) = 0;
|
||||||
|
/// <summary>
|
||||||
|
/// 提取节点id
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
virtual int getID() const = 0;
|
||||||
|
/// <summary>
|
||||||
|
/// 获取节点名称
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
virtual QString name() const = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取子节点列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
virtual QList<std::shared_ptr<LogicalNode>> children() const = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 声明输入变量的内部标识和数据接口
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>map{name, type}</returns>
|
||||||
|
virtual QHash<QString, std::shared_ptr<TopicData>> inputDeclares() const = 0;
|
||||||
|
/// <summary>
|
||||||
|
/// 声明输出变量的内部标识和数据接口
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>map{name, type}</returns>
|
||||||
|
virtual QHash<QString, std::shared_ptr<TopicData>> outputDeclares() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义行为树节点实例
|
||||||
|
/// </summary>
|
||||||
|
class COMPONENTBASIC_EXPORT BehaviorMapNode : public MapHost, public LogicalNode {
|
||||||
|
public:
|
||||||
|
/// <summary>
|
||||||
|
/// 重置行为树数据文件
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="path"></param>
|
||||||
|
virtual void setBehaviorMap(const QString &path){}
|
||||||
|
/// <summary>
|
||||||
|
/// 设置行为树节点名称
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="val"></param>
|
||||||
|
virtual void resetName(const QString &val){}
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 行为树组件
|
||||||
|
/// </summary>
|
||||||
|
class COMPONENTBASIC_EXPORT BehaviorPerformPlugin : public ProcList<
|
||||||
|
WsRespond<SyncRequest, RespondDefault>
|
||||||
|
>{
|
||||||
|
private:
|
||||||
|
std::weak_ptr<WsEntity> _bind_entity;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// 通过 ProcList 继承
|
||||||
|
void execute(std::shared_ptr<Immediate> map, std::shared_ptr<const SyncRequest> in, QList<std::shared_ptr<RespondDefault>>& out) override;
|
||||||
|
|
||||||
|
void recoveryFrom(const QJsonObject& obj) override;
|
||||||
|
void saveTo(QJsonObject& obj) const override;
|
||||||
|
|
||||||
|
std::shared_ptr<WsComponent> defaultNew() const override;
|
||||||
|
void bindEntity(std::weak_ptr<WsEntity> host) override;
|
||||||
|
QString name() const override;
|
||||||
|
};
|
||||||
|
|
|
@ -101,16 +101,18 @@
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="BehaviorPerform.cpp" />
|
||||||
<ClCompile Include="componentbasic.cpp" />
|
<ClCompile Include="componentbasic.cpp" />
|
||||||
<ClCompile Include="DeduceFramework.cpp" />
|
<ClCompile Include="DeduceFramework.cpp" />
|
||||||
<ClCompile Include="InvisibleComponent.cpp" />
|
<ClCompile Include="ComponentsInfoPull.cpp" />
|
||||||
<ClCompile Include="RouteManage.cpp" />
|
<ClCompile Include="RouteManage.cpp" />
|
||||||
<ClCompile Include="SurfaceMotion.cpp" />
|
<ClCompile Include="SurfaceMotion.cpp" />
|
||||||
<ClCompile Include="VisibleCube.cpp" />
|
<ClCompile Include="VisibleCube.cpp" />
|
||||||
|
<ClInclude Include="BehaviorPerform.h" />
|
||||||
<ClInclude Include="componentbasic_global.h" />
|
<ClInclude Include="componentbasic_global.h" />
|
||||||
<ClInclude Include="componentbasic.h" />
|
<ClInclude Include="componentbasic.h" />
|
||||||
<QtMoc Include="DeduceFramework.h" />
|
<QtMoc Include="DeduceFramework.h" />
|
||||||
<ClInclude Include="InvisibleComponent.h" />
|
<ClInclude Include="ComponentsInfoPull.h" />
|
||||||
<ClInclude Include="RouteManage.h" />
|
<ClInclude Include="RouteManage.h" />
|
||||||
<ClInclude Include="SurfaceMotion.h" />
|
<ClInclude Include="SurfaceMotion.h" />
|
||||||
<ClInclude Include="VisibleCube.h" />
|
<ClInclude Include="VisibleCube.h" />
|
||||||
|
|
|
@ -35,12 +35,15 @@
|
||||||
<ClInclude Include="RouteManage.h">
|
<ClInclude Include="RouteManage.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="InvisibleComponent.h">
|
<ClInclude Include="ComponentsInfoPull.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="SurfaceMotion.h">
|
<ClInclude Include="SurfaceMotion.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="BehaviorPerform.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="VisibleCube.cpp">
|
<ClCompile Include="VisibleCube.cpp">
|
||||||
|
@ -55,12 +58,15 @@
|
||||||
<ClCompile Include="componentbasic.cpp">
|
<ClCompile Include="componentbasic.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="InvisibleComponent.cpp">
|
<ClCompile Include="ComponentsInfoPull.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="SurfaceMotion.cpp">
|
<ClCompile Include="SurfaceMotion.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="BehaviorPerform.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<QtMoc Include="DeduceFramework.h">
|
<QtMoc Include="DeduceFramework.h">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#include "InvisibleComponent.h"
|
#include "ComponentsInfoPull.h"
|
||||||
|
|
||||||
ComponentsInfoPull::ComponentsInfoPull() {}
|
ComponentsInfoPull::ComponentsInfoPull() {}
|
||||||
|
|
|
@ -37,18 +37,28 @@ public:
|
||||||
virtual QString content() const noexcept;
|
virtual QString content() const noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <summary>
|
class TopicData {
|
||||||
/// 通用消息基类
|
|
||||||
/// </summary>
|
|
||||||
class WsMessage : public Serializable {
|
|
||||||
public:
|
public:
|
||||||
virtual ~WsMessage() = default;
|
virtual ~TopicData() = default;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取消息类型字符串
|
/// 获取消息类型字符串
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>消息类型</returns>
|
/// <returns>消息类型</returns>
|
||||||
virtual QString topicString() const = 0;
|
virtual QString topicString() const = 0;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 提取包含默认值的实例
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
virtual std::shared_ptr<TopicData> newDefault() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 通用消息基类
|
||||||
|
/// </summary>
|
||||||
|
class WsMessage : public Serializable, public TopicData {
|
||||||
|
public:
|
||||||
|
virtual ~WsMessage() = default;
|
||||||
|
/// <summary>
|
||||||
/// 目标实体ID
|
/// 目标实体ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>ID</returns>
|
/// <returns>ID</returns>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
#include "BehaviorEditor.h"
|
|
@ -0,0 +1,12 @@
|
||||||
|
#pragma once
|
||||||
|
#include <QMainWindow>
|
||||||
|
#include "BehaviorPerform.h"
|
||||||
|
|
||||||
|
class BehaviorEditor : public QMainWindow
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BehaviorEditor(std::shared_ptr<BehaviorMapNode> map_ins, QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
|
@ -99,6 +99,7 @@
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="BehaviorEditor.cpp" />
|
||||||
<ClCompile Include="PerspectiveView.cpp" />
|
<ClCompile Include="PerspectiveView.cpp" />
|
||||||
<ClCompile Include="TempletAssemble.cpp" />
|
<ClCompile Include="TempletAssemble.cpp" />
|
||||||
<QtRcc Include="sims_world.qrc" />
|
<QtRcc Include="sims_world.qrc" />
|
||||||
|
@ -115,6 +116,9 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<QtMoc Include="PerspectiveView.h" />
|
<QtMoc Include="PerspectiveView.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="BehaviorEditor.h" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
||||||
<Import Project="$(QtMsBuild)\qt.targets" />
|
<Import Project="$(QtMsBuild)\qt.targets" />
|
||||||
|
|
|
@ -52,6 +52,9 @@
|
||||||
<ClCompile Include="PerspectiveView.cpp">
|
<ClCompile Include="PerspectiveView.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="BehaviorEditor.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<QtMoc Include="TempletAssemble.h">
|
<QtMoc Include="TempletAssemble.h">
|
||||||
|
@ -61,4 +64,9 @@
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</QtMoc>
|
</QtMoc>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="BehaviorEditor.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
Loading…
Reference in New Issue