00001 /* 00002 ----------------------------------------------------------------------------- 00003 This source file is part of OGRE 00004 (Object-oriented Graphics Rendering Engine) 00005 For the latest info, see http://ogre.sourceforge.net/ 00006 00007 Copyright © 2000-2002 The OGRE Team 00008 Also see acknowledgements in Readme.html 00009 00010 This program is free software; you can redistribute it and/or modify it under 00011 the terms of the GNU Lesser General Public License as published by the Free Software 00012 Foundation; either version 2 of the License, or (at your option) any later 00013 version. 00014 00015 This program is distributed in the hope that it will be useful, but WITHOUT 00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. 00018 00019 You should have received a copy of the GNU Lesser General Public License along with 00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple 00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to 00022 http://www.gnu.org/copyleft/lesser.txt. 00023 ----------------------------------------------------------------------------- 00024 */ 00025 #ifndef __SimpleRenderable_H__ 00026 #define __SimpleRenderable_H__ 00027 00028 #include "OgrePrerequisites.h" 00029 00030 #include "OgreMovableObject.h" 00031 #include "OgreRenderable.h" 00032 #include "OgreAxisAlignedBox.h" 00033 #include "OgreMaterial.h" 00034 00035 namespace Ogre { 00036 00037 class _OgreExport SimpleRenderable : public MovableObject, public Renderable 00038 { 00039 protected: 00040 RenderOperation mRendOp; 00041 Matrix4 m_matWorldTransform; 00042 AxisAlignedBox mBox; 00043 00044 String m_strMatName; 00045 Material *m_pMaterial; 00046 00047 Real *m_pVertexCache; 00048 ushort *m_pIndexCache; 00049 Real *m_pNormalCache; 00050 RGBA *m_pDiffuseCache; 00051 RGBA *m_pSpecularCache; 00052 Real *m_pTexCache[OGRE_MAX_TEXTURE_COORD_SETS]; 00053 00055 SceneManager *m_pParentSceneManager; 00056 00058 Camera *m_pCamera; 00059 00061 String m_strName; 00062 00064 static uint ms_uGenNameCount; 00065 00066 public: 00067 SimpleRenderable(); 00068 00069 Real **getVertexCache(); 00070 ushort **getIndexCache(); 00071 Real **getNormalCache(); 00072 RGBA **getDiffuseCache(); 00073 RGBA **getSpecularCache(); 00074 Real **getTexCoordCache( unsigned short cn ); 00075 00076 void setMaterial( const String& matName ); 00077 virtual Material* getMaterial(void) const; 00078 00079 virtual void setRenderOperation( const RenderOperation& rend ); 00080 virtual void getRenderOperation( RenderOperation& rend ); 00081 RenderOperation& getRenderOperation(); 00082 00083 void setWorldTransform( const Matrix4& xform ); 00084 virtual void getWorldTransforms( Matrix4* xform ); 00085 00086 virtual SceneNode* getParentNode(void); 00087 00088 virtual void _notifyAttached( SceneNode* parent ); 00089 virtual void _notifyCurrentCamera(Camera* cam); 00090 00091 void setBoundingBox( const AxisAlignedBox& box ); 00092 virtual const AxisAlignedBox& getBoundingBox(void) const; 00093 00094 virtual void _updateRenderQueue(RenderQueue* queue); 00095 00096 virtual ~SimpleRenderable(); 00097 00099 virtual const String& getName(void) const; 00100 00102 virtual const String getMovableType(void) const; 00103 00104 00105 }; 00106 } 00107 00108 #endif 00109
Copyright © 2002 by The OGRE Team