📄 cvinstnc.h
字号:
ChQvDirectionalLightInstance();
virtual ~ChQvDirectionalLightInstance() {}
#if defined(CH_USE_3DR)
virtual bool traverse(ChRenderContext *pContext);
#elif (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
virtual void Build(ChRenderContext *pContext);
#endif
protected:
};
class ChQvCameraInstance:public ChQvInstance
{
protected:
public:
ChQvCameraInstance();
virtual ~ChQvCameraInstance() {}
protected:
};
// Group Node types
class ChQvSeparatorInstance:public ChQvGroupInstance
{
protected:
public:
ChQvSeparatorInstance();
virtual ~ChQvSeparatorInstance() {}
protected:
};
class ChQvSpinGroupInstance:public ChQvGroupInstance
{
protected:
public:
ChQvSpinGroupInstance();
virtual ~ChQvSpinGroupInstance() {};
virtual ChQvGroupInstance *SetupTraversalState(ChQvState &state);
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
virtual void CreateFrame();
#endif
protected:
};
class ChQvTransformSeparatorInstance:public ChQvGroupInstance
{
protected:
public:
ChQvTransformSeparatorInstance();
virtual ~ChQvTransformSeparatorInstance() {}
protected:
};
class ChQvLODInstance:public ChQvGroupInstance
{
protected:
public:
ChQvLODInstance();
virtual ~ChQvLODInstance();
virtual bool Iterate(ChQvInstanceIterator *pIterator);
void SetUpKids(ChRenderContext* pContext);
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
void PickAChild();
virtual bool CanCollapse() {return false;};
#endif
bool ChQvLODInstance::Purge(int iChildToKeep /* = -1 */, int iHowMuch /* = 100 */);
protected:
int LookupChild(ChRenderContext * pContext);
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
int m_iCurrentChild;
ChNrFrame *m_pFrames;
#endif
};
class ChQvSwitchInstance:public ChQvGroupInstance
{
protected:
public:
ChQvSwitchInstance();
virtual ~ChQvSwitchInstance();
virtual bool Iterate(ChQvInstanceIterator *pIterator);
void SetUpKids(ChRenderContext* pContext);
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
void PickAChild();
void RemoveChildFrames();
#endif
int LookupChild();
protected:
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
int m_iCurrentChild;
ChNrFrame *m_pFrames;
#endif
};
class ChQvAnchorSensor;
class ChQvWWWAnchorInstance:public ChQvGroupInstance
{
protected:
public:
ChQvWWWAnchorInstance();
virtual ~ChQvWWWAnchorInstance();
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
//virtual bool Hittest(ChRenderContext *pRC, ChHittestIterator *pIterator);
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
ChQvAnchorSensor *GetSensor() { return m_pSensor;};
virtual bool CanCollapse() {return false;};
#endif
bool IsPointMap();
protected:
void UpdateSensor(ChRenderContext *pRC);
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
ChQvAnchorSensor *m_pSensor;
#endif
};
class ChQvWWWInlineInstance:public ChQvGroupInstance
{
protected:
public:
ChQvWWWInlineInstance();
virtual ~ChQvWWWInlineInstance() {}
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
virtual bool CanCollapse() {return false;};
#endif
virtual string& GetRelativeURL();
protected:
virtual bool ComputeBounds();
virtual void Init(ChQvBuildState *pState);
};
class ChQvIFSInstance:public ChQvShapeInstance
{
public:
ChQvIFSInstance();
virtual ~ChQvIFSInstance() {}
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
virtual bool CanCollapse() {return IsConstructed() && m_boolCanCollapse;};
#endif
protected:
bool IsConvex(int iFirstVertex, int iNumVerts);
bool m_boolCanCollapse;
virtual bool ComputeBounds();
};
class ChQvILSInstance:public ChQvShapeInstance
{
public:
ChQvILSInstance();
virtual ~ChQvILSInstance() {}
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
virtual bool SetTexture(ChQvTextureRenderData *pTextureData, ChNrMesh mesh = 0);
#endif
protected:
virtual bool ComputeBounds();
};
class ChQvSphereInstance:public ChQvShapeInstance
{
public:
ChQvSphereInstance();
virtual ~ChQvSphereInstance();
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
virtual bool Hittest(ChRenderContext *pRC, ChHittestIterator *pIterator);
virtual bool CollisionTest(ChRenderContext *pRC, ChCollisionIterator *pIterator);
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
virtual bool CanCollapse() {return false;}; // for auto lod'ing
virtual bool Reconstruct(ChRenderContext *pRC);
ChNrMesh BuildMesh(ChRenderContext *pRC, int iLevel);
bool PickASphere();
#endif
protected:
int GetLevel(ChRenderContext *pRC);
int GetLevel(ChRenderContext *pRC, ChRect &rtExtent, bool boolClipped);
virtual bool ComputeBounds();
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
ChNrMesh m_backMesh;
int m_iCurrentLevel;
int m_iBackLevel;
#if defined(CH_IMMED_MODE)
RLMaterial m_rlMaterial;
RLIMSurfaceInfo m_sInfo;
ChNrColorModel m_colorModel;
bool m_boolIsPrelit;
#endif
#endif
};
class ChQvCubeTextures;
class ChQvCubeInstance:public ChQvShapeInstance
{
protected:
public:
ChQvCubeInstance();
virtual ~ChQvCubeInstance() {}
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
protected:
virtual bool ComputeBounds();
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
void SetTextureCoordinates(ChQvCubeTextures *pTxMap, ChNrMesh mesh, ChNrFace face, int faceNum);
#endif
};
class ChQvConeTextures;
class ChQvConeInstance:public ChQvShapeInstance
{
public:
enum Parts { Sides = 0, Bottom = 1 };
protected:
public:
ChQvConeInstance();
virtual ~ChQvConeInstance() {}
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
protected:
virtual bool ComputeBounds();
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
void SetTextureCoordinates(ChQvConeTextures *pTxMap, ChNrMesh mesh, ChNrFace face,
Parts part, int facet = 0);
#endif
};
class ChQvCylinderTextures;
class ChQvCylinderInstance:public ChQvShapeInstance
{
public:
enum Parts { Sides = 0, Top = 1, Bottom = 2 };
protected:
public:
ChQvCylinderInstance();
virtual ~ChQvCylinderInstance() {}
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
protected:
virtual bool ComputeBounds();
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
void SetTextureCoordinates(ChQvCylinderTextures *pTxMap, ChNrMesh mesh, ChNrFace face,
Parts part, int facet = 0);
#endif
};
class ChAsciiCharCache;
class ChQvAsciiTextInstance:public ChQvShapeInstance
{
public:
ChQvAsciiTextInstance();
virtual ~ChQvAsciiTextInstance();
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
protected:
virtual bool ComputeBounds();
float GetTextWidth(HFONT hFont, int index);
float GetTextWidth(HFONT hFont, char * text);
float GetTextHeight();
float GetBaselineOffset();
HFONT CreateFont(int iAscent, float aspect = 0.); // very Windows-y
float GetFontLODHeight(ChRenderContext *pRC);
ChPtrList<ChAsciiCharCache> *m_pCache;
protected:
ChTextureHandle m_texture;
};
class ChQvPointSetInstance:public ChQvShapeInstance
{
protected:
public:
ChQvPointSetInstance();
virtual ~ChQvPointSetInstance() {}
virtual bool Draw(ChRenderContext *pRC, ChDrawIterator *pIterator);
virtual bool Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator);
protected:
virtual bool ComputeBounds();
};
// Derived Qv classes to handle instances
// This class is -only- used for transform classes as of now: TransformationIndex
class ChQvElement : public QvElement
{
public:
ChQvElement() : QvElement(), m_pInst(0) {};
virtual ~ChQvElement() {};
ChQvInstance *GetInstance() {return m_pInst;};
ChQvElement *SetInstance(ChQvInstance *pInst) {m_pInst = pInst; return this;};
protected:
ChQvInstance * m_pInst;
};
#endif // _CHINSTNC_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -