# OgreRenderQueueInvocation.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-2005 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 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 #ifndef __RenderQueueInvocation_H__
    00030 #define __RenderQueueInvocation_H__
    00031
    00032 #include "OgrePrerequisites.h"
    00033 #include "OgreRenderQueueSortingGrouping.h"
    00034 #include "OgreIteratorWrappers.h"
    00035
    00036 namespace Ogre {
    00037
    00061     class _OgreExport RenderQueueInvocation : public RenderQueueAlloc
    00062     {
    00063     protected:
    00065         uint8 mRenderQueueGroupID;
    00067         String mInvocationName;
    00069         QueuedRenderableCollection::OrganisationMode mSolidsOrganisation;
    00071         bool mSuppressShadows;
    00073         bool mSuppressRenderStateChanges;
    00074     public:
    00080         RenderQueueInvocation(uint8 renderQueueGroupID,
    00081             const String& invocationName = StringUtil::BLANK);
    00082         virtual ~RenderQueueInvocation();
    00083
    00085         virtual uint8 getRenderQueueGroupID(void) const { return mRenderQueueGroupID; }
    00086
    00088         virtual const String& getInvocationName(void) const { return mInvocationName; }
    00089
    00093         virtual void setSolidsOrganisation(
    00094             QueuedRenderableCollection::OrganisationMode org)
    00095         { mSolidsOrganisation = org; }
    00096
    00100         virtual QueuedRenderableCollection::OrganisationMode
    00101             getSolidsOrganisation(void) const { return mSolidsOrganisation; }
    00102
    00108         virtual void setSuppressShadows(bool suppress)
    00109         { mSuppressShadows =  suppress; }
    00110
    00113         virtual bool getSuppressShadows(void) const { return mSuppressShadows; }
    00114
    00135         virtual void setSuppressRenderStateChanges(bool suppress)
    00136         { mSuppressRenderStateChanges =  suppress; }
    00137
    00140         virtual bool getSuppressRenderStateChanges(void) const { return mSuppressRenderStateChanges; }
    00141
    00147         virtual void invoke(RenderQueueGroup* group, SceneManager* targetSceneManager);
    00148
    00150         static String RENDER_QUEUE_INVOCATION_SHADOWS;
    00151     };
    00152
    00153
    00155     typedef std::vector<RenderQueueInvocation*> RenderQueueInvocationList;
    00156     typedef VectorIterator<RenderQueueInvocationList> RenderQueueInvocationIterator;
    00157
    00168     class _OgreExport RenderQueueInvocationSequence : public RenderQueueAlloc
    00169     {
    00170     protected:
    00171         String mName;
    00172         RenderQueueInvocationList mInvocations;
    00173     public:
    00174         RenderQueueInvocationSequence(const String& name);
    00175         virtual ~RenderQueueInvocationSequence();
    00176
    00178         const String& getName(void) const { return mName; }
    00179
    00186         RenderQueueInvocation* add(uint8 renderQueueGroupID,
    00187             const String& invocationName);
    00188
    00195         void add(RenderQueueInvocation* i);
    00196
    00198         size_t size(void) const { return mInvocations.size(); }
    00199
    00201         void clear(void);
    00202
    00204         RenderQueueInvocation* get(size_t index);
    00205
    00207         void remove(size_t index);
    00208
    00210         RenderQueueInvocationIterator iterator(void);
    00211
    00212
    00213     };
    00214
    00215 }
    00216
    00217 #endif
    00218

Copyright © 2008 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sat Apr 11 13:46:42 2009