OgreRibbonTrail.h
Go to the documentation of this file.
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4(Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2013 Torus Knot Software Ltd
8
9Permission is hereby granted, free of charge, to any person obtaining a copy
10of this software and associated documentation files (the "Software"), to deal
11in the Software without restriction, including without limitation the rights
12to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13copies of the Software, and to permit persons to whom the Software is
14furnished to do so, subject to the following conditions:
15
16The above copyright notice and this permission notice shall be included in
17all copies or substantial portions of the Software.
18
19THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25THE SOFTWARE.
26-----------------------------------------------------------------------------
27*/
28
29#ifndef __RibbonTrail_H__
30#define __RibbonTrail_H__
31
32#include "OgrePrerequisites.h"
33
34#include "OgreBillboardChain.h"
35#include "OgreNode.h"
37#include "OgreFrameListener.h"
39#include "OgreHeaderPrefix.h"
40
41namespace Ogre {
42
72 {
73 public:
83 RibbonTrail(const String& name, size_t maxElements = 20, size_t numberOfChains = 1,
84 bool useTextureCoords = true, bool useVertexColours = true);
86 virtual ~RibbonTrail();
87
90
94 virtual void addNode(Node* n);
96 virtual void removeNode(Node* n);
98 virtual NodeIterator getNodeIterator(void) const;
100 virtual size_t getChainIndexForNode(const Node* n);
101
108 virtual void setTrailLength(Real len);
110 virtual Real getTrailLength(void) const { return mTrailLength; }
111
113 void setMaxChainElements(size_t maxElements);
115 void setNumberOfChains(size_t numChains);
117 void clearChain(size_t chainIndex);
118
125 virtual void setInitialColour(size_t chainIndex, const ColourValue& col);
132 virtual void setInitialColour(size_t chainIndex, Real r, Real g, Real b, Real a = 1.0);
134 virtual const ColourValue& getInitialColour(size_t chainIndex) const;
135
140 virtual void setColourChange(size_t chainIndex, const ColourValue& valuePerSecond);
141
146 virtual void setInitialWidth(size_t chainIndex, Real width);
148 virtual Real getInitialWidth(size_t chainIndex) const;
149
154 virtual void setWidthChange(size_t chainIndex, Real widthDeltaPerSecond);
156 virtual Real getWidthChange(size_t chainIndex) const;
157
162 virtual void setColourChange(size_t chainIndex, Real r, Real g, Real b, Real a);
163
165 virtual const ColourValue& getColourChange(size_t chainIndex) const;
166
168 void nodeUpdated(const Node* node);
170 void nodeDestroyed(const Node* node);
171
173 virtual void _timeUpdate(Real time);
174
176 const String& getMovableType(void) const;
177
178 protected:
185 // chains not in use
187
188 // fast lookup node->chain index
189 // we use positional map too because that can be useful
192
213
215 virtual void manageController(void);
217 virtual void updateTrail(size_t index, const Node* node);
219 virtual void resetTrail(size_t index, const Node* node);
221 virtual void resetAllTrails(void);
222
223 };
224
225
228 {
229 protected:
231 public:
234
236
237 const String& getType(void) const;
239
240 };
244}
245
246#include "OgreHeaderSuffix.h"
247
248#endif
#define _OgreExport
Definition: OgrePlatform.h:257
Allows the rendering of a chain of connected billboards.
Class representing colour.
Concrete IteratorWrapper for const access to the underlying container.
Interface definition for a factory class which produces a certain kind of MovableObject,...
Abstract class defining a movable object in a scene.
Listener which gets called back on Node events.
Definition: OgreNode.h:85
Class representing a general-purpose node an articulated scene graph.
Definition: OgreNode.h:65
Factory object for creating RibbonTrail instances.
static String FACTORY_TYPE_NAME
const String & getType(void) const
Get the type of the object to be created.
MovableObject * createInstanceImpl(const String &name, const NameValuePairList *params)
Internal implementation of create method - must be overridden.
void destroyInstance(MovableObject *obj)
Destroy an instance of the object.
Subclass of BillboardChain which automatically leaves a trail behind one or more Node instances.
virtual void setTrailLength(Real len)
Set the length of the trail.
ControllerValueRealPtr mTimeControllerValue
controller value for hooking up frame time to fader
virtual Real getInitialWidth(size_t chainIndex) const
Get the starting ribbon width in world units.
ColourValueList mDeltaColour
fade amount per second
void nodeUpdated(const Node *node)
virtual void setInitialColour(size_t chainIndex, Real r, Real g, Real b, Real a=1.0)
Set the starting ribbon colour.
vector< Node * >::type NodeList
virtual void resetAllTrails(void)
Reset all tracked chains to initial state.
Real mTrailLength
Total length of trail in world units.
void nodeDestroyed(const Node *node)
vector< Real >::type RealList
void clearChain(size_t chainIndex)
Remove all elements of a given chain (but leave the chain intact).
virtual const ColourValue & getColourChange(size_t chainIndex) const
Get the per-second fading amount.
vector< size_t >::type IndexVector
Mapping of nodes to chain segments.
void setMaxChainElements(size_t maxElements)
Set the maximum number of chain elements per chain.
virtual const ColourValue & getInitialColour(size_t chainIndex) const
Get the starting ribbon colour.
RealList mDeltaWidth
Delta width of the ribbon.
RibbonTrail(const String &name, size_t maxElements=20, size_t numberOfChains=1, bool useTextureCoords=true, bool useVertexColours=true)
Constructor (don't use directly, use factory)
virtual Real getTrailLength(void) const
Get the length of the trail.
virtual void setWidthChange(size_t chainIndex, Real widthDeltaPerSecond)
Set the change in ribbon width per second.
ColourValueList mInitialColour
Initial colour of the ribbon.
NodeToChainSegmentMap mNodeToSegMap
virtual ~RibbonTrail()
destructor
const String & getMovableType(void) const
Overridden from MovableObject.
virtual void updateTrail(size_t index, const Node *node)
Node has changed position, update.
IndexVector mFreeChains
virtual void setInitialWidth(size_t chainIndex, Real width)
Set the starting ribbon width in world units.
virtual size_t getChainIndexForNode(const Node *n)
Get the chain index for a given Node being tracked.
virtual void removeNode(Node *n)
Remove tracking on a given node.
Controller< Real > * mFadeController
controller used to hook up frame time to fader
virtual NodeIterator getNodeIterator(void) const
Get an iterator over the nodes which are being tracked.
virtual void setColourChange(size_t chainIndex, const ColourValue &valuePerSecond)
Enables / disables fading the trail using colour.
virtual void setColourChange(size_t chainIndex, Real r, Real g, Real b, Real a)
Enables / disables fading the trail using colour.
vector< ColourValue >::type ColourValueList
ConstVectorIterator< NodeList > NodeIterator
virtual void manageController(void)
Manage updates to the time controller.
virtual void _timeUpdate(Real time)
Perform any fading / width delta required; internal method.
virtual void addNode(Node *n)
Add a node to be tracked.
void setNumberOfChains(size_t numChains)
Set the number of chain segments (this class can render multiple chains at once using the same materi...
Real mElemLength
length of each element
virtual void setInitialColour(size_t chainIndex, const ColourValue &col)
Set the starting ribbon colour for a given segment.
RealList mInitialWidth
Initial width of the ribbon.
map< constNode *, size_t >::type NodeToChainSegmentMap
virtual void resetTrail(size_t index, const Node *node)
Reset the tracked chain to initial state.
IndexVector mNodeToChainSegment
Ordered like mNodeList, contains chain index.
NodeList mNodeList
List of nodes being trailed.
Real mSquaredElemLength
Squared length of each element.
virtual Real getWidthChange(size_t chainIndex) const
Get the change in ribbon width per second.
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
Definition: OgreCommon.h:550
float Real
Software floating point type.
_StringBase String
std::map< K, V, P, A > type

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.