BVB Source Codes

CRYENGINE Show SelectionTreeNode.h Source code

Return Download CRYENGINE: download SelectionTreeNode.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef __SelectionTreeNode_h__
  4. #define __SelectionTreeNode_h__
  5.  
  6. #pragma once
  7.  
  8. /*
  9.    This file implements a node in the selection tree.
  10.  */
  11.  
  12. #include "BlockyXml.h"
  13. #include "SelectionCondition.h"
  14.  
  15. typedef uint16 SelectionNodeID;
  16.  
  17. class SelectionContext;
  18. class SelectionTreeNodes;
  19. class SelectionTreeNode
  20. {
  21.         typedef SelectionNodeID NodeID;
  22. public:
  23.         enum Type
  24.         {
  25.                 Leaf = 0,
  26.                 Priority,
  27.                 StateMachine,
  28.                 Sequence,
  29.                 Invalid,
  30.         };
  31.  
  32.         SelectionTreeNode(NodeID parentID = 0);
  33.  
  34.         bool LoadFromXML(const BlockyXmlBlocks::Ptr& blocks, SelectionTree& tree, const char* treeName,
  35.                          SelectionVariableDeclarations& variableDecls, const XmlNodeRef& rootNode,
  36.                          const char* fileName);
  37.  
  38.         inline void SetNodeID(SelectionNodeID nodeID)
  39.         {
  40.                 m_nodeID = nodeID;
  41.         }
  42.  
  43.         inline NodeID GetNodeID() const
  44.         {
  45.                 return m_nodeID;
  46.         }
  47.  
  48.         inline NodeID GetParentID() const
  49.         {
  50.                 return m_parentID;
  51.         }
  52.  
  53.         inline Type GetType() const
  54.         {
  55.                 return m_type;
  56.                 ;
  57.         }
  58.  
  59.         inline const char* GetName() const
  60.         {
  61.                 return m_name.c_str();
  62.         }
  63.  
  64.         bool IsDescendant(SelectionContext& context, const NodeID& nodeID) const;
  65.         bool IsAncestor(SelectionContext& context, const NodeID& nodeID) const;
  66.         bool Evaluate(SelectionContext& context, SelectionNodeID& nodeID);
  67.  
  68. private:
  69.         string m_name;
  70.         NodeID m_nodeID;
  71.         NodeID m_parentID;
  72.         uint8  m_currentID;
  73.         Type   m_type;
  74.  
  75. public:
  76.         struct Child
  77.         {
  78.                 Child(NodeID _childID, const SelectionCondition& _condition)
  79.                         : childID(_childID)
  80.                         , condition(_condition)
  81.                 {
  82.                 }
  83.  
  84.                 SelectionCondition condition;
  85.                 NodeID             childID;
  86.         };
  87.         typedef std::vector<Child> Children;
  88.  
  89.         inline const Children& GetChildren() const { return m_children; }
  90.  
  91. private:
  92.         Children m_children;
  93.  
  94.         struct State
  95.         {
  96.                 State()
  97.                         : childID(0)
  98.                 {
  99.                 }
  100.  
  101.                 struct Transition
  102.                 {
  103.                         Transition()
  104.                                 : targetStateID(-1)
  105.                         {
  106.                         }
  107.  
  108.                         SelectionCondition condition;
  109.                         uint8              targetStateID;
  110.                 };
  111.  
  112.                 NodeID childID;
  113.  
  114.                 typedef std::vector<Transition> Transitions;
  115.                 Transitions transitions;
  116.         };
  117.  
  118.         typedef std::vector<State> States;
  119.         States m_states;
  120. };
  121.  
  122. class SelectionTreeNodes :
  123.         public std::vector<SelectionTreeNode>
  124. {
  125. };
  126.  
  127. #endif
  128.  
downloadSelectionTreeNode.h Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top