📄 gnode.h
字号:
//--------------------------------------------------
// Desc: Game Object Node
// Date: 2007.3.12 /update
// Author: artsylee
//
// Copyright (C) 2007 artsylee
//
//--------------------------------------------------
#ifndef _GNODE_
#define _GNODE_
#include <vector>
#include <d3d9.h>
#include <d3dx9.h>
enum Node_Type
{
NT_DEFAULT = 0,
NT_MS3D_MODEL,
NT_X_MODEL,
NT_X_SKIN_MODEL,
NT_WATER,
NT_CAMERA,
};
class GNode
{
enum TransformSpace
{
TS_LOCAL,
TS_PARENT,
TS_WORLD
};
public:
GNode(void);
virtual ~GNode(void);
void GetWorldTransform(D3DXMATRIX *pMatWorld);
void SetPosition(const D3DXVECTOR3 &pos);
void GetPosition(D3DXVECTOR3 *pos);
void SetScale(const D3DXVECTOR3 &scale);
void GetScale(D3DXVECTOR3 *scale);
void SetRotate(const D3DXVECTOR3 &rotate);
void GetRotate(D3DXVECTOR3 *rotate);
void SetRotateX(float value);
float GetRotateX(void);
void SetRotateY(float value);
float GetRotateY(void);
void SetRotateZ(float value);
float GetRotateZ(void);
void SetName(const char *pName);
void GetName(char *pName);
int GetNodeType(void);
char*GetNodeTypeString(void);
D3DXVECTOR3 GetDerivedPos(void);
D3DXMATRIX GetDerivedOrientation(void);
D3DXVECTOR3 GetDerivedScale(void);
void Translate(const D3DXVECTOR3 &d, TransformSpace relativeTo = TS_PARENT);
// void Rotate(const D3DXVECTOR3 &axis, float angle, TransformSpace relativeTo = TS_LOCAL);
void UpdateFromParent();
void Update();
void AddChildNode(GNode *pChild);
void RemoveChildNode(GNode *pChild);
//设置父矩阵
void SetParentMatrix(const D3DXMATRIX &mat);
D3DXMATRIX GetParentMaxtrix();
void UseParentMatrix(bool bIsUse);
bool IsUseParentMatrix(void);
//是否从父类继承旋转
void SetRotateFromParent(bool bRotateFromParent);
//是否从父类继承缩放
void SetScaleFromParent(bool bScaleFromParent);
// 显示节点的坐标系
void DrawCoordinates(void);
protected:
void SetNodeType(int type);
private:
void NeedUpdate();
protected:
// 相对于父类的方向, 缩放, 位置
D3DXMATRIX m_Orientation;
D3DXVECTOR3 m_vRotate;
D3DXVECTOR3 m_vScale;
D3DXVECTOR3 m_vPos;
bool m_bUpdateFromParent;
bool m_bRotateFromParent;
bool m_bScaleFromParent;
D3DXMATRIX m_CachedWorldTrans;
bool m_bCachedOutOfDate;
char m_szName[256];
int m_NodeType;
GNode *m_pParent;
std::vector<GNode*> m_Children;
protected:
D3DXVECTOR3 m_vDerivedPos;
D3DXMATRIX m_DerivedOrientation;
D3DXVECTOR3 m_vDerivedScale;
bool m_bIsUseParentMatrix;
D3DXMATRIX m_ParentMatrix;
};
#endif // _GNODE_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -