⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvinstnc.h

📁 Windows上的MUD客户端程序
💻 H
📖 第 1 页 / 共 3 页
字号:
		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 + -