# OgreBillboard.h

Go to the documentation of this file.

    00001 /*
    00002 -----------------------------------------------------------------------------
    00003 This source file is part of OGRE
    00004     (Object-oriented Graphics Rendering Engine)
    00005 For the latest info, see http://www.ogre3d.org/
    00006
    00007 Copyright (c) 2000-2006 Torus Knot Software Ltd
    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 You may alternatively use this source under the terms of a specific version of
    00025 the OGRE Unrestricted License provided you have obtained such a license from
    00026 Torus Knot Software Ltd.
    00027 -----------------------------------------------------------------------------
    00028 */
    00029
    00030 #ifndef __Billboard_H__
    00031 #define __Billboard_H__
    00032
    00033 #include "OgrePrerequisites.h"
    00034
    00035 #include "OgreVector3.h"
    00036 #include "OgreColourValue.h"
    00037 #include "OgreCommon.h"
    00038
    00039 namespace Ogre {
    00040
    00061     class _OgreExport Billboard : public FXAlloc
    00062     {
    00063         friend class BillboardSet;
    00064         friend class BillboardParticleRenderer;
    00065     protected:
    00066         bool mOwnDimensions;
    00067         bool mUseTexcoordRect;
    00068         uint16 mTexcoordIndex;      // index into the BillboardSet array of texture coordinates
    00069         FloatRect mTexcoordRect;    // individual texture coordinates
    00070         Real mWidth;
    00071         Real mHeight;
    00072     public:
    00073         // Note the intentional public access to main internal variables used at runtime
    00074         // Forcing access via get/set would be too costly for 000's of billboards
    00075         Vector3 mPosition;
    00076         // Normalised direction vector
    00077         Vector3 mDirection;
    00078         BillboardSet* mParentSet;
    00079         ColourValue mColour;
    00080         Radian mRotation;
    00081
    00084         Billboard();
    00085
    00088         ~Billboard();
    00089
    00092         Billboard(const Vector3& position, BillboardSet* owner, const ColourValue& colour = ColourValue::White);
    00093
    00098         const Radian& getRotation(void) const { return mRotation; }
    00099
    00104         void setRotation(const Radian& rotation);
    00105
    00111         void setPosition(const Vector3& position);
    00112
    00118         void setPosition(Real x, Real y, Real z);
    00119
    00125         const Vector3& getPosition(void) const;
    00126
    00134         void setDimensions(Real width, Real height);
    00135
    00137         void resetDimensions(void) { mOwnDimensions = false; }
    00144         void setColour(const ColourValue& colour);
    00145
    00148         const ColourValue& getColour(void) const;
    00149
    00155         bool hasOwnDimensions(void) const;
    00156
    00158         Real getOwnWidth(void) const;
    00159
    00161         Real getOwnHeight(void) const;
    00162
    00165         void _notifyOwner(BillboardSet* owner);
    00166
    00176         bool isUseTexcoordRect(void) const { return mUseTexcoordRect; }
    00177
    00185         void setTexcoordIndex(uint16 texcoordIndex);
    00186
    00192         uint16 getTexcoordIndex(void) const { return mTexcoordIndex; }
    00193
    00199         void setTexcoordRect(const FloatRect& texcoordRect);
    00200
    00206         void setTexcoordRect(Real u0, Real v0, Real u1, Real v1);
    00207
    00212         const FloatRect& getTexcoordRect(void) const { return mTexcoordRect; }
    00213     };
    00214
    00215 }
    00216
    00217 #endif

Copyright © 2008 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Dec 27 17:31:04 2009