[80] | 1 | /**********************************************************************
|
---|
| 2 | *<
|
---|
| 3 | FILE: inode.h
|
---|
| 4 |
|
---|
| 5 | DESCRIPTION:
|
---|
| 6 |
|
---|
| 7 | CREATED BY: Dan Silva
|
---|
| 8 |
|
---|
| 9 | HISTORY:
|
---|
| 10 |
|
---|
| 11 | *> Copyright (c) 1994, All Rights Reserved.
|
---|
| 12 | **********************************************************************/
|
---|
| 13 |
|
---|
| 14 | #ifndef __INODE__H
|
---|
| 15 | #define __INODE__H
|
---|
| 16 |
|
---|
| 17 | class ObjectState;
|
---|
| 18 | class Object;
|
---|
| 19 | class Control;
|
---|
| 20 | class ScaleValue;
|
---|
| 21 | class Mtl;
|
---|
| 22 | class RenderData;
|
---|
| 23 |
|
---|
| 24 |
|
---|
| 25 | // Transform modes -- passed to Move/Rotate/Scale
|
---|
| 26 | #define PIV_NONE 0
|
---|
| 27 | #define PIV_PIVOT_ONLY 1
|
---|
| 28 | #define PIV_OBJECT_ONLY 2
|
---|
| 29 |
|
---|
| 30 |
|
---|
| 31 | // Node interface
|
---|
| 32 | class INode: public ReferenceTarget {
|
---|
| 33 | public:
|
---|
| 34 | // If this was a temporary INode (like an INodeTransformed) this will delete it.
|
---|
| 35 | virtual void DisposeTemporary() {}
|
---|
| 36 |
|
---|
| 37 | // In the case of INodeTransformed, this gets a pointer to the real node.
|
---|
| 38 | virtual INode *GetActualINode() {return this;}
|
---|
| 39 |
|
---|
| 40 | virtual TCHAR* GetName()=0;
|
---|
| 41 | virtual void SetName(TCHAR *s)=0;
|
---|
| 42 |
|
---|
| 43 | // Get/Set node's transform ( without object-offset or WSM affect)
|
---|
| 44 | virtual Matrix3 GetNodeTM(TimeValue t, Interval* valid=NULL)=0;
|
---|
| 45 | virtual void SetNodeTM(TimeValue t, Matrix3& tm)=0;
|
---|
| 46 |
|
---|
| 47 | // Invalidate node's caches
|
---|
| 48 | virtual void InvalidateTreeTM()=0;
|
---|
| 49 | virtual void InvalidateTM()=0;
|
---|
| 50 | virtual void InvalidateWS()=0;
|
---|
| 51 |
|
---|
| 52 | // Get object's transform (including object-offset)
|
---|
| 53 | // and also the WSM affect when appropriate )
|
---|
| 54 | // This is used inside object Display and HitTest routines
|
---|
| 55 | virtual Matrix3 GetObjectTM(TimeValue time, Interval* valid=NULL)=0;
|
---|
| 56 |
|
---|
| 57 | // Get object's transform including object-offset but not WSM affect
|
---|
| 58 | virtual Matrix3 GetObjTMBeforeWSM(TimeValue time, Interval* valid=NULL)=0;
|
---|
| 59 |
|
---|
| 60 | // Get object's transform including object-offset and WSM affect
|
---|
| 61 | virtual Matrix3 GetObjTMAfterWSM(TimeValue time, Interval* valid=NULL)=0;
|
---|
| 62 |
|
---|
| 63 | // evaluate the State the object after offset and WSM's applied
|
---|
| 64 | // if evalHidden is FALSE and the node is hidden the pipeline will not
|
---|
| 65 | // actually be evaluated (however the TM will).
|
---|
| 66 | virtual const ObjectState& EvalWorldState(TimeValue time,BOOL evalHidden=TRUE)=0;
|
---|
| 67 |
|
---|
| 68 | // Hierarchy manipulation
|
---|
| 69 | virtual INode* GetParentNode()=0;
|
---|
| 70 | virtual void AttachChild(INode* node, int keepPos=1)=0; // make node a child of this one
|
---|
| 71 | virtual void Detach(TimeValue t, int keepPos=1)=0; // detach node
|
---|
| 72 | virtual int NumberOfChildren()=0;
|
---|
| 73 | virtual INode* GetChildNode(int i)=0;
|
---|
| 74 |
|
---|
| 75 | // display attributes
|
---|
| 76 | virtual void Hide(BOOL onOff)=0; // set node's hide bit
|
---|
| 77 | virtual int IsHidden(DWORD hflags=0)=0;
|
---|
| 78 | virtual int IsNodeHidden()=0; // is node hidden in *any* way.
|
---|
| 79 | virtual void Freeze(BOOL onOff)= 0; // stop node from being pickable
|
---|
| 80 | virtual int IsFrozen()=0;
|
---|
| 81 | virtual void BoxMode(BOOL onOff)=0; // display node with a bounding box
|
---|
| 82 | virtual int GetBoxMode()=0;
|
---|
| 83 | virtual void AllEdges(BOOL onOff)=0; // display all edges, including "hidden" ones
|
---|
| 84 | virtual int GetAllEdges()=0;
|
---|
| 85 | virtual void BackCull(BOOL onOff)=0; // backcull display toggle
|
---|
| 86 | virtual int GetBackCull()=0;
|
---|
| 87 | virtual void SetCastShadows(BOOL onOff)=0;
|
---|
| 88 | virtual int CastShadows()=0;
|
---|
| 89 | virtual void SetRcvShadows(BOOL onOff)=0;
|
---|
| 90 | virtual int RcvShadows()=0;
|
---|
| 91 | virtual void SetMotBlur(BOOL onOff)=0;
|
---|
| 92 | virtual int MotBlur()=0;
|
---|
| 93 |
|
---|
| 94 | // bone display attributes.
|
---|
| 95 | virtual void ShowBone(int boneVis)=0; // 0: off, 1: show bone, 2: show bone only
|
---|
| 96 | virtual void BoneAsLine(int onOff)=0; // display bone as simple line
|
---|
| 97 | virtual BOOL IsBoneShowing()=0;
|
---|
| 98 |
|
---|
| 99 | // Access node's wire-frame color
|
---|
| 100 | virtual DWORD GetWireColor()=0;
|
---|
| 101 | virtual void SetWireColor(DWORD newcol)=0;
|
---|
| 102 |
|
---|
| 103 | // Test various flags
|
---|
| 104 | virtual int IsRootNode()=0;
|
---|
| 105 | virtual int Selected()=0;
|
---|
| 106 | virtual int Dependent()=0;
|
---|
| 107 | virtual int IsTarget()=0;
|
---|
| 108 |
|
---|
| 109 | // Node transform locks
|
---|
| 110 | virtual BOOL GetTransformLock(int type, int axis)=0;
|
---|
| 111 | virtual void SetTransformLock(int type, int axis, BOOL onOff)=0;
|
---|
| 112 |
|
---|
| 113 | // Get target node if any.
|
---|
| 114 | virtual INode* GetTarget()=0; // returns NULL if node has no target.
|
---|
| 115 | virtual INode* GetLookatNode()=0; // if this is a target, this finds the node that looks at it.
|
---|
| 116 |
|
---|
| 117 | // This is just GetParent+GetNodeTM
|
---|
| 118 | virtual Matrix3 GetParentTM(TimeValue t)=0;
|
---|
| 119 |
|
---|
| 120 | // This is just GetTarget+GetNodeTM
|
---|
| 121 | virtual int GetTargetTM(TimeValue t, Matrix3& m)=0;
|
---|
| 122 |
|
---|
| 123 | // Object reference
|
---|
| 124 | virtual Object* GetObjectRef()=0;
|
---|
| 125 | virtual void SetObjectRef(Object *)=0;
|
---|
| 126 |
|
---|
| 127 | // TM Controller
|
---|
| 128 | virtual Control* GetTMController()=0;
|
---|
| 129 | virtual void SetTMController(Control *m3cont)=0;
|
---|
| 130 |
|
---|
| 131 | // Visibility controller
|
---|
| 132 | virtual Control *GetVisController()=0;
|
---|
| 133 | virtual void SetVisController(Control *cont)=0;
|
---|
| 134 | virtual float GetVisibility(TimeValue t,Interval *valid=NULL)=0;
|
---|
| 135 | virtual void SetVisibility(TimeValue t,float vis)=0;
|
---|
| 136 |
|
---|
| 137 | // Renderer Materials
|
---|
| 138 | virtual Mtl *GetMtl()=0;
|
---|
| 139 | virtual void SetMtl(Mtl* matl)=0;
|
---|
| 140 |
|
---|
| 141 | // GraphicsWindow Materials
|
---|
| 142 | virtual Material* Mtls()=0; // Array of GraphicsWindow Materials
|
---|
| 143 | virtual int NumMtls()=0; // number of entries in Mtls
|
---|
| 144 |
|
---|
| 145 | // Object offset from node:
|
---|
| 146 | virtual void SetObjOffsetPos(Point3 p)=0;
|
---|
| 147 | virtual Point3 GetObjOffsetPos()=0;
|
---|
| 148 | virtual void SetObjOffsetRot(Quat q)=0;
|
---|
| 149 | virtual Quat GetObjOffsetRot()=0;
|
---|
| 150 | virtual void SetObjOffsetScale(ScaleValue sv)=0;
|
---|
| 151 | virtual ScaleValue GetObjOffsetScale()=0;
|
---|
| 152 |
|
---|
| 153 | // Misc.
|
---|
| 154 | virtual void FlagForeground(TimeValue t,BOOL notify=TRUE)=0;
|
---|
| 155 | virtual int IsActiveGrid()=0;
|
---|
| 156 |
|
---|
| 157 | // A place to hang temp data. Don't expect the data to stay around after you return control
|
---|
| 158 | virtual void SetNodeLong(LONG l)=0;
|
---|
| 159 | virtual LONG GetNodeLong()=0;
|
---|
| 160 |
|
---|
| 161 | // virtual void GetMaterial(Material &mtl)=0; // Why do we need this?
|
---|
| 162 |
|
---|
| 163 | // Access render data
|
---|
| 164 | virtual RenderData *GetRenderData()=0;
|
---|
| 165 | virtual void SetRenderData(RenderData *rd)=0;
|
---|
| 166 |
|
---|
| 167 | //
|
---|
| 168 | // Access user defined property text
|
---|
| 169 | //
|
---|
| 170 | // The first two functions access the entire buffer
|
---|
| 171 | virtual void GetUserPropBuffer(TSTR &buf)=0;
|
---|
| 172 | virtual void SetUserPropBuffer(const TSTR &buf)=0;
|
---|
| 173 |
|
---|
| 174 | // These get individual properties - return FALSE if the key is not found
|
---|
| 175 | virtual BOOL GetUserPropString(const TSTR &key,TSTR &string)=0;
|
---|
| 176 | virtual BOOL GetUserPropInt(const TSTR &key,int &val)=0;
|
---|
| 177 | virtual BOOL GetUserPropFloat(const TSTR &key,float &val)=0;
|
---|
| 178 | virtual BOOL GetUserPropBool(const TSTR &key,BOOL &b)=0;
|
---|
| 179 |
|
---|
| 180 | // These set individual properties - create the key if it doesn't exist
|
---|
| 181 | virtual void SetUserPropString(const TSTR &key,const TSTR &string)=0;
|
---|
| 182 | virtual void SetUserPropInt(const TSTR &key,int val)=0;
|
---|
| 183 | virtual void SetUserPropFloat(const TSTR &key,float val)=0;
|
---|
| 184 | virtual void SetUserPropBool(const TSTR &key,BOOL b)=0;
|
---|
| 185 |
|
---|
| 186 | // Just checks to see if a key exists
|
---|
| 187 | virtual BOOL UserPropExists(const TSTR &key)=0;
|
---|
| 188 |
|
---|
| 189 | // G-Buffer ID's
|
---|
| 190 | virtual ULONG GetGBufID()=0;
|
---|
| 191 | virtual void SetGBufID(ULONG id)=0;
|
---|
| 192 |
|
---|
| 193 | // Transform the node about a specified axis system.
|
---|
| 194 | // Either the pivot point or the object or both can be transformed.
|
---|
| 195 | // Also, the children can be counter transformed so they don't move.
|
---|
| 196 | virtual void Move(TimeValue t, const Matrix3& tmAxis, const Point3& val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)=0;
|
---|
| 197 | virtual void Rotate(TimeValue t, const Matrix3& tmAxis, const AngAxis& val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)=0;
|
---|
| 198 | virtual void Rotate(TimeValue t, const Matrix3& tmAxis, const Quat& val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)=0;
|
---|
| 199 | virtual void Scale(TimeValue t, const Matrix3& tmAxis, const Point3& val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE)=0;
|
---|
| 200 |
|
---|
| 201 | virtual BOOL IsGroupMember()=0;
|
---|
| 202 | virtual BOOL IsGroupHead()=0;
|
---|
| 203 | };
|
---|
| 204 |
|
---|
| 205 |
|
---|
| 206 | // Transform lock types
|
---|
| 207 | #define INODE_LOCKPOS 0
|
---|
| 208 | #define INODE_LOCKROT 1
|
---|
| 209 | #define INODE_LOCKSCL 2
|
---|
| 210 |
|
---|
| 211 | // Transform lock axis
|
---|
| 212 | #define INODE_LOCK_X 0
|
---|
| 213 | #define INODE_LOCK_Y 1
|
---|
| 214 | #define INODE_LOCK_Z 2
|
---|
| 215 |
|
---|
| 216 | // Derive a class from this class, implementing the callback.
|
---|
| 217 | class ITreeEnumProc {
|
---|
| 218 | public:
|
---|
| 219 | virtual int callback( INode *node )=0;
|
---|
| 220 | };
|
---|
| 221 |
|
---|
| 222 | // Return values for the TreeEnum callback:
|
---|
| 223 | #define TREE_CONTINUE 0 // Continue enumerating
|
---|
| 224 | #define TREE_IGNORECHILDREN 1 // Don't enumerate children, but continue
|
---|
| 225 | #define TREE_ABORT 2 // Stop enumerating
|
---|
| 226 |
|
---|
| 227 | // Node properties:
|
---|
| 228 | #define PROPID_PINNODE PROPID_USER+1 // Returns a pointer to the node this node is pinned to
|
---|
| 229 | #define PROPID_PRECEDENCE PROPID_USER+2 // Returns an integer representing this node's precedence
|
---|
| 230 | #define PROPID_RELPOS PROPID_USER+3 // Returns a pointer to the relative vector between the node and its pin
|
---|
| 231 | #define PROPID_RELROT PROPID_USER+4 // Returns a pointer to the relative quaternion between the node and its pin
|
---|
| 232 |
|
---|
| 233 |
|
---|
| 234 |
|
---|
| 235 | class INodeTransformed;
|
---|
| 236 |
|
---|
| 237 | // INodeTransformed can be allocated on the stack, but if you need
|
---|
| 238 | // to create one dynamically, use these methods.
|
---|
| 239 | CoreExport void DeleteINodeTransformed(INodeTransformed *n);
|
---|
| 240 | CoreExport INodeTransformed *CreateINodeTransformed(INode *n,Matrix3 tm,BOOL dm=TRUE);
|
---|
| 241 |
|
---|
| 242 | // This class provides a layer that will add in a transformation to the
|
---|
| 243 | // node's objectTM.
|
---|
| 244 | //
|
---|
| 245 | // Most methods pass through to the inode, except for the objectTM methods
|
---|
| 246 | // which pre-multiply in the given matrix.
|
---|
| 247 | //
|
---|
| 248 | class INodeTransformed : public INode {
|
---|
| 249 | public:
|
---|
| 250 | INode *node;
|
---|
| 251 | Matrix3 tm;
|
---|
| 252 | BOOL deleteMe;
|
---|
| 253 |
|
---|
| 254 | INodeTransformed(INode *n,Matrix3 tm,BOOL dm=TRUE) {node = n;this->tm = tm;deleteMe = dm;}
|
---|
| 255 |
|
---|
| 256 | void DisposeTemporary() {node->DisposeTemporary(); if (deleteMe) DeleteINodeTransformed(this);}
|
---|
| 257 | INode *GetActualINode() {return node->GetActualINode();}
|
---|
| 258 |
|
---|
| 259 | TCHAR* GetName() {return node->GetName();}
|
---|
| 260 | void SetName(TCHAR *s) {node->SetName(s);}
|
---|
| 261 | Matrix3 GetNodeTM(TimeValue t, Interval* valid=NULL) {return node->GetNodeTM(t,valid);}
|
---|
| 262 | void SetNodeTM(TimeValue t, Matrix3& tm) {node->SetNodeTM(t,tm);}
|
---|
| 263 | void InvalidateTreeTM() {node->InvalidateTreeTM();}
|
---|
| 264 | void InvalidateTM() {node->InvalidateTM();}
|
---|
| 265 | void InvalidateWS() {node->InvalidateWS();}
|
---|
| 266 | Matrix3 GetObjectTM(TimeValue time, Interval* valid=NULL) {return tm*node->GetObjectTM(time,valid);}
|
---|
| 267 | Matrix3 GetObjTMBeforeWSM(TimeValue time, Interval* valid=NULL) {return tm*node->GetObjTMBeforeWSM(time,valid);}
|
---|
| 268 | Matrix3 GetObjTMAfterWSM(TimeValue time, Interval* valid=NULL) {return tm*node->GetObjTMAfterWSM(time,valid);}
|
---|
| 269 | const ObjectState& EvalWorldState(TimeValue time,BOOL evalHidden=TRUE) {return node->EvalWorldState(time,evalHidden);}
|
---|
| 270 | INode* GetParentNode() {return node->GetParentNode();}
|
---|
| 271 | void AttachChild(INode* node, int keepPos=1) {node->AttachChild(node,keepPos);}
|
---|
| 272 | void Detach(TimeValue t, int keepPos=1) {node->Detach(t,keepPos);}
|
---|
| 273 | int NumberOfChildren() {return node->NumberOfChildren();}
|
---|
| 274 | INode* GetChildNode(int i) {return node->GetChildNode(i);}
|
---|
| 275 | void Hide(BOOL onOff) {node->Hide(onOff);}
|
---|
| 276 | int IsHidden(DWORD hflags=0) {return node->IsHidden(hflags);}
|
---|
| 277 | int IsNodeHidden() { return node->IsNodeHidden(); }
|
---|
| 278 | void Freeze(BOOL onOff) {node->Freeze(onOff);}
|
---|
| 279 | int IsFrozen() {return node->IsFrozen();}
|
---|
| 280 | void BoxMode(BOOL onOff) {node->BoxMode(onOff);}
|
---|
| 281 | int GetBoxMode() {return node->GetBoxMode();}
|
---|
| 282 | void AllEdges(BOOL onOff) {node->AllEdges(onOff);}
|
---|
| 283 | int GetAllEdges() {return node->GetAllEdges();}
|
---|
| 284 | void BackCull(BOOL onOff) {node->BackCull(onOff);}
|
---|
| 285 | int GetBackCull() {return node->GetBackCull();}
|
---|
| 286 | void SetCastShadows(BOOL onOff) { node->SetCastShadows(onOff); }
|
---|
| 287 | int CastShadows() { return node->CastShadows(); }
|
---|
| 288 | void SetRcvShadows(BOOL onOff) { node->SetRcvShadows(onOff); }
|
---|
| 289 | int RcvShadows() { return node->RcvShadows(); }
|
---|
| 290 | void SetMotBlur(BOOL onOff) { node->SetMotBlur(onOff); }
|
---|
| 291 | int MotBlur() { return node->MotBlur(); }
|
---|
| 292 | void ShowBone(int boneVis) {node->ShowBone(boneVis);}
|
---|
| 293 | void BoneAsLine(int onOff) {node->BoneAsLine(onOff);}
|
---|
| 294 | BOOL IsBoneShowing() {return node->IsBoneShowing();}
|
---|
| 295 | DWORD GetWireColor() {return node->GetWireColor();}
|
---|
| 296 | void SetWireColor(DWORD newcol) {node->SetWireColor(newcol);}
|
---|
| 297 | int IsRootNode() {return node->IsRootNode();}
|
---|
| 298 | int Selected() {return node->Selected();}
|
---|
| 299 | int Dependent() {return node->Dependent();}
|
---|
| 300 | int IsTarget() {return node->IsTarget();}
|
---|
| 301 | BOOL GetTransformLock(int type, int axis) {return node->GetTransformLock(type,axis);}
|
---|
| 302 | void SetTransformLock(int type, int axis, BOOL onOff) {node->SetTransformLock(type,axis,onOff);}
|
---|
| 303 | INode* GetTarget() {return node->GetTarget();}
|
---|
| 304 | INode* GetLookatNode() {return node->GetLookatNode();}
|
---|
| 305 | Matrix3 GetParentTM(TimeValue t) {return node->GetParentTM(t);}
|
---|
| 306 | int GetTargetTM(TimeValue t, Matrix3& m) {return node->GetTargetTM(t,m);}
|
---|
| 307 | Object* GetObjectRef() {return node->GetObjectRef();}
|
---|
| 308 | void SetObjectRef(Object *o) {node->SetObjectRef(o);}
|
---|
| 309 | Control* GetTMController() {return node->GetTMController();}
|
---|
| 310 | void SetTMController(Control *m3cont) {node->SetTMController(m3cont);}
|
---|
| 311 | Control *GetVisController() {return node->GetVisController();}
|
---|
| 312 | void SetVisController(Control *cont) {node->SetVisController(cont);}
|
---|
| 313 | float GetVisibility(TimeValue t,Interval *valid=NULL) {return node->GetVisibility(t,valid);}
|
---|
| 314 | void SetVisibility(TimeValue t,float vis) {node->SetVisibility(t,vis);}
|
---|
| 315 |
|
---|
| 316 | Mtl *GetMtl() { return node->GetMtl(); }
|
---|
| 317 | void SetMtl(Mtl* matl) { node->SetMtl(matl); }
|
---|
| 318 |
|
---|
| 319 | Material* Mtls() { return node->Mtls(); }
|
---|
| 320 | int NumMtls() { return node->NumMtls(); }
|
---|
| 321 |
|
---|
| 322 | RenderData *GetRenderData() {return node->GetRenderData();}
|
---|
| 323 | void SetRenderData(RenderData *rd) {node->SetRenderData(rd);}
|
---|
| 324 |
|
---|
| 325 | void SetObjOffsetPos(Point3 p) {node->SetObjOffsetPos(p);}
|
---|
| 326 | Point3 GetObjOffsetPos() {return node->GetObjOffsetPos();}
|
---|
| 327 | void SetObjOffsetRot(Quat q) {node->SetObjOffsetRot(q);}
|
---|
| 328 | Quat GetObjOffsetRot() {return node->GetObjOffsetRot();}
|
---|
| 329 | void FlagForeground(TimeValue t,BOOL notify=TRUE) {node->FlagForeground(t,notify);}
|
---|
| 330 | int IsActiveGrid() {return node->IsActiveGrid();}
|
---|
| 331 | void SetNodeLong(LONG l) {node->SetNodeLong(l);}
|
---|
| 332 | LONG GetNodeLong() {return node->GetNodeLong();}
|
---|
| 333 |
|
---|
| 334 | void GetUserPropBuffer(TSTR &buf) {node->GetUserPropBuffer(buf);}
|
---|
| 335 | void SetUserPropBuffer(const TSTR &buf) {node->SetUserPropBuffer(buf);}
|
---|
| 336 | BOOL GetUserPropString(const TSTR &key,TSTR &string) {return node->GetUserPropString(key,string);}
|
---|
| 337 | BOOL GetUserPropInt(const TSTR &key,int &val) {return node->GetUserPropInt(key,val);}
|
---|
| 338 | BOOL GetUserPropFloat(const TSTR &key,float &val) {return node->GetUserPropFloat(key,val);}
|
---|
| 339 | BOOL GetUserPropBool(const TSTR &key,BOOL &b) {return node->GetUserPropBool(key,b);}
|
---|
| 340 | void SetUserPropString(const TSTR &key,const TSTR &string) {node->SetUserPropString(key,string);}
|
---|
| 341 | void SetUserPropInt(const TSTR &key,int val) {node->SetUserPropInt(key,val);}
|
---|
| 342 | void SetUserPropFloat(const TSTR &key,float val) {node->SetUserPropFloat(key,val);}
|
---|
| 343 | void SetUserPropBool(const TSTR &key,BOOL b) {node->SetUserPropBool(key,b);}
|
---|
| 344 | BOOL UserPropExists(const TSTR &key) {return node->UserPropExists(key);}
|
---|
| 345 | ULONG GetGBufID() { return node->GetGBufID(); }
|
---|
| 346 | void SetGBufID(ULONG id) { node->SetGBufID(id); }
|
---|
| 347 |
|
---|
| 348 | CoreExport void SetObjOffsetScale(ScaleValue sv);
|
---|
| 349 | CoreExport ScaleValue GetObjOffsetScale();
|
---|
| 350 |
|
---|
| 351 | void Move(TimeValue t, const Matrix3& tmAxis, const Point3& val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE) {node->Move(t,tmAxis,val,localOrigin,pivMode,ignoreLocks);}
|
---|
| 352 | void Rotate(TimeValue t, const Matrix3& tmAxis, const AngAxis& val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE) {node->Rotate(t,tmAxis,val,localOrigin,pivMode,ignoreLocks);}
|
---|
| 353 | void Rotate(TimeValue t, const Matrix3& tmAxis, const Quat& val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE) {node->Rotate(t,tmAxis,val,localOrigin,pivMode,ignoreLocks);}
|
---|
| 354 | void Scale(TimeValue t, const Matrix3& tmAxis, const Point3& val, BOOL localOrigin=FALSE, BOOL affectKids=TRUE, int pivMode=PIV_NONE, BOOL ignoreLocks=FALSE) {node->Scale(t,tmAxis,val,localOrigin,pivMode,ignoreLocks);}
|
---|
| 355 |
|
---|
| 356 | BOOL IsGroupMember() {return node->IsGroupMember();}
|
---|
| 357 | BOOL IsGroupHead() {return node->IsGroupHead();}
|
---|
| 358 |
|
---|
| 359 | RefResult NotifyRefChanged(Interval changeInt, RefTargetHandle hTarget,
|
---|
| 360 | PartID& partID, RefMessage message) {return REF_SUCCEED;}
|
---|
| 361 | };
|
---|
| 362 |
|
---|
| 363 |
|
---|
| 364 | #endif //__INODE__H
|
---|