#pragma once #include "KPrimitive.h" class CTerrainCustomTexturePrimitive : public K3DPrimitive { public: CTerrainCustomTexturePrimitive(K3DVertexBuffer* pVertexBuffer,K3DIndexBuffer* pIndexBuffer, K3DVertex vtWorldTransform ) : m_pVB( pVertexBuffer ) , m_spIB( pIndexBuffer ) , m_bIsValid(false) { m_type = KPRIMITIVE_TERRAIN; //K3DMatrixIdentity( m_matWorldTransform ); //m_matWorldTransform.SetPosVector( vtWorldTransform ); m_RootMat.SetPosVector( vtWorldTransform ); } void SetValid( bool bIsValid ) { m_bIsValid = bIsValid; } bool IsValid() const { return m_bIsValid; } virtual void Render( KViewportObject *viewport, class K3DRenderDevice *dev, bool bUseAccum = true ) { //dev->SetTransform( K3DRenderDevice::TS_WORLD, &m_matWorldTransform ); dev->SetTransform( K3DRenderDevice::TS_WORLD, &m_RootMat ); dev->SetTexture( 2, NULL ); dev->SetTexture( 3, NULL ); dev->SetVertexShader(VTXDECLARATION_TERRAIN, TECHNIQUE_TERRAINSHADOW); dev->DrawIndexedTriangleVB_VS( m_pVB, m_spIB ); } protected: //K3DMatrix m_matWorldTransform; K3DVertexBuffer* m_pVB; // K3DVertexBufferSPtr m_spVB; K3DIndexBufferSPtr m_spIB; bool m_bIsValid; };