00001 #include "lugre_RobRenderableOverlay.h" 00002 #include <OgreOverlayElementFactory.h> 00003 #include <OgreOverlayManager.h> 00004 #include <math.h> 00005 00006 00007 using namespace Ogre; 00008 00009 00010 00011 namespace Lugre { 00012 00013 String cRobRenderableOverlay::msTypeName = "RobRenderableOverlay"; 00014 00015 // ***** ***** ***** ***** ***** Factory 00016 00017 00018 00020 class /*_OgreExport*/ cRobRenderableOverlayElementFactory: public OverlayElementFactory { public: 00022 OverlayElement* createOverlayElement(const String& instanceName) { 00023 return new cRobRenderableOverlay(instanceName); 00024 } 00026 const String& getTypeName(void) const { 00027 return cRobRenderableOverlay::msTypeName; 00028 } 00029 }; 00030 00031 //SiENcE 00032 void cRobRenderableOverlay::RegisterFactory () { 00033 OverlayManager::getSingleton().addOverlayElementFactory(new cRobRenderableOverlayElementFactory()); 00034 } 00035 00036 00037 // ***** ***** ***** ***** ***** cRobRenderableOverlay 00038 00039 cRobRenderableOverlay::cRobRenderableOverlay(const Ogre::String& name) : 00040 cRobRenderOp(&mRenderOp), OverlayContainer(name), mTransparent(false) 00041 { 00042 // default to pixel coords 00043 setMetricsMode(GMM_PIXELS); 00044 } 00045 00046 cRobRenderableOverlay::~cRobRenderableOverlay() { 00047 delete mRenderOp.vertexData; mRenderOp.vertexData = 0; 00048 delete mRenderOp.indexData; mRenderOp.indexData = 0; 00049 } 00050 00052 void cRobRenderableOverlay::initialise(void) { 00053 OverlayContainer::initialise(); 00054 mInitialised = true; 00055 } 00056 00057 //--------------------------------------------------------------------- 00058 void cRobRenderableOverlay::setTransparent(bool isTransparent) 00059 { 00060 mTransparent = isTransparent; 00061 } 00062 00063 //--------------------------------------------------------------------- 00064 bool cRobRenderableOverlay::isTransparent(void) const 00065 { 00066 return mTransparent; 00067 } 00068 00070 const String& cRobRenderableOverlay::getTypeName(void) const { 00071 return msTypeName; 00072 } 00073 00075 void cRobRenderableOverlay::getRenderOperation(RenderOperation& op) { 00076 op = mRenderOp; 00077 } 00078 00080 void cRobRenderableOverlay::setMaterialName(const String& matName) { 00081 OverlayContainer::setMaterialName(matName); 00082 } 00083 00085 void cRobRenderableOverlay::_updateRenderQueue(RenderQueue* queue) { 00086 if (mVisible) { 00087 if (!mTransparent && !mpMaterial.isNull()) { 00088 OverlayElement::_updateRenderQueue(queue); 00089 } 00090 // Also add children 00091 ChildIterator it = getChildIterator(); 00092 while (it.hasMoreElements()) { 00093 // Give children ZOrder 1 higher than this 00094 it.getNext()->_updateRenderQueue(queue); 00095 } 00096 } 00097 } 00098 00100 void cRobRenderableOverlay::updatePositionGeometry(void) {} 00101 00103 void cRobRenderableOverlay::updateTextureGeometry(void) {} 00104 00106 void cRobRenderableOverlay::addBaseParameters(void) { OverlayContainer::addBaseParameters(); } 00107 00108 };
1.5.6