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  Group& operator=( const Group& ) DISTI_SPECIAL_MEM_FUN_DELETE;
76  Group( const Group& that ) DISTI_SPECIAL_MEM_FUN_DELETE;
77 
78 protected:
79  DisplayObjectArray _objects; /** The objects contained in this group */
80 
81  /** Helper method for child classes of group that don't want to call Group::SetAvailableAttributes */
82  virtual GLS_EXPORT void AddAvailableAttributes( unsigned int availableAttributes );
83 
84  /** Grow bounding box to accomodate new object
85  * \param obj The new object in the group
86  * \pre obj Must already be added to the group
87  */
88  void GrowBoundingBox( DisplayObject* obj );
89 
90 public:
91  friend class GroupEditor;
92 
93 #ifndef GLES
94  /* See base class */
95  virtual GLS_EXPORT InterfaceListType* GetCppInterfaceDescription( InterfaceListType* addToThisList = NULL );
96 
97  /* See base class */
98  virtual GLS_EXPORT void GetCppInterfaceDescriptionFree( InterfaceListType* array );
99 #endif
100 
101  /** Finds a pointer to the display object in the group, using the object's
102  * instance name as a key.
103  * \note If there are multiple DisplayObjects within the group with the same name,
104  * only the first instance will be found. This can be an issue if a sub-component
105  * contains objects with the same name as the object you are searching for.
106  * \param name Instance name of the object to find
107  * \return A pointer to the object if it is in the group, otherwise NULL
108  */
109  GLS_EXPORT DisplayObject* FindByName( const char* name );
110 
111  /** Finds a pointer to the display object in the group, using the object's
112  * instance name as a key.
113  * This does not desend into components, as they are different frames
114  * with possibility for duplicate names as the current frame.
115  * \param name Instance name of the object to find
116  * \return A pointer to the object if it is in the group, otherwise NULL
117  */
118  virtual GLS_EXPORT DisplayObject* FindByNameSameFrame( const char* name );
119 
120  /** Finds a pointer to the display object in the group, using the object's
121  * instance name as a key.
122  * \param obj Pointer to the object to find
123  * \return A pointer to the object if it is in the group, otherwise NULL
124  */
126 
127  /** Finds a pointer to the DisplayObject in the group using a qualified instance name.
128  * This allows precise searches for an object contained within a sub-component.
129  * (e.g. "cockpit.altimeter.needle"). To find an object in the same DisplayFrame
130  * use just the instance name. (e.g. "cockpit")
131  * The dot denotes crossing of DisplayFrame boundaries.
132  * \sa GetQualifiedInstanceName
133  * \param name Qualified instance name of the object to find
134  * \returns A pointer to the object if it is in the group, otherwise NULL
135  */
136  GLS_EXPORT DisplayObject* FindByQualifiedName( const char* name );
137 
138  /** Finds a pointer to the display object in the group, using the object's address as a key
139  * \param obj Pointer to the object to find
140  * \return A pointer to the object if it is in the group, otherwise NULL
141  */
142  GLS_EXPORT DisplayObject* FindNonRecursive( DisplayObject* obj );
143 
144  /** Returns a reference to the object array for this group */
145  DisplayObjectArray& Objects( void ) { return _objects; }
146 
147  /** Returns the DisplayObject at the given group index */
148  DisplayObject* Item( unsigned int index ) { return _objects[ index ]; }
149 
150  /** Returns whether or not this group should be considered for culling */
151  bool PerformGroupCullCheck( void ) const { return _performGroupCullCheck; }
152 
153  /** Sets whether or not this group should be considered for culling */
154  GLS_EXPORT void PerformGroupCullCheck( bool mode );
155 
156  /** Returns whether or not this group's children should be considered for culling */
157  bool CullTestChildren( void ) const { return _cullTestChildren; }
158 
159  /** Sets whether or not this group's children should be considered for culling */
160  GLS_EXPORT void CullTestChildren( bool mode );
161 
162  /** \return The number of objects in this group. (Non recursive count) */
163  unsigned int Count( void ) const { return _objects.Count(); }
164 
165  /** Overload of the array index operator to allow you to treat this Group as an array of objects */
166  DisplayObjectPtr operator[]( unsigned int index ) { return _objects[ index ]; }
167 
168  /** \return pointer to the first element in the group, or NULL if it doesn't exist */
169  GLS_EXPORT DisplayObject* FirstObject();
170 
171  /** \return pointer to the last element in the group, or NULL if it doesn't exist */
172  GLS_EXPORT DisplayObject* LastObject( void );
173 
174  /** \return True if this group is empty */
175  bool IsEmpty() const { return ( Count() == 0 ); }
176 
177  /** Get the index position of the specified object in the list
178  * \param obj The object to find
179  * \return The index of the object in the list, -1 if it isn't in the list
180  */
181  GLS_EXPORT int Position( DisplayObject* obj );
182 
183  /** Construct a new group.
184  * \param generateInstance Whether or not to generate an instance name for this group
185  */
186  GLS_EXPORT explicit Group( int generateInstance = FALSE );
187 
188  /** Copy construct a new group, performing a "deep copy" by cloning objects in the group.
189  * \param group The group to clone.
190  * \param generateNames Whether or not to generate a new instance name for this group and its children.
191  */
192  GLS_EXPORT Group( const Group& group, bool generateNames );
193 
194  /** Sets the initial number of entries in a group
195  * \param cnt The initial number of entries
196  */
197  GLS_EXPORT void InitialGroupCount( unsigned int cnt );
198 
199  static GLS_EXPORT DisplayObject* CreateInstance();
200 
201  /** Destroy a group object */
202  virtual GLS_EXPORT ~Group();
203 
204  /** Actually delete all the children of the group.
205  * This does a recursive "delete" on all the children.
206  * This does NOT just remove them from the group.
207  */
208  virtual GLS_EXPORT void DeleteAllChildren();
209 
210  virtual GLS_EXPORT void SetAvailableAttributes( unsigned int value );
211 
212  /* See base class */
213  virtual GLS_EXPORT DisplayObject* CloneObject( bool generateNames = false );
214 
215  /* See base class */
216  virtual GLS_EXPORT void CopyGeometry( DisplayObject* src );
217 
218  /* See base class */
219  virtual GLS_EXPORT void CopyProperties( DisplayObject* src );
220 
221  /* See base class */
222  virtual GLS_EXPORT void Draw( void );
223 
224  /* See base class */
225  virtual GLS_EXPORT void PreDraw( const OpenGLMatrices& current, Culler& culler );
226 
227  /* See base class */
228  virtual GLS_EXPORT bool Hit( float x, float y, float z, float scale, const Vector& directionVector, Vector* collisionPoint );
229 
230  /* See base class */
231  virtual GLS_EXPORT DisplayObject* Pick3D( const Vector& winLoc,
232  const Vector& logicalCoords,
233  float scale,
234  const Vector& directionVector,
235  Vector& collisionWinLoc /*Returned*/,
236  const OpenGLMatrices& drawnMatrices );
237 
238  using _BaseClass::Parent;
239 
240  /* See base class */
241  virtual GLS_EXPORT void Parent( DisplayFrame* par );
242 
243  /* See base class */
244  virtual GLS_EXPORT void CalculateBoundingBox( void );
245 
246  /* Unhides base class implementation. */
247  using _BaseClass::Location;
248 
249  /* See base class */
250  virtual GLS_EXPORT void Location( const Vertex& v ) DISTI_METHOD_OVERRIDE;
251  virtual GLS_EXPORT void Location( float x, float y, float z );
252 
253  /* See base class */
254  virtual GLS_EXPORT void Translate( float x, float y, float z );
255 
256  /* See base class */
257  virtual GLS_EXPORT void Translate( float transAmount[] );
258 
259  /* See base class */
260  virtual GLS_EXPORT void TranslateVertices( float x, float y, float z );
261 
262  /* See base class */
263  virtual GLS_EXPORT void TranslateVertices( float transAmount[] );
264 
265  /* See base class */
266  virtual GLS_EXPORT void GetExtents( float& x, float& y, float& z, float& x1, float& y1, float& z1 );
267 
268  /* See base class */
269  virtual GLS_EXPORT void GetTransformedExtents( Vector& min, Vector& max, const GlsMatrixType& matrix, bool resetMinMax = true );
270 
271  /* Unhides base class implementation. */
272  using _BaseClass::Rotate;
273 
274  /* See base class */
275  virtual GLS_EXPORT void Rotate( const Vector& orig, float angle, const Vector& axis );
276 
277  /* Unhides base class implementation. */
278  using _BaseClass::Scale;
279 
280  /* See base class */
281  virtual GLS_EXPORT void Scale( const float scale_x, const float scale_y );
282 
283  /* See base class */
284  virtual GLS_EXPORT void Scale( float scale_x, float scale_y, float scale_z, Vertex* anchor = NULL, int handle = 0 );
285 
286  /** Adds the specified object into the group, at the end of the list
287  * \param obj A pointer to the object to add
288  * \param reparent Whether or not the object parent should be set to this group
289  * \param recalculateBoundingbox Whether or not to recalculate the bounding box
290  * \param loc Where to insert it (defaults to -1 which means at the end of the list)
291  */
292  virtual GLS_EXPORT void InsertObject( DisplayObject* obj, bool reparent = true, bool recalculateBoundingbox = true, int loc = -1 );
293 
294  /** Removes the specified object from this group. Does not delete it.
295  * \param obj The display object to removed
296  * \param recalculateBoundingbox
297  * \return True if the object was found and removed from this group
298  */
299  virtual GLS_EXPORT bool DeleteObject( DisplayObject* obj, bool recalculateBoundingbox = true );
300 
301  /** Change the draw order of a child object within this group
302  * \param oldIndex The old index of the object
303  * \param newIndex The new index of the object
304  * \pre oldIndex and newIndex must be valid indices
305  */
306  virtual GLS_EXPORT void ReorderObject( unsigned int oldIndex, unsigned int newIndex );
307 
308  /** Adds the specified object into the group, at the head of the list
309  * Treats the list like a stack, hence the name Push
310  * \param obj A pointer to the object to add
311  */
312  virtual GLS_EXPORT void PushObject( DisplayObject* obj );
313 
314  /* Unhides base class implementation. */
316 
317  /** DeleteVertex is overloaded in group to disable it. It is not possible
318  * to delete a Group's Vertices
319  */
320  virtual GLS_EXPORT void DeleteVertex( unsigned int index );
321 
322  /* Unhides base class implementation. */
324 
325  /** InsertVertex is overloaded in group to disable it. It is not possible
326  * to insert into a Group's Vertices
327  */
328  virtual GLS_EXPORT void InsertVertex( unsigned int index );
329 
330  /** Copies the given vertex data into the group's location vertex
331  * thereby moving the group's location member without affecting
332  * its child objects.
333  * \param v - Given vertex
334  */
335  virtual GLS_EXPORT void SetGroupLocation( const Vertex& v );
336 
337  /* See base class */
338  virtual GLS_EXPORT void GetResources( std::ostream& outstr, GlsResourceFilter* filter = NULL ) DISTI_METHOD_OVERRIDE;
339 
340  /* See base class */
341  virtual GLS_EXPORT void CalculateTextureCoordinates( void ) DISTI_METHOD_OVERRIDE;
342 
343  virtual GLS_EXPORT void LineWidth( float width ) DISTI_METHOD_OVERRIDE;
344  virtual GLS_EXPORT float LineWidth( void ) DISTI_METHOD_OVERRIDE;
345 
346  virtual GLS_EXPORT void LineStipplePattern( int pattern ) DISTI_METHOD_OVERRIDE;
347  virtual GLS_EXPORT int LineStipplePattern( void ) DISTI_METHOD_OVERRIDE;
348 
349  virtual GLS_EXPORT void LineStippleMultiplier( int mult ) DISTI_METHOD_OVERRIDE;
350  virtual GLS_EXPORT int LineStippleMultiplier( void ) DISTI_METHOD_OVERRIDE;
351 
352  virtual GLS_EXPORT int PolygonMode( void ) DISTI_METHOD_OVERRIDE;
353  virtual GLS_EXPORT void PolygonMode( int mode ) DISTI_METHOD_OVERRIDE;
354 
355  virtual GLS_EXPORT void PolygonEnd( const int mode ) DISTI_METHOD_OVERRIDE;
356  virtual GLS_EXPORT int PolygonEnd( void ) DISTI_METHOD_OVERRIDE;
357 
358  virtual GLS_EXPORT void Shading( const int mode ) DISTI_METHOD_OVERRIDE;
359  virtual GLS_EXPORT int Shading( void ) DISTI_METHOD_OVERRIDE;
360 
361  virtual GLS_EXPORT void DepthTest( unsigned char mode ) DISTI_METHOD_OVERRIDE;
362  virtual GLS_EXPORT int DepthTest( void ) DISTI_METHOD_OVERRIDE;
363 
364  virtual GLS_EXPORT void AntiAlias( bool mode ) DISTI_METHOD_OVERRIDE;
365  virtual GLS_EXPORT bool AntiAlias( void ) DISTI_METHOD_OVERRIDE;
366 
367  virtual GLS_EXPORT void AlphaMode( int mode ) DISTI_METHOD_OVERRIDE;
368  virtual GLS_EXPORT int AlphaMode( void ) DISTI_METHOD_OVERRIDE;
369 
370  virtual GLS_EXPORT void CullBackFace( const bool mode ) DISTI_METHOD_OVERRIDE;
371  virtual GLS_EXPORT bool CullBackFace( void ) DISTI_METHOD_OVERRIDE;
372 
373  virtual GLS_EXPORT bool LightingEnabled() DISTI_METHOD_OVERRIDE;
374  virtual GLS_EXPORT void LightingEnabled( bool lighting ) DISTI_METHOD_OVERRIDE;
375 
376  /* Unhides base class implementation. */
377  using _BaseClass::SetBlendColor;
378 
379  virtual GLS_EXPORT void SetBlendColor( const GlsColor& color );
380 
381  /* Unhides base class implementation. */
382  using _BaseClass::GetBlendColor;
383 
384  virtual GLS_EXPORT GlsColor GetBlendColor( void );
385 
386  /* Unhides base class implementation. */
387  using _BaseClass::SetColor;
388 
389  virtual GLS_EXPORT void SetColor( const GlsColor& color );
390 
391  /* Unhides base class implementation. */
392  using _BaseClass::GetColor;
393 
394  virtual GLS_EXPORT GlsColor GetColor( void );
395 
396  /* Unhides base class implementation. */
397  using _BaseClass::SetFillColor;
398 
399  virtual GLS_EXPORT void SetFillColor( const GlsColor& color );
400 
401  /* Unhides base class implementation. */
402  using _BaseClass::GetFillColor;
403 
404  virtual GLS_EXPORT GlsColor GetFillColor( void );
405 
406  virtual GLS_EXPORT void TextureRepeat( const int rep );
407  virtual GLS_EXPORT bool TextureRepeat( void );
408 
409  virtual GLS_EXPORT void TextureMappingTechnique( const int map );
410  virtual GLS_EXPORT int TextureMappingTechnique( void );
411 
412  virtual GLS_EXPORT void TextureMinificationFilter( const int filter );
413  virtual GLS_EXPORT int TextureMinificationFilter( void );
414 
415  virtual GLS_EXPORT void TextureMagnificationFilter( const int filter );
416  virtual GLS_EXPORT int TextureMagnificationFilter( void );
417 
418  /** Call the Calculate method for all children
419  * \param time The current time
420  */
421  virtual GLS_EXPORT void Calculate( double time );
422 
423  /** The following class is provided for GL Studio 2.1 backward compatibility.
424  * This interface is deprecated and should only be used to support legacy code.
425  */
427  {
428  protected:
429  unsigned int _index;
430  Group* _parentGroup;
431 
432  public:
433  GLS_EXPORT CompatabilityListItem();
434 
435  GLS_EXPORT CompatabilityListItem* Next();
436 
437  GLS_EXPORT CompatabilityListItem* Prev();
438 
439  GLS_EXPORT DisplayObject* DataPtr();
440 
441  static GLS_EXPORT void RecalcCompatabilityList( Group* whichGroup );
442  };
443 
444  /** \return The first object in this group
445  */
446  GLS_EXPORT CompatabilityListItem* First();
447 
448  /** \return The last object in this group
449  */
450  GLS_EXPORT CompatabilityListItem* Last();
451 
452  DynamicArray<CompatabilityListItem> _compatList; /** Use for 2.1 compatibility only */
453 };
454 
455 } // namespace disti
456 
457 #endif
Definition: cull.h:49
DisplayObject * FindNonRecursive(DisplayObject *obj)
Definition: display_frame.h:83
virtual int PolygonEnd(void)
virtual const Vertex & Location(void) const
unsigned int Count(void) const
Definition: group.h:163
virtual GlsColor GetBlendColor(void)
Definition: vertex.h:408
virtual void InsertVertex(unsigned int index)
virtual float LineWidth(void)
virtual void GetTransformedExtents(Vector &min, Vector &max, const GlsMatrixType &matrix, bool resetMinMax=true)
virtual bool CullBackFace(void)
bool IsEmpty() const
Definition: group.h:175
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:278
void GrowBoundingBox(DisplayObject *obj)
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:897
Definition: display.h:97
DisplayObject * Item(unsigned int index)
Definition: group.h:148
virtual int TextureMappingTechnique(void)
virtual int PolygonMode(void)
virtual DisplayObject * CloneObject(bool generateNames=false)
virtual void DeleteAllChildren()
virtual bool TextureRepeat(void)
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.
virtual ~Group()
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL)
virtual int AlphaMode(void)
virtual void DeleteVertex(unsigned int index)
DisplayObjectPtr operator[](unsigned int index)
Definition: group.h:166
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)
CompatabilityListItem * Last()
bool CullTestChildren(void) const
Definition: group.h:157
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:151
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:125
DisplayObject * FindByQualifiedName(const char *name)
Definition: group.h:52
void Scale(int handleBar, float px, float py, Vertex *anchor=NULL)
Definition: display.h:1111
Definition: vertex.h:83
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)
Definition: gls_resources.h:50
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)
DisplayObjectArray & Objects(void)
Definition: group.h:145
virtual void CopyProperties(DisplayObject *src)
virtual DisplayObject * handle(DisplayEvent *ev)