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

📄 sceneoctreerenderable.h

📁 使用stl技术,(还没看,是听说的)
💻 H
字号:
////////////////////////////////////////////////////////////////////////////////
// SceneOctreeRenderable.h
// Author     : Doug Wolanick
// Start Date : July 24, 2003
// Copyright  : (C) 2003 by Doug Wolanick
// Email      : Doug@IceTecStudios.com
////////////////////////////////////////////////////////////////////////////////

#ifndef _SCENE_OCTREE_RENDERABLE_H
#define _SCENE_OCTREE_RENDERABLE_H

#include <OgreRenderable.h>
#include <OgreMovableObject.h>
#include <OgreAxisAlignedBox.h>
#include <OgreString.h>
#include <OgreHardwareBufferManager.h>

#include <vector>

#define POSITION_BINDING 0
#define NORMAL_BINDING 1
#define TEXCOORD_BINDING 2
#define COLOUR_BINDING 3

using namespace Ogre;

class SceneOctreeRenderable : public Renderable, public MovableObject
{
public:

    SceneOctreeRenderable();
    ~SceneOctreeRenderable();
	
    void deleteGeometry();
    void init();


	void SetSharedGeomPtr( VertexData* NewSharedPtr );
	void AddVertices( int VertTotal, float* VertData );
	void AddNormals( int NormalTotal, float* NormalData );
	void AddColors( int ColorTotal, float* ColorData );
	void AddTexCoords( int TexCoordTotal, float* TexCoordData , int TexSet=0, int TotalTexSets=1);
	void AddIndices( int IndexTotal , unsigned short *IndexArray );
	void SetMaterialIndex( int NewIndex );

	int GetMaterialIndex();

    //movable object methods
    virtual const String& getName( void ) const
    {
        return mName;
    };

	void setName( String NewName )
	{
		mName = NewName;
	}

    virtual const String& getMovableType( void ) const
    {
        return mType;
    };

    const AxisAlignedBox& getBoundingBox( void ) const
    {
        return mBounds;
    };

	// Perhaps not used
    virtual void _notifyCurrentCamera( Camera* cam );

    virtual void _updateRenderQueue( RenderQueue* queue );

	//virtual void getLegacyRenderOperation( LegacyRenderOperation& rend );

	// Only 1 material per renderable
    virtual Material* getMaterial( void ) const
    {
        return mMaterial;
    };

    virtual void getWorldTransforms( Matrix4* xform ) const;

    virtual const Quaternion& getWorldOrientation(void) const;
    virtual const Vector3& getWorldPosition(void) const;

    /** @copydoc Renderable::getLights */
    const LightList& getLights(void) const;


    void setMaterial( Material *m )
    {
        mMaterial = m;
    };

	virtual void getRenderOperation( RenderOperation& rend );

    // Overridden //
    Real getSquaredViewDepth(const Camera* cam) const;

	/** Overridden from MovableObject */
    Real getBoundingRadius(void) const { return 0; /* not needed */ }


    static int mRenderedTris;

	float* GetVertexPtr( void ){
		return PhysVertData;
	}

	int* GetIndexPtr( void ){
		return PhysIndexData;
	}

	int GetNumVertex( void ){
		return mVertData->vertexCount;
	}

	int GetNumIndex( void ){
		return indexData->indexCount;
	}


protected:

	void SetupBoundingBox( unsigned short *IndexArray );

    AxisAlignedBox mBounds;
    Vector3 mCenter;
    Vector3 mScale;

    int mSize;
    int mWorldSize;

    String mName;
    String mType;

    int MaterialIndex;
	Material *mMaterial;

    bool mInit;

	//GeometryData mGeomData;
	VertexData* mVertData;
	IndexData* indexData;

	// Physics Geometry Data
	float* PhysVertData;
	int*  PhysIndexData;

    int mNearPlane;
    int mMaxPixelError;
    int mVertResolution;
    Real mTopCoord;

    bool mColored;
    bool mLit;

	int numOldVerts;
	int numIndices;
	//unsigned short *pIndices; 
};


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -