GL Studio C++ Runtime API
group.h
Go to the documentation of this file.
1 /*! \file
2  \brief The disti::Group class. Implements groups of objects.
3 
4  \par Copyright Information
5 
6  Copyright (c) 2017 by The DiSTI Corporation.<br>
7  11301 Corporate Blvd; Suite 100<br>
8  Orlando, Florida 32817<br>
9  USA<br>
10  <br>
11  All rights reserved.<br>
12 
13  This Software contains proprietary trade secrets of DiSTI and may not be
14 reproduced, in whole or part, in any form, or by any means of electronic,
15 mechanical, or otherwise, without the written permission of DiSTI. Said
16 permission may be derived through the purchase of applicable DiSTI product
17 licenses which detail the distribution rights of this content and any
18 Derivative Works based on this or other copyrighted DiSTI Software.
19 
20  NO WARRANTY. THE SOFTWARE IS PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND,
21 AND ANY USE OF THIS SOFTWARE PRODUCT IS AT YOUR OWN RISK. TO THE MAXIMUM EXTENT
22 PERMITTED BY APPLICABLE LAW, DISTI AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES
23 AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
24 IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND/OR FITNESS FOR A
25 PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE.
26 
27  LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW,
28 IN NO EVENT SHALL DISTI OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
29 INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION,
30 DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
31 INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
32 INABILITY TO USE THE SOFTWARE, EVEN IF DISTI HAS BEEN ADVISED OF THE POSSIBILITY
33 OF SUCH DAMAGES. DISTI'S ENTIRE LIABILITY AND YOUR EXCLUSIVE REMEDY SHALL NOT
34 EXCEED FIVE DOLLARS (US$5.00).
35 
36  The aforementioned terms and restrictions are governed by the laws of the
37 State of Florida and the United States of America.
38 
39 */
40 #ifndef INCLUDED_DISTI_GROUP_H
41 #define INCLUDED_DISTI_GROUP_H
42 
43 #include "display.h"
44 #include "dynamic_array.h"
45 #include "gls_cpp_lang_support.h"
46 
47 namespace disti
48 {
49 /**
50  * The Group class. Implements groups of objects
51  */
52 class Group : public DisplayObject
53 {
54 public:
55  typedef DisplayObject _BaseClass;
56 
57 private:
58  /** If true, this object will be eligible for culling based on its static extents.
59  * IMPORTANT: The cull will only be acturate within the STATIC extents of the group
60  * If any child moves outside the static extents using Dynamic operations, it will
61  * be over-culled.
62  * The default is false, and only leaf nodes (non-groups) will cull.
63  */
64  bool _performGroupCullCheck;
65 
66  /** If true, cull checking will pass on to children of this group.
67  * If false, children will not be culled (if this group is not culled) */
68  bool _cullTestChildren;
69 
70  DisplayObject* BestPick( const Vector& winLoc, const Vector& logicalCoords, float scale, const Vector& directionVector, Vector& collisionWinLoc /*Returned*/, const OpenGLMatrices& drawnMatrices );
71  DisplayObject* FirstPick( const Vector& winLoc, const Vector& logicalCoords, float scale, const Vector& directionVector, Vector& collisionWinLoc /*Returned*/, const OpenGLMatrices& drawnMatrices );
72 
73  virtual GLS_EXPORT void onVertexchanged( void );
74 
75  // GLS-8709 - There should be an attribute type that doesn't require a dummy setter and also does not write the GLS file.
76  void DummySetUnsignedInt( const unsigned int& ) {} // Used for making a read only property
77  Group& operator=( const Group& ) DISTI_SPECIAL_MEM_FUN_DELETE;
78  Group( const Group& that ) DISTI_SPECIAL_MEM_FUN_DELETE;
79 
80 protected:
81  DisplayObjectArray _objects; /** The objects contained in this group */
82 
83  /** Helper method for child classes of group that don't want to call Group::SetAvailableAttributes */
84  virtual GLS_EXPORT void AddAvailableAttributes( unsigned int availableAttributes );
85 
86  /** Grow bounding box to accomodate new object
87  * \param obj The new object in the group
88  * \pre obj Must already be added to the group
89  */
90  virtual GLS_EXPORT void GrowBoundingBox( DisplayObject* obj );
91 
92 public:
93  friend class GroupEditor;
94 
95 #ifndef GLES
96  /* See base class */
97  virtual GLS_EXPORT InterfaceListType* GetCppInterfaceDescription( InterfaceListType* addToThisList = NULL );
98 
99  /* See base class */
100  virtual GLS_EXPORT void GetCppInterfaceDescriptionFree( InterfaceListType* array );
101 #endif
102 
103  /** Finds a pointer to the display object in the group, using the object's
104  * instance name as a key.
105  * \note If there are multiple DisplayObjects within the group with the same name,
106  * only the first instance will be found. This can be an issue if a sub-component
107  * contains objects with the same name as the object you are searching for.
108  * \param name Instance name of the object to find
109  * \return A pointer to the object if it is in the group, otherwise NULL
110  */
111  GLS_EXPORT DisplayObject* FindByName( const char* name );
112 
113  /** Finds a pointer to the display object in the group, using the object's
114  * instance name as a key.
115  * This does not desend into components, as they are different frames
116  * with possibility for duplicate names as the current frame.
117  * \param name Instance name of the object to find
118  * \return A pointer to the object if it is in the group, otherwise NULL
119  */
120  virtual GLS_EXPORT DisplayObject* FindByNameSameFrame( const char* name );
121 
122  /** Finds a pointer to the display object in the group, using the object's
123  * instance name as a key.
124  * \param obj Pointer to the object to find
125  * \return A pointer to the object if it is in the group, otherwise NULL
126  */
128 
129  /** Finds a pointer to the DisplayObject in the group using a qualified instance name.
130  * This allows precise searches for an object contained within a sub-component.
131  * (e.g. "cockpit.altimeter.needle"). To find an object in the same DisplayFrame
132  * use just the instance name. (e.g. "cockpit")
133  * The dot denotes crossing of DisplayFrame boundaries.
134  * \sa GetQualifiedInstanceName
135  * \param name Qualified instance name of the object to find
136  * \returns A pointer to the object if it is in the group, otherwise NULL
137  */
138  GLS_EXPORT DisplayObject* FindByQualifiedName( const char* name );
139 
140  /** Finds a pointer to the display object in the group, using the object's address as a key
141  * \param obj Pointer to the object to find
142  * \return A pointer to the object if it is in the group, otherwise NULL
143  */
144  GLS_EXPORT DisplayObject* FindNonRecursive( DisplayObject* obj );
145 
146  /** Returns a reference to the object array for this group */
147  DisplayObjectArray& Objects() { return _objects; }
148 
149  /** Returns a const reference to the object array for this const group */
150  const DisplayObjectArray& Objects() const { return _objects; }
151 
152  /** Returns the DisplayObject at the given group index
153  * \param index The index of the object to find
154  * \return A pointer to the object if it is in the group, otherwise NULL
155  */
156  GLS_EXPORT DisplayObject* Item( unsigned int index );
157 
158  /** Returns whether or not this group should be considered for culling */
159  bool PerformGroupCullCheck( void ) const { return _performGroupCullCheck; }
160 
161  /** Sets whether or not this group should be considered for culling */
162  GLS_EXPORT void PerformGroupCullCheck( bool mode );
163 
164  /** Returns whether or not this group's children should be considered for culling */
165  bool CullTestChildren( void ) const { return _cullTestChildren; }
166 
167  /** Sets whether or not this group's children should be considered for culling */
168  GLS_EXPORT void CullTestChildren( bool mode );
169 
170  /** \return The number of objects in this group. (Non recursive count) */
171  unsigned int Count( void ) const { return _objects.Count(); }
172 
173  /** Overload of the array index operator to allow you to treat this Group as an array of objects */
174  DisplayObjectPtr operator[]( unsigned int index ) { return _objects[ index ]; }
175 
176  /** Overload of the array index operator to allow you to treat this const Group as an array of const objects */
177  const DisplayObject* operator[]( unsigned int index ) const { return _objects[ index ]; }
178 
179  /** \return pointer to the first element in the group, or NULL if it doesn't exist */
180  GLS_EXPORT DisplayObject* FirstObject();
181 
182  /** \return pointer to the last element in the group, or NULL if it doesn't exist */
183  GLS_EXPORT DisplayObject* LastObject( void );
184 
185  /** \return True if this group is empty */
186  bool IsEmpty() const { return ( Count() == 0 ); }
187 
188  /** Get the index position of the specified object in the list
189  * \param obj The object to find
190  * \return The index of the object in the list, -1 if it isn't in the list
191  */
192  GLS_EXPORT int Position( DisplayObject* obj );
193 
194  /** Construct a new group.
195  * \param generateInstance Whether or not to generate an instance name for this group
196  */
197  GLS_EXPORT explicit Group( int generateInstance = FALSE );
198 
199  /** Copy construct a new group, performing a "deep copy" by cloning objects in the group.
200  * \param group The group to clone.
201  * \param generateNames Whether or not to generate a new instance name for this group and its children.
202  */
203  GLS_EXPORT Group( const Group& group, bool generateNames );
204 
205  /** Sets the initial number of entries in a group
206  * \param cnt The initial number of entries
207  */
208  GLS_EXPORT void InitialGroupCount( unsigned int cnt );
209 
210  static GLS_EXPORT DisplayObject* CreateInstance();
211 
212  /** Destroy a group object */
213  virtual GLS_EXPORT ~Group();
214 
215  /** Actually delete all the children of the group.
216  * This does a recursive "delete" on all the children.
217  * This does NOT just remove them from the group.
218  */
219  virtual GLS_EXPORT void DeleteAllChildren();
220 
221  virtual GLS_EXPORT void SetAvailableAttributes( unsigned int value );
222 
223  /* See base class */
224  virtual GLS_EXPORT DisplayObject* CloneObject( bool generateNames = false );
225 
226  /* See base class */
227  virtual GLS_EXPORT void CopyGeometry( DisplayObject* src );
228 
229  /* See base class */
230  virtual GLS_EXPORT void CopyProperties( DisplayObject* src );
231 
232  /* See base class */
233  virtual GLS_EXPORT void Draw( void );
234 
235  /* See base class */
236  virtual GLS_EXPORT void PreDraw( const OpenGLMatrices& current, Culler& culler );
237 
238  /* See base class */
239  virtual GLS_EXPORT bool Hit( float x, float y, float z, float scale, const Vector& directionVector, Vector* collisionPoint );
240 
241  /* See base class */
242  virtual GLS_EXPORT DisplayObject* Pick3D( const Vector& winLoc,
243  const Vector& logicalCoords,
244  float scale,
245  const Vector& directionVector,
246  Vector& collisionWinLoc /*Returned*/,
247  const OpenGLMatrices& drawnMatrices );
248 
249  using _BaseClass::Parent;
250 
251  /* See base class */
252  virtual GLS_EXPORT void Parent( DisplayFrame* par );
253 
254  /* See base class */
255  GLS_EXPORT void SetPainter( GlsPainter* painter ) DISTI_METHOD_OVERRIDE;
256 
257  /* See base class */
258  virtual GLS_EXPORT void CalculateBoundingBox( void );
259 
260  /* Unhides base class implementation. */
261  using _BaseClass::Location;
262 
263  /* See base class */
264  virtual GLS_EXPORT void Location( const Vertex& v ) DISTI_METHOD_OVERRIDE;
265  virtual GLS_EXPORT void Location( float x, float y, float z );
266 
267  /* See base class */
268  virtual GLS_EXPORT void Translate( float x, float y, float z );
269 
270  /* See base class */
271  virtual GLS_EXPORT void Translate( float transAmount[] );
272 
273  /* See base class */
274  virtual GLS_EXPORT void TranslateVertices( float x, float y, float z );
275 
276  /* See base class */
277  virtual GLS_EXPORT void TranslateVertices( float transAmount[] );
278 
279  /* See base class */
280  virtual GLS_EXPORT void GetExtents( float& x, float& y, float& z, float& x1, float& y1, float& z1 );
281 
282  /* See base class */
283  virtual GLS_EXPORT void GetTransformedExtents( Vector& min, Vector& max, const GlsMatrixType& matrix, bool resetMinMax = true );
284 
285  /* Unhides base class implementation. */
286  using _BaseClass::Rotate;
287 
288  /* See base class */
289  virtual GLS_EXPORT void Rotate( const Vector& orig, float angle, const Vector& axis );
290 
291  /* Unhides base class implementation. */
292  using _BaseClass::Scale;
293 
294  /* See base class */
295  virtual GLS_EXPORT void Scale( const float scale_x, const float scale_y );
296 
297  /* See base class */
298  virtual GLS_EXPORT void Scale( float scale_x, float scale_y, float scale_z, Vertex* anchor = NULL, int handle = 0 );
299 
300  /** Adds the specified object into the group, at the end of the list
301  * \param obj A pointer to the object to add
302  * \param reparent Whether or not the object parent should be set to this group
303  * \param recalculateBoundingbox Whether or not to recalculate the bounding box
304  * \param loc Where to insert it (defaults to -1 which means at the end of the list)
305  */
306  virtual GLS_EXPORT void InsertObject( DisplayObject* obj, bool reparent = true, bool recalculateBoundingbox = true, int loc = -1 );
307 
308  /** Removes the specified object from this group. Does not delete it.
309  * \param obj The display object to removed
310  * \param recalculateBoundingbox
311  * \return True if the object was found and removed from this group
312  */
313  virtual GLS_EXPORT bool DeleteObject( DisplayObject* obj, bool recalculateBoundingbox = true );
314 
315  /** Change the draw order of a child object within this group
316  * \param oldIndex The old index of the object
317  * \param newIndex The new index of the object
318  * \pre oldIndex and newIndex must be valid indices
319  */
320  virtual GLS_EXPORT void ReorderObject( unsigned int oldIndex, unsigned int newIndex );
321 
322  /** Adds the specified object into the group, at the head of the list
323  * Treats the list like a stack, hence the name Push
324  * \param obj A pointer to the object to add
325  */
326  virtual GLS_EXPORT void PushObject( DisplayObject* obj );
327 
328  /* Unhides base class implementation. */
330 
331  /** DeleteVertex is overloaded in group to disable it. It is not possible
332  * to delete a Group's Vertices
333  */
334  virtual GLS_EXPORT void DeleteVertex( unsigned int index );
335 
336  /* Unhides base class implementation. */
338 
339  /** InsertVertex is overloaded in group to disable it. It is not possible
340  * to insert into a Group's Vertices
341  */
342  virtual GLS_EXPORT void InsertVertex( unsigned int index );
343 
344  /** Copies the given vertex data into the group's location vertex
345  * thereby moving the group's location member without affecting
346  * its child objects.
347  * \param v - Given vertex
348  */
349  virtual GLS_EXPORT void SetGroupLocation( const Vertex& v );
350 
351  /* See base class */
352  virtual GLS_EXPORT void GetResources( std::ostream& outstr, GlsResourceFilter* filter = NULL ) DISTI_METHOD_OVERRIDE;
353 
354  /* See base class */
355  virtual GLS_EXPORT void CalculateTextureCoordinates( void ) DISTI_METHOD_OVERRIDE;
356 
357  virtual GLS_EXPORT void LineWidth( float width ) DISTI_METHOD_OVERRIDE;
358  virtual GLS_EXPORT float LineWidth( void ) DISTI_METHOD_OVERRIDE;
359 
360  virtual GLS_EXPORT void LineStipplePattern( int pattern ) DISTI_METHOD_OVERRIDE;
361  virtual GLS_EXPORT int LineStipplePattern( void ) DISTI_METHOD_OVERRIDE;
362 
363  virtual GLS_EXPORT void LineStippleMultiplier( int mult ) DISTI_METHOD_OVERRIDE;
364  virtual GLS_EXPORT int LineStippleMultiplier( void ) DISTI_METHOD_OVERRIDE;
365 
366  virtual GLS_EXPORT int PolygonMode( void ) DISTI_METHOD_OVERRIDE;
367  virtual GLS_EXPORT void PolygonMode( int mode ) DISTI_METHOD_OVERRIDE;
368 
369  virtual GLS_EXPORT void PolygonEnd( const int mode ) DISTI_METHOD_OVERRIDE;
370  virtual GLS_EXPORT int PolygonEnd( void ) DISTI_METHOD_OVERRIDE;
371 
372  virtual GLS_EXPORT void Shading( const int mode ) DISTI_METHOD_OVERRIDE;
373  virtual GLS_EXPORT int Shading( void ) DISTI_METHOD_OVERRIDE;
374 
375  virtual GLS_EXPORT void DepthTest( unsigned char mode ) DISTI_METHOD_OVERRIDE;
376  virtual GLS_EXPORT int DepthTest( void ) DISTI_METHOD_OVERRIDE;
377 
378  virtual GLS_EXPORT void AntiAlias( bool mode ) DISTI_METHOD_OVERRIDE;
379  virtual GLS_EXPORT bool AntiAlias( void ) DISTI_METHOD_OVERRIDE;
380 
381  virtual GLS_EXPORT void AlphaMode( int mode ) DISTI_METHOD_OVERRIDE;
382  virtual GLS_EXPORT int AlphaMode( void ) DISTI_METHOD_OVERRIDE;
383 
384  virtual GLS_EXPORT void CullBackFace( const bool mode ) DISTI_METHOD_OVERRIDE;
385  virtual GLS_EXPORT bool CullBackFace( void ) DISTI_METHOD_OVERRIDE;
386 
387  virtual GLS_EXPORT bool LightingEnabled() DISTI_METHOD_OVERRIDE;
388  virtual GLS_EXPORT void LightingEnabled( bool lighting ) DISTI_METHOD_OVERRIDE;
389 
390  /* Unhides base class implementation. */
391  using _BaseClass::SetBlendColor;
392 
393  virtual GLS_EXPORT void SetBlendColor( const GlsColor& color );
394 
395  /* Unhides base class implementation. */
396  using _BaseClass::GetBlendColor;
397 
398  virtual GLS_EXPORT GlsColor GetBlendColor( void );
399 
400  /* Unhides base class implementation. */
401  using _BaseClass::SetColor;
402 
403  virtual GLS_EXPORT void SetColor( const GlsColor& color );
404 
405  /* Unhides base class implementation. */
406  using _BaseClass::GetColor;
407 
408  virtual GLS_EXPORT GlsColor GetColor( void );
409 
410  /* Unhides base class implementation. */
411  using _BaseClass::SetFillColor;
412 
413  virtual GLS_EXPORT void SetFillColor( const GlsColor& color );
414 
415  /* Unhides base class implementation. */
416  using _BaseClass::GetFillColor;
417 
418  virtual GLS_EXPORT GlsColor GetFillColor( void );
419 
420  virtual GLS_EXPORT void TextureRepeat( const int rep );
421  using _BaseClass::TextureRepeat;
422 
423  virtual GLS_EXPORT void TextureMappingTechnique( const int map );
424  virtual GLS_EXPORT int TextureMappingTechnique( void );
425 
426  virtual GLS_EXPORT void TextureMinificationFilter( const int filter );
427  virtual GLS_EXPORT int TextureMinificationFilter( void );
428 
429  virtual GLS_EXPORT void TextureMagnificationFilter( const int filter );
430  virtual GLS_EXPORT int TextureMagnificationFilter( void );
431 
432  /** Call the Calculate method for all children
433  * \param time The current time
434  */
435  virtual GLS_EXPORT void Calculate( double time );
436 
437  /** The following class is provided for GL Studio 2.1 backward compatibility.
438  * This interface is deprecated and should only be used to support legacy code.
439  */
441  {
442  protected:
443  unsigned int _index;
444  Group* _parentGroup;
445 
446  public:
447  GLS_EXPORT CompatabilityListItem();
448 
449  GLS_EXPORT CompatabilityListItem* Next();
450 
451  GLS_EXPORT CompatabilityListItem* Prev();
452 
453  GLS_EXPORT DisplayObject* DataPtr();
454 
455  static GLS_EXPORT void RecalcCompatabilityList( Group* whichGroup );
456  };
457 
458  /** \return The first object in this group
459  */
460  GLS_EXPORT CompatabilityListItem* First();
461 
462  /** \return The last object in this group
463  */
464  GLS_EXPORT CompatabilityListItem* Last();
465 
466  DynamicArray<CompatabilityListItem> _compatList; /** Use for 2.1 compatibility only */
467 
468 private:
469  /** Sets the texturing repeat mode for this object without affecting
470  * the settings of its children.
471  * \param rep The new texture repeat mode for this object (boolean)
472  */
473  virtual GLS_EXPORT void SetGroupTextureRepeat( const int mode );
474 };
475 
476 /// Overload begin() so that range-for loops and other constructs work with Group
477 inline DisplayObjectPtr* begin( Group& group )
478 {
479  return begin( group.Objects() );
480 }
481 
482 /// Overload begin() so that range-for loops and other constructs work with Group
483 inline const DisplayObjectPtr* begin( const Group& group )
484 {
485  return begin( group.Objects() );
486 }
487 
488 /// Overload begin() so that range-for loops and other constructs work with Group
489 inline DisplayObjectPtr* end( Group& group )
490 {
491  return end( group.Objects() );
492 }
493 
494 /// Overload begin() so that range-for loops and other constructs work with Group
495 inline const DisplayObjectPtr* end( const Group& group )
496 {
497  return end( group.Objects() );
498 }
499 
500 } // namespace disti
501 
502 #endif
Definition: cull.h:49
DisplayObject * FindNonRecursive(DisplayObject *obj)
Definition: display_frame.h:85
virtual int PolygonEnd(void)
virtual const Vertex & Location(void) const
unsigned int Count(void) const
Definition: group.h:171
virtual GlsColor GetBlendColor(void)
Definition: vertex.h:409
virtual void InsertVertex(unsigned int index)
virtual float LineWidth(void)
virtual void GrowBoundingBox(DisplayObject *obj)
virtual void GetTransformedExtents(Vector &min, Vector &max, const GlsMatrixType &matrix, bool resetMinMax=true)
virtual bool CullBackFace(void)
bool IsEmpty() const
Definition: group.h:186
virtual void InsertObject(DisplayObject *obj, bool reparent=true, bool recalculateBoundingbox=true, int loc=-1)
The disti::DynamicArray class. A templated array of objects capable of dynamically growing...
Class to contain current OpenGL view, projection and draw matrices.
Definition: util.h:301
T * begin(DynamicArray< T, TypeIsSimple > &array)
Overload begin() so that range-for loops and other constructs work with DynamicArray.
Definition: dynamic_array.h:428
virtual void Calculate(double time)
virtual int DepthTest(void)
virtual int TextureMagnificationFilter(void)
virtual void GetExtents(float &x, float &y, float &z, float &x1, float &y1, float &z1)
DisplayFrame * Parent(void) const
Definition: display.h:898
Definition: display.h:98
DisplayObject * Item(unsigned int index)
virtual int TextureMappingTechnique(void)
virtual int PolygonMode(void)
virtual DisplayObject * CloneObject(bool generateNames=false)
const DisplayObjectArray & Objects() const
Definition: group.h:150
virtual void DeleteAllChildren()
DisplayObject * FirstObject()
virtual bool Hit(float x, float y, float z, float scale, const Vector &directionVector, Vector *collisionPoint)
virtual GlsColor GetFillColor(void)
virtual DisplayObject * Pick3D(const Vector &winLoc, const Vector &logicalCoords, float scale, const Vector &directionVector, Vector &collisionWinLoc, const OpenGLMatrices &drawnMatrices)
virtual void CopyGeometry(DisplayObject *src)
The disti::DisplayObject class and global enumerations.
const DisplayObject * operator[](unsigned int index) const
Definition: group.h:177
virtual ~Group()
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL)
Definition: gls_painter.h:51
virtual int AlphaMode(void)
void SetPainter(GlsPainter *painter)
virtual void DeleteVertex(unsigned int index)
DisplayObjectPtr operator[](unsigned int index)
Definition: group.h:174
virtual void ReorderObject(unsigned int oldIndex, unsigned int newIndex)
virtual void PushObject(DisplayObject *obj)
virtual int Shading(void)
void Count(const unsigned int count)
Definition: dynamic_array.h:115
CompatabilityListItem * First()
virtual bool DeleteObject(DisplayObject *obj, bool recalculateBoundingbox=true)
virtual void PreDraw(const OpenGLMatrices &current, Culler &culler)
virtual GlsColor GetColor(void)
virtual int TextureMinificationFilter(void)
int Position(DisplayObject *obj)
T * end(DynamicArray< T, TypeIsSimple > &array)
Overload end() so that range-for loops and other constructs work with DynamicArray.
Definition: dynamic_array.h:450
CompatabilityListItem * Last()
bool CullTestChildren(void) const
Definition: group.h:165
DisplayObject * FindByName(const char *name)
virtual void SetFillColor(const GlsColor &color)
void InitialGroupCount(unsigned int cnt)
virtual void InsertVertex(unsigned int index)
virtual void Translate(float x, float y, float z)
bool PerformGroupCullCheck(void) const
Definition: group.h:159
virtual bool AntiAlias(void)
Definition: gls_color.h:53
virtual void GetCppInterfaceDescriptionFree(InterfaceListType *array)
virtual void Rotate(float angle, int axis=Z_AXIS)
char * InstanceName(void)
virtual bool LightingEnabled()
virtual void SetColor(const GlsColor &color)
virtual void SetAvailableAttributes(unsigned int value)
virtual void SetGroupLocation(const Vertex &v)
DisplayObject * LastObject(void)
virtual void DeleteVertex(unsigned int index)
virtual void CalculateTextureCoordinates(void)
DisplayObject * FindByName(DisplayObject *obj)
Definition: group.h:127
DisplayObject * FindByQualifiedName(const char *name)
Definition: group.h:52
void Scale(int handleBar, float px, float py, Vertex *anchor=NULL)
Definition: display.h:1112
Definition: vertex.h:84
virtual int LineStipplePattern(void)
virtual void Draw(void)
virtual void GetResources(std::ostream &outstr, GlsResourceFilter *filter=NULL)
virtual void TranslateVertices(float x, float y, float z)
virtual void SetBlendColor(const GlsColor &color)
virtual void Rotate(const Vector &orig, float angle, const Vector &axis)
virtual DisplayObject * FindByNameSameFrame(const char *name)
DisplayObjectArray & Objects()
Definition: group.h:147
Definition: gls_resources.h:50
virtual bool TextureRepeat(void)
Macros and helper code to determine what subset of C++11/14/17 is available.
Definition: bmpimage.h:46
virtual int LineStippleMultiplier(void)
virtual void AddAvailableAttributes(unsigned int availableAttributes)
virtual void CopyProperties(DisplayObject *src)
virtual DisplayObject * handle(DisplayEvent *ev)