📄 inode.h
字号:
// Some node IK params
virtual float GetPosTaskWeight() {return 1.0f;}
virtual float GetRotTaskWeight() {return 1.0f;}
virtual void SetPosTaskWeight(float w) {}
virtual void SetRotTaskWeight(float w) {}
virtual BOOL GetTaskAxisState(int which,int axis) {return TRUE;} // which==0:pos which==1:rot
virtual void SetTaskAxisState(int which,int axis,BOOL onOff) {}
virtual DWORD GetTaskAxisStateBits() {return 127;}
// Access to WSM Derived object. Note that there is at most one
// WSM derived object per node. Calling CreateWSMDerivedObject()
// will create a WSM derived object for the node if one doesn't
// already exist.
virtual void CreateWSMDerivedObject() {}
virtual IDerivedObject *GetWSMDerivedObject() {return NULL;}
// Scene XRef related methods. These methods are only implemented by root nodes.
// Scene XRefs are stored as complete scenes with root nodes where the XRef scene root
// node is a child of the current scene's root node.
virtual TSTR GetXRefFileName(int i) {return TSTR();}
virtual void SetXRefFileName(int i,TCHAR *fname,BOOL reload) {}
virtual int GetXRefFileCount() {return 0;}
virtual BOOL AddNewXRefFile(TSTR &name, BOOL loadNow=TRUE) {return FALSE;}
virtual BOOL DeleteXRefFile(int i) {return FALSE;} // removes scene xref
virtual BOOL BindXRefFile(int i) {return FALSE;} // Deletes the xref after merging it into the scene
virtual void DeleteAllXRefs() {} // Called when loading a new file, reseting or clearing the scene
virtual BOOL ReloadXRef(int i) {return FALSE;}
virtual void FlagXrefChanged(int i) {}
virtual BOOL UpdateChangedXRefs(BOOL redraw=TRUE) {return FALSE;}
virtual INode *GetXRefTree(int i) {return NULL;}
virtual INode *GetXRefParent(int i) {return NULL;}
virtual void SetXRefParent(int i, INode *par) {}
virtual BOOL FindUnresolvedXRefs(Tab<TSTR*> &fnames) {return FALSE;} // Returns TRUE if there are still unresolved refs
virtual void AttemptToResolveUnresolvedXRefs() {} // Try to load any refs that are currently unresolved
virtual DWORD GetXRefFlags(int i) {return 0;}
virtual void SetXRefFlags(int i,DWORD flag,BOOL onOff) {}
};
// Xref flag bits
#define XREF_UPDATE_AUTO (1<<0)
#define XREF_BOX_DISP (1<<1)
#define XREF_HIDDEN (1<<2)
#define XREF_DISABLED (1<<3)
#define XREF_IGNORE_LIGHTS (1<<4)
#define XREF_IGNORE_CAMERAS (1<<5)
#define XREF_IGNORE_SHAPES (1<<6)
#define XREF_IGNORE_HELPERS (1<<7)
#define XREF_IGNORE_ANIM (1<<8)
#define XREF_FILE_CHANGE (1<<10) // This bit is set when a change notification is sent indicating that the file may have changed. We don't know for sure if the file actually changed but the ref should be reloaded.
#define XREF_LOAD_ERROR (1<<11) // This bit will be set when a ref can't be resolved
// Transform lock types
#define INODE_LOCKPOS 0
#define INODE_LOCKROT 1
#define INODE_LOCKSCL 2
// Transform lock axis
#define INODE_LOCK_X 0
#define INODE_LOCK_Y 1
#define INODE_LOCK_Z 2
// Derive a class from this class, implementing the callback.
class ITreeEnumProc {
public:
virtual int callback( INode *node )=0;
};
// Return values for the TreeEnum callback:
#define TREE_CONTINUE 0 // Continue enumerating
#define TREE_IGNORECHILDREN 1 // Don't enumerate children, but continue
#define TREE_ABORT 2 // Stop enumerating
// Node properties:
#define PROPID_PINNODE PROPID_USER+1 // Returns a pointer to the node this node is pinned to
#define PROPID_PRECEDENCE PROPID_USER+2 // Returns an integer representing this node's precedence
#define PROPID_RELPOS PROPID_USER+3 // Returns a pointer to the relative vector between the node and its pin
#define PROPID_RELROT PROPID_USER+4 // Returns a pointer to the relative quaternion between the node and its pin
class INodeTransformed;
// INodeTransformed can be allocated on the stack, but if you need
// to create one dynamically, use these methods.
CoreExport void DeleteINodeTransformed(INodeTransformed *n);
CoreExport INodeTransformed *CreateINodeTransformed(INode *n,Matrix3 tm,BOOL dm=TRUE);
// This class provides a layer that will add in a transformation to the
// node's objectTM.
//
// Most methods pass through to the inode, except for the objectTM methods
// which pre-multiply in the given matrix.
//
class INodeTransformed : public INode {
public:
INode *node;
Matrix3 tm;
BOOL deleteMe;
INodeTransformed(INode *n,Matrix3 tm,BOOL dm=TRUE) {node = n;this->tm = tm;deleteMe = dm;}
void DisposeTemporary() {node->DisposeTemporary(); if (deleteMe) DeleteINodeTransformed(this);}
INode *GetActualINode() {return node->GetActualINode();}
TCHAR* GetName() {return node->GetName();}
void SetName(TCHAR *s) {node->SetName(s);}
Matrix3 GetNodeTM(TimeValue t, Interval* valid=NULL) {return node->GetNodeTM(t,valid);}
void SetNodeTM(TimeValue t, Matrix3& tm) {node->SetNodeTM(t,tm);}
void InvalidateTreeTM() {node->InvalidateTreeTM();}
void InvalidateTM() {node->InvalidateTM();}
void InvalidateWS() {node->InvalidateWS();}
Matrix3 GetObjectTM(TimeValue time, Interval* valid=NULL) {return tm*node->GetObjectTM(time,valid);}
Matrix3 GetObjTMBeforeWSM(TimeValue time, Interval* valid=NULL) {return tm*node->GetObjTMBeforeWSM(time,valid);}
Matrix3 GetObjTMAfterWSM(TimeValue time, Interval* valid=NULL) {return tm*node->GetObjTMAfterWSM(time,valid);}
const ObjectState& EvalWorldState(TimeValue time,BOOL evalHidden=TRUE) {return node->EvalWorldState(time,evalHidden);}
INode* GetParentNode() {return node->GetParentNode();}
void AttachChild(INode* node, int keepPos=1) {node->AttachChild(node,keepPos);}
void Detach(TimeValue t, int keepPos=1) {node->Detach(t,keepPos);}
int NumberOfChildren() {return node->NumberOfChildren();}
INode* GetChildNode(int i) {return node->GetChildNode(i);}
void Delete(TimeValue t, int keepChildPosition) { node->Delete(t,keepChildPosition); }
void Hide(BOOL onOff) {node->Hide(onOff);}
int IsHidden(DWORD hflags=0,BOOL forRenderer=FALSE) {return node->IsHidden(hflags,forRenderer);}
int IsNodeHidden(BOOL forRenderer=FALSE) { return node->IsNodeHidden(forRenderer); }
void Freeze(BOOL onOff) {node->Freeze(onOff);}
int IsFrozen() {return node->IsFrozen();}
void XRayMtl(BOOL onOff) {node->XRayMtl(onOff);}
int HasXRayMtl() {return node->HasXRayMtl();}
void IgnoreExtents(BOOL onOff) {node->IgnoreExtents(onOff);}
int GetIgnoreExtents() {return node->GetIgnoreExtents();}
void BoxMode(BOOL onOff) {node->BoxMode(onOff);}
int GetBoxMode() {return node->GetBoxMode();}
void AllEdges(BOOL onOff) {node->AllEdges(onOff);}
int GetAllEdges() {return node->GetAllEdges();}
void BackCull(BOOL onOff) {node->BackCull(onOff);}
int GetBackCull() {return node->GetBackCull();}
void SetCastShadows(BOOL onOff) { node->SetCastShadows(onOff); }
int CastShadows() { return node->CastShadows(); }
void SetRcvShadows(BOOL onOff) { node->SetRcvShadows(onOff); }
int RcvShadows() { return node->RcvShadows(); }
void SetGenerateCaustics(BOOL onOff) { node->SetGenerateCaustics(onOff); }
int GenerateCaustics() { return node->GenerateCaustics(); }
void SetRcvCaustics(BOOL onOff) { node->SetRcvCaustics(onOff); }
int RcvCaustics() { return node->RcvCaustics(); }
void SetGenerateGlobalIllum(BOOL onOff) { node->SetGenerateGlobalIllum(onOff); }
int GenerateGlobalIllum() { return node->GenerateGlobalIllum(); }
void SetRcvGlobalIllum(BOOL onOff) { node->SetRcvGlobalIllum(onOff); }
int RcvGlobalIllum() { return node->RcvGlobalIllum(); }
void SetMotBlur(BOOL onOff) { node->SetMotBlur(onOff); }
int MotBlur() { return node->MotBlur(); }
float GetImageBlurMultiplier(TimeValue t) { return node->GetImageBlurMultiplier(t);}
void SetImageBlurMultiplier(TimeValue t, float m) {node->SetImageBlurMultiplier(t,m); };
void SetImageBlurMultController(Control *cont){ node->SetImageBlurMultController(cont); }
Control *GetImageBlurMultController() {return node->GetImageBlurMultController(); }
// Object motion blur enable controller. This affects only object motion blur
BOOL GetMotBlurOnOff(TimeValue t) { return node->GetMotBlurOnOff(t); }
void SetMotBlurOnOff(TimeValue t, BOOL m) { node->SetMotBlurOnOff(t,m); }
Control *GetMotBlurOnOffController() { return node->GetMotBlurOnOffController();}
void SetMotBlurOnOffController(Control *cont) { node->SetMotBlurOnOffController(cont);}
void SetRenderable(BOOL onOff) { node->SetRenderable(onOff); }
int Renderable() { return node->Renderable(); }
void ShowBone(int boneVis) {node->ShowBone(boneVis);}
void BoneAsLine(int onOff) {node->BoneAsLine(onOff);}
BOOL IsBoneShowing() {return node->IsBoneShowing();}
BOOL IsBoneOnly() { return node->IsBoneOnly(); }
DWORD GetWireColor() {return node->GetWireColor();}
void SetWireColor(DWORD newcol) {node->SetWireColor(newcol);}
int IsRootNode() {return node->IsRootNode();}
int Selected() {return node->Selected();}
int Dependent() {return node->Dependent();}
int IsTarget() {return node->IsTarget();}
void SetIsTarget(BOOL b) { node->SetIsTarget(b);}
BOOL GetTransformLock(int type, int axis) {return node->GetTransformLock(type,axis);}
void SetTransformLock(int type, int axis, BOOL onOff) {node->SetTransformLock(type,axis,onOff);}
INode* GetTarget() {return node->GetTarget();}
INode* GetLookatNode() {return node->GetLookatNode();}
Matrix3 GetParentTM(TimeValue t) {return node->GetParentTM(t);}
int GetTargetTM(TimeValue t, Matrix3& m) {return node->GetTargetTM(t,m);}
Object* GetObjectRef() {return node->GetObjectRef();}
void SetObjectRef(Object *o) {node->SetObjectRef(o);}
Object* GetObjOrWSMRef() { return node->GetObjOrWSMRef();}
Control* GetTMController() {return node->GetTMController();}
void SetTMController(Control *m3cont) {node->SetTMController(m3cont);}
Control *GetVisController() {return node->GetVisController();}
void SetVisController(Control *cont) {node->SetVisController(cont);}
float GetVisibility(TimeValue t,Interval *valid=NULL) {return node->GetVisibility(t,valid);}
void SetVisibility(TimeValue t,float vis) { node->SetVisibility(t,vis); }
float GetLocalVisibility(TimeValue t,Interval *valid) { return node->GetLocalVisibility(t,valid); }
BOOL GetInheritVisibility() { return node->GetInheritVisibility(); }
void SetInheritVisibility(BOOL onOff) { node->SetInheritVisibility(onOff); }
virtual void SetRenderOccluded(BOOL onOff) { node->SetRenderOccluded(onOff); }
virtual BOOL GetRenderOccluded(){ return node->GetRenderOccluded(); }
Mtl *GetMtl() { return node->GetMtl(); }
void SetMtl(Mtl* matl) { node->SetMtl(matl); }
Material* Mtls() { return node->Mtls(); }
int NumMtls() { return node->NumMtls(); }
RenderData *GetRenderData() {return node->GetRenderData();}
void SetRenderData(RenderData *rd) {node->SetRenderData(rd);}
void SetObjOffsetPos(Point3 p) {node->SetObjOffsetPos(p);}
Point3 GetObjOffsetPos() {return node->GetObjOffsetPos();}
void SetObjOffsetRot(Quat q) {node->SetObjOffsetRot(q);}
Quat GetObjOffsetRot() {return node->GetObjOffsetRot();}
void FlagForeground(TimeValue t,BOOL notify=TRUE) {node->FlagForeground(t,notify);}
int IsActiveGrid() {return node->IsActiveGrid();}
void SetNodeLong(LONG l) {node->SetNodeLong(l);}
LONG GetNodeLong() {return node->GetNodeLong();}
void GetUserPropBuffer(TSTR &buf) {node->GetUserPropBuffer(buf);}
void SetUserPropBuffer(const TSTR &buf) {node->SetUserPropBuffer(buf);}
BOOL GetUserPropString(const TSTR &key,TSTR &string) {return node->GetUserPropString(key,string);}
BOOL GetUserPropInt(const TSTR &key,int &val) {return node->GetUserPropInt(key,val);}
BOOL GetUserPropFloat(const TSTR &key,float &val) {return node->GetUserPropFloat(key,val);}
BOOL GetUserPropBool(const TSTR &key,BOOL &b) {return node->GetUserPropBool(key,b);}
void SetUserPropString(const TSTR &key,const TSTR &string) {node->SetUserPropString(key,string);}
void SetUserPropInt(const TSTR &key,int val) {node->SetUserPropInt(key,val);}
void SetUserPropFloat(const TSTR &key,float val) {node->SetUserPropFloat(key,val);}
void SetUserPropBool(const TSTR &key,BOOL b) {node->SetUserPropBool(key,b);}
BOOL UserPropExists(const TSTR &key) {return node->UserPropExists(key);}
ULONG GetGBufID() { return node->GetGBufID(); }
void SetGBufID(ULONG id) { node->SetGBufID(id); }
UWORD GetRenderID() { return node->GetRenderID(); }
void SetRenderID(UWORD id) { node->SetRenderID(id); }
CoreExport void SetObjOffsetScale(ScaleValue sv);
CoreExport ScaleValue GetObjOffsetScale();
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);}
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);}
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);}
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);}
BOOL IsGroupMember() {return node->IsGroupMember();}
BOOL IsGroupHead() { return node->IsGroupHead();}
BOOL IsOpenGroupMember(){return node->IsOpenGroupMember();}
BOOL IsOpenGroupHead(){return node->IsOpenGroupHead();}
void SetGroupMember(BOOL b) { node->SetGroupMember(b); }
void SetGroupHead(BOOL b) { node->SetGroupHead(b); }
void SetGroupMemberOpen(BOOL b) { node->SetGroupMemberOpen(b); }
void SetGroupHeadOpen(BOOL b) { node->SetGroupHeadOpen(b); }
RefResult NotifyRefChanged(Interval changeInt, RefTargetHandle hTarget,
PartID& partID, RefMessage message) {return REF_SUCCEED;}
};
#endif //__INODE__H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -