ezEngine  Milestone 7
Node.h
1 #pragma once
2 
3 #include <Foundation/Strings/HashedString.h>
5 #include <CoreUtils/Basics.h>
6 
7 struct ezNodePin
8 {
9  EZ_DECLARE_POD_TYPE();
10 
11  struct Type
12  {
13  typedef ezUInt8 StorageType;
14 
15  enum Enum
16  {
17  Unknown,
18  Input,
19  Output,
20  PassThrough,
21 
22  Default = Unknown
23  };
24  };
25 
26  EZ_FORCE_INLINE ezNodePin()
27  {
28  m_bIsConnected = false;
29  m_uiInputIndex = -1;
30  m_uiOutputIndex = -1;
31  }
32 
33  ezEnum<Type> m_Type;
34  bool m_bIsConnected;
35  ezUInt8 m_uiInputIndex;
36  ezUInt8 m_uiOutputIndex;
37 };
38 
39 struct ezInputNodePin : public ezNodePin
40 {
41  EZ_DECLARE_POD_TYPE();
42 
43  EZ_FORCE_INLINE ezInputNodePin()
44  {
45  m_Type = Type::Input;
46  }
47 };
48 
49 struct ezOutputNodePin : public ezNodePin
50 {
51  EZ_DECLARE_POD_TYPE();
52 
53  EZ_FORCE_INLINE ezOutputNodePin()
54  {
55  m_Type = Type::Output;
56  }
57 };
58 
60 {
61  EZ_DECLARE_POD_TYPE();
62 
63  EZ_FORCE_INLINE ezPassThroughNodePin()
64  {
65  m_Type = Type::PassThrough;
66  }
67 };
68 
69 class EZ_COREUTILS_DLL ezNode : public ezReflectedClass
70 {
72 
73 public:
74  virtual ~ezNode() { }
75 
76  void InitializePins();
77 
78  const ezNodePin* GetPinByName(const char* szName) const;
79 
80 private:
84 };
85 
86 EZ_DECLARE_REFLECTABLE_TYPE(EZ_COREUTILS_DLL, ezNodePin);