LightWrap++
AC++wrapperfortheLightWave3DSDK
nodeeditor.h
Go to the documentation of this file.
1 #ifndef LWPP_NODEEDITOR_H
2 #define LWPP_NODEEDITOR_H
3 
4 #include <lwnodeeditor.h>
5 #include <lwpp/nodes.h>
6 #include <lwpp/vparm.h>
7 #include <string>
8 
9 namespace lwpp
10 {
11 
12  class RootNode
13  {
14  public:
15  virtual LWError init( NodeEditorID, int );
16  virtual LWError newTime( NodeEditorID, LWFrame, LWTime );
17  virtual void cleanup( NodeEditorID );
18  virtual LWXPanelID rootPanel( NodeEditorID );
19  virtual LWError rootOptions( NodeEditorID );
20  virtual void rootPreview( NodeEditorID, LWNodalAccess*, LWDVector );
21  virtual void rootCustomPreview( NodeEditorID, int, int );
22  };
23 
24  class NodeEditor : protected lwpp::GlobalBase<LWNodeEditorFuncs>, public lwpp::Storeable, public NodeInputHelper
25  {
26  protected:
27  LWRootNode mRootNode;
28  NodeEditorID mId;
29  bool do_destroy;
30 
31  LWNodeInput *addInput(ConnectionType type, const std::string name, NodeInputEvent* inp_event)
32  {
33  NodeInputID id = globPtr->addInput(mId, type, name.c_str(), inp_event);
34  return new LWNodeInput(id);
35  }
36  public:
37  NodeEditor(NodeEditorID id = 0, bool destroy = false)
38  : mId(id),
40  {
41  ;
42  }
43 
44  NodeEditor(const std::string rootName, const std::string panelTitle, RootNode* rn, NodePreviewType previewType = NPT_RENDER, bool destroy = true)
45  : mId(0),
47  {
48  create(rootName, panelTitle, rn, previewType);
49  }
51  {
52  destroy();
53  }
54 
55  bool create( const std::string rootName, const std::string panelTitle, RootNode* rn, NodePreviewType previewType = NPT_RENDER);
56 
57  void destroy()
58  {
59  if (mId && do_destroy)
60  {
61  globPtr->destroy(mId);
62  mId = 0;
63  }
64  }
65 
66  NodeEditorID getId() const
67  {
68  return mId;
69  }
70 
71  void rename( const std::string newName)
72  {
73  globPtr->rename(newName.c_str(), mId);
74  }
75  void setUpdateFunc(nodeEditorUpdateFunc* func)
76  {
77  globPtr->setUpdateFunc(mId, func);
78  }
79  LWError copy( NodeEditorID from)
80  {
81  return globPtr->copy(mId, from);
82  }
84  {
85  copy(from.getId());
86  return *this;
87  }
88  virtual LWError Load(const LoadState &ls )
89  {
90  return globPtr->load(mId, ls.getState());
91  }
92  virtual LWError Save(const SaveState &ss )
93  {
94  return globPtr->save(mId, ss.getState());
95  }
96  LWError init(int renderMode )
97  {
98  return globPtr->init(mId, renderMode);
99  }
100  LWError newTime( LWFrame frame, LWTime time)
101  {
102  return globPtr->newTime(mId, frame, time);
103  }
104  void cleanup()
105  {
106  globPtr->cleanup(mId);
107  }
108  void setEnvGroup(LWChanGroupID cId)
109  {
110  globPtr->setEnvGroup(mId, cId);
111  }
112  void setAutosize(nodeAutoSizeFunc* func)
113  {
114  globPtr->setAutosize(mId, func);
115  }
116  void setUserData(void * data)
117  {
118  globPtr->setUserData(mId, data);
119  }
120  template <typename T>
122  {
123  return static_cast<T *>(globPtr->getUserData(mId));
124  }
125  const int numberOfNodes() const
126  {
127  return globPtr->numberOfNodes(mId);
128  }
129  NodeInputID getInputByName(const std::string name )
130  {
131  return globPtr->getInputByName(mId, name.c_str());
132  }
133  NodeInputID getInputByIndex(int idx)
134  {
135  return globPtr->getInputByIndex(mId, idx);
136  }
137  const unsigned short getState() const
138  {
139  return globPtr->getState(mId);
140  }
141  void setState(unsigned short int state)
142  {
143  return globPtr->setState(mId, state);
144  }
146  {
147  return (globPtr->OpenNodeEditor(mId) != 0);
148  }
150  {
151  return (globPtr->isOpenNodeEditor(mId) != 0);
152  }
153 
154  NodeID getRootNodeID()
155  {
156  return globPtr->getRootNodeID(mId);
157  }
158  };
159 }
160 
161 #endif // LWPP_NODEEDITOR_H