update
This commit is contained in:
parent
f9fbba72db
commit
0272af06d4
|
@ -165,8 +165,8 @@ std::shared_ptr<Serializable> MapKernal::newDefault() const
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
LogicalNode::LogicalNode(NodeKind t /*= NodeKind::ACTIONNODE*/)
|
||||
:_node_type(t) {
|
||||
LogicalNode::LogicalNode(NodeKind t, std::shared_ptr<MapKernal> kernal)
|
||||
:_node_type(t), _bind_kernal(kernal) {
|
||||
}
|
||||
|
||||
void LogicalNode::_set_parent_node(std::weak_ptr<LogicalNode> pnode)
|
||||
|
@ -220,7 +220,7 @@ std::weak_ptr<LogicalNode> LogicalNode::parent() const
|
|||
}
|
||||
|
||||
BehaviorMapNode::BehaviorMapNode(std::shared_ptr<MapKernal> core)
|
||||
:LogicalNode(NodeKind::MAPNODE), _bind_kernal(core) {
|
||||
:LogicalNode(NodeKind::MAPNODE, core), _bind_kernal(core) {
|
||||
}
|
||||
|
||||
std::shared_ptr<MapKernal> BehaviorMapNode::getKernal() const
|
||||
|
@ -312,8 +312,9 @@ QHash<QString, std::shared_ptr<TopicData>> BehaviorMapNode::outputList() const
|
|||
return list;
|
||||
}
|
||||
|
||||
SequenceNode::SequenceNode()
|
||||
: LogicalNode(NodeKind::SEQUENCENODE) {
|
||||
|
||||
SequenceNode::SequenceNode(std::shared_ptr<MapKernal> kernal)
|
||||
: LogicalNode(NodeKind::SEQUENCENODE, kernal) {
|
||||
}
|
||||
|
||||
QList<std::shared_ptr<LogicalNode>> SequenceNode::getForwards() const
|
||||
|
@ -393,7 +394,7 @@ bool SequenceNode::fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste
|
|||
|
||||
std::shared_ptr<Serializable> SequenceNode::newDefault() const
|
||||
{
|
||||
return std::make_shared<SequenceNode>();
|
||||
return std::make_shared<SequenceNode>(this->bindMap()->getKernal());
|
||||
}
|
||||
|
||||
void SequenceNode::reset()
|
||||
|
@ -412,7 +413,7 @@ void LogicalNode::insert(std::shared_ptr<LogicalNode> node, int index /*= -1*/)
|
|||
if (it->getID() == node->getID())
|
||||
return;
|
||||
|
||||
if(node->parent().lock())
|
||||
if (node->parent().lock())
|
||||
node->parent().lock()->remove(node);
|
||||
|
||||
_child_list.insert(index, node);
|
||||
|
@ -424,8 +425,8 @@ void LogicalNode::remove(std::shared_ptr<LogicalNode> node)
|
|||
_child_list.removeAll(node);
|
||||
}
|
||||
|
||||
SelectorNode::SelectorNode()
|
||||
: LogicalNode(NodeKind::SEQUENCENODE) {
|
||||
SelectorNode::SelectorNode(std::shared_ptr<MapKernal> kernal)
|
||||
: LogicalNode(NodeKind::SEQUENCENODE, kernal) {
|
||||
}
|
||||
|
||||
QList<std::shared_ptr<LogicalNode>> SelectorNode::getForwards() const
|
||||
|
@ -543,8 +544,8 @@ std::shared_ptr<Serializable> ParallelNode::newDefault() const
|
|||
return std::make_shared<ParallelNode>();
|
||||
}
|
||||
|
||||
ParallelNode::ParallelNode()
|
||||
: LogicalNode(NodeKind::PARALLELNODE) {
|
||||
ParallelNode::ParallelNode(std::shared_ptr<MapKernal> kernal)
|
||||
: LogicalNode(NodeKind::PARALLELNODE, kernal) {
|
||||
}
|
||||
|
||||
QHash<QString, std::shared_ptr<TopicData>> ParallelNode::inputList() const
|
||||
|
@ -615,7 +616,7 @@ std::shared_ptr<Serializable> CompareNode::newDefault() const
|
|||
}
|
||||
|
||||
CompareNode::CompareNode(std::shared_ptr<MapKernal> ins)
|
||||
: LogicalNode(NodeKind::COMPARENODE), _bind_kernal(ins) {
|
||||
: LogicalNode(NodeKind::COMPARENODE, ins), _bind_kernal(ins) {
|
||||
_data_map[u8"×óÖµ"] = std::make_shared<GeneralData>();
|
||||
_data_map[u8"ÓÒÖµ"] = std::make_shared<GeneralData>();
|
||||
}
|
||||
|
|
|
@ -323,6 +323,7 @@ enum class NodeKind {
|
|||
PARALLELNODE, // 并行节点
|
||||
COMPARENODE, // 比较节点
|
||||
ACTIONNODE, // 动作节点
|
||||
MODIFYNODE, // 修饰节点
|
||||
};
|
||||
class BehaviorMapNode;
|
||||
/// <summary>
|
||||
|
@ -332,6 +333,7 @@ class COMPONENTBASIC_EXPORT LogicalNode : virtual public Serializable, public st
|
|||
private:
|
||||
int _node_id = 0;
|
||||
NodeKind _node_type = NodeKind::ACTIONNODE;
|
||||
std::shared_ptr<MapKernal> _bind_kernal;
|
||||
|
||||
std::weak_ptr<LogicalNode> _parent_bind;
|
||||
QList<std::shared_ptr<LogicalNode>> _child_list;
|
||||
|
@ -343,7 +345,7 @@ private:
|
|||
void _set_parent_node(std::weak_ptr<LogicalNode> pnode);
|
||||
|
||||
public:
|
||||
LogicalNode(NodeKind t);
|
||||
LogicalNode(NodeKind t, std::shared_ptr<MapKernal> kernal);
|
||||
virtual ~LogicalNode() = default;
|
||||
|
||||
/// <summary>
|
||||
|
@ -556,7 +558,7 @@ private:
|
|||
QHash<int, LogicalResult> _state_map;
|
||||
|
||||
public:
|
||||
SequenceNode();
|
||||
SequenceNode(std::shared_ptr<MapKernal> kernal);
|
||||
|
||||
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
|
||||
QString typeName() const override;
|
||||
|
@ -581,7 +583,7 @@ private:
|
|||
QHash<int, LogicalResult> _state_map;
|
||||
|
||||
public:
|
||||
SelectorNode();
|
||||
SelectorNode(std::shared_ptr<MapKernal> kernal);
|
||||
|
||||
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
|
||||
QString typeName() const override;
|
||||
|
@ -606,7 +608,7 @@ private:
|
|||
QHash<int, LogicalResult> _state_map;
|
||||
|
||||
public:
|
||||
ParallelNode();
|
||||
ParallelNode(std::shared_ptr<MapKernal> kernal);
|
||||
|
||||
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
|
||||
QString typeName() const override;
|
||||
|
@ -687,6 +689,30 @@ public:
|
|||
void saveTo(QJsonObject& obj) const override;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 修饰节点类型
|
||||
/// </summary>
|
||||
enum class ModifyType {
|
||||
NONE,
|
||||
ALWAYS_SUCCESS, // 永远成功
|
||||
ALWAYS_FAILURE, // 永远失败
|
||||
RESULT_INVENTER, // 结果翻转
|
||||
};
|
||||
class COMPONENTBASIC_EXPORT ModifiedNode : public LogicalNode {
|
||||
private:
|
||||
std::shared_ptr<MapKernal> _bind_kernal;
|
||||
ModifyType _type_appoint = ModifyType::NONE;
|
||||
|
||||
public:
|
||||
ModifiedNode(std::shared_ptr<MapKernal> kernal)
|
||||
: _bind_kernal(kernal){}
|
||||
|
||||
ModifyType modifyType() const;
|
||||
void resetModify(ModifyType t);
|
||||
|
||||
|
||||
};
|
||||
|
||||
// 行为节点 ====================================================================
|
||||
|
||||
/// <summary>
|
||||
|
|
Loading…
Reference in New Issue