GlsRSOLoader API 1.6.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
rso_interface_1.h
Go to the documentation of this file.
1/*! \file
2 \brief Defines the RSO interface, which provides a generic way of accessing RSOs and other content, disti::RSOInterface1.
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
14reproduced, in whole or part, in any form, or by any means of electronic,
15mechanical, or otherwise, without the written permission of DiSTI. Said
16permission may be derived through the purchase of applicable DiSTI product
17licenses which detail the distribution rights of this content and any
18Derivative Works based on this or other copyrighted DiSTI Software.
19
20 NO WARRANTY. THE SOFTWARE IS PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND,
21AND ANY USE OF THIS SOFTWARE PRODUCT IS AT YOUR OWN RISK. TO THE MAXIMUM EXTENT
22PERMITTED BY APPLICABLE LAW, DISTI AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES
23AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
24IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND/OR FITNESS FOR A
25PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE.
26
27 LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW,
28IN NO EVENT SHALL DISTI OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
29INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION,
30DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
31INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
32INABILITY TO USE THE SOFTWARE, EVEN IF DISTI HAS BEEN ADVISED OF THE POSSIBILITY
33OF SUCH DAMAGES. DISTI'S ENTIRE LIABILITY AND YOUR EXCLUSIVE REMEDY SHALL NOT
34EXCEED FIVE DOLLARS (US$5.00).
35
36 The aforementioned terms and restrictions are governed by the laws of the
37State of Florida and the United States of America.
38
39*/
40#ifndef _RSO_INTERFACE_1_H
41#define _RSO_INTERFACE_1_H
42
43// !!! NOTICE !!!
44// To maintain compatibility with existing RSOs this header cannot be changed.
45
46namespace disti
47{
48////////////////////////////////////////////////////////////////////////////////
49// In order for the RSO to be discovered in a .DLL or .so file,
50// The following "C" funtions need to be defined.
51// They are only comments here.
52////////////////////////////////////////////////////////////////////////////////
53// RSOInterface1* GetRSOInterface1_ClassNameHere()
54// Optionally:
55// const char* GlsDefaultClassName()
56////////////////////////////////////////////////////////////////////////////////
57
58/** The RSOInterface1 class defines an abstract interface to an RSO instance.
59 */
61{
62public:
63 ////////////////////////////////////////////////////////////////////////////////
64 // Forward declaration of support classes
65 ////////////////////////////////////////////////////////////////////////////////
66 class Vector;
67 class MatrixD;
68 class OpenGLMatrices;
69 class PlaneClass;
70 class Culler;
71 class Event;
72 class LocationEvent;
73 class MouseEvent;
74 class KeyboardEvent;
75 class ObjectEvent;
77 class ResourceFilter;
78
79public:
80 ////////////////////////////////////////////////////////////////////////////////
81 /// The RSO Interface methods
82 ////////////////////////////////////////////////////////////////////////////////
83
84 ////////////////////////////////////////////////////////////////////////////////
85 /// Perform component simulation.
86 /// Any non-drawing activities can be performed here.
87 /// Call this before PreDraw()
88 ////////////////////////////////////////////////////////////////////////////////
89 virtual void Calculate( double time ) = 0;
90
91 ////////////////////////////////////////////////////////////////////////////////
92 /// Calculate transformations and perform culling
93 /// Call this before Draw()
94 ////////////////////////////////////////////////////////////////////////////////
95 virtual void PreDraw( const OpenGLMatrices& current, Culler& culler ) = 0;
96
97 ////////////////////////////////////////////////////////////////////////////////
98 /// Draw the object via OpenGL
99 /// Call this after PreDraw()
100 ////////////////////////////////////////////////////////////////////////////////
101 virtual void Draw() = 0;
102
103 ////////////////////////////////////////////////////////////////////////////////
104 /// Set the string value for a given named resource
105 ////////////////////////////////////////////////////////////////////////////////
106 virtual void SetResource( const char* resourceName, const char* resourceVal ) = 0;
107
108 ////////////////////////////////////////////////////////////////////////////////
109 /// Get the string value for the given resource
110 ////////////////////////////////////////////////////////////////////////////////
111 virtual const char* GetResource( const char* resourceName ) = 0;
112
113 ////////////////////////////////////////////////////////////////////////////////
114 /// Get a list of the resources for the component.
115 /// Each resource is separated by a newline ('\n') with the output controlled by filter.
116 /// filter may be NULL in which case the default values are used.
117 ////////////////////////////////////////////////////////////////////////////////
118 virtual const char* GetResources( ResourceFilter* filter = 0 ) = 0;
119
120 ////////////////////////////////////////////////////////////////////////////////
121 /// Allow the object to handle an event
122 /// Returns true if the event was handled by the component
123 ////////////////////////////////////////////////////////////////////////////////
124 virtual bool HandleInput( Event* ev ) = 0;
125
126 ////////////////////////////////////////////////////////////////////////////////
127 /// Allow for handling events from inside the object.
128 /// The emitted event handler will be passed events that are from inside the component
129 /// \param handler pointer to the EmittedEventHandler object to use or NULL to remove the current event handler.
130 /// \return true if this component may emit events, false if this component will never emit events.
131 ////////////////////////////////////////////////////////////////////////////////
132 virtual bool SetEmittedEventHandler( EmittedEventHandler* handler ) = 0;
133
134 ////////////////////////////////////////////////////////////////////////////////
135 /// Pick3D returns true if the RSO was picked.
136 ////////////////////////////////////////////////////////////////////////////////
137 virtual bool Pick3D( const Vector& winLoc,
138 const Vector& logicalCoords,
139 float scale,
140 const Vector& directionVector,
141 Vector& collisionWinLoc,
142 const OpenGLMatrices& drawnMatrices )
143 = 0;
144
145 ////////////////////////////////////////////////////////////////////////////////
146 /// Get the bounding sphere for the component in the components coordinate system
147 /// \param center If the method returns true, contains the center point of the sphere. If the method returns false, value is undefined.
148 /// \param radius If the method returns true, contains the radius of the sphere. If the method returns false, value is undefined.
149 /// \returns true if the bounding sphere was returned, false if the bounding sphere is not available.
150 ////////////////////////////////////////////////////////////////////////////////
151 virtual bool GetBoundingSphere( Vector* center, float* radius ) = 0;
152
153 ////////////////////////////////////////////////////////////////////////////////
154 /// Get the extents of the component when drawn with the given transformation matrix, as a coordinate system-aligned box
155 /// \param min If the method returns true, contains the point corresponding with the 1st corner of the box. If the method returns false, value is undefined.
156 /// \param max If the method returns true, contains the point corresponding with the 2nd corner of the box. If the method returns false, value is undefined.
157 /// \param transform Transformation matrix from A to B where A is the component's coordinate system and B is the coordinate system to compute the bounding box in. (If NULL then identity matrix is assumed)
158 /// \returns true if the extents were calculated, false if the extents could not be calculated.
159 ////////////////////////////////////////////////////////////////////////////////
160 virtual bool GetBoundingBox( Vector* min, Vector* max, const MatrixD* transform = 0 ) = 0;
161
162 ////////////////////////////////////////////////////////////////////////////////
163 /// Returns a new instance of the RSO
164 /// that is a clone of this object or NULL if not possible.
165 ////////////////////////////////////////////////////////////////////////////////
167
168 ////////////////////////////////////////////////////////////////////////////////
169 /// Safely delete the object.
170 ////////////////////////////////////////////////////////////////////////////////
171 virtual void DeleteInstance() = 0;
172
173protected:
174 ////////////////////////////////////////////////////////////////////////////////
175 /// Protected destructor so it can't be deleted directly.
176 ////////////////////////////////////////////////////////////////////////////////
177 virtual ~RSOInterface1() {}
178
179public:
180 ////////////////////////////////////////////////////////////////////////////////
181 // Supporting classes
182 ////////////////////////////////////////////////////////////////////////////////
183
184 /** Vector */
185 class Vector
186 {
187 public:
188 float _x, _y, _z;
189
190 Vector()
191 : _x( 0 )
192 , _y( 0 )
193 , _z( 0 )
194 {}
195
196 inline void Set( float x, float y, float z )
197 {
198 _x = x;
199 _y = y;
200 _z = z;
201 }
202
203 inline float X() { return _x; }
204 inline float Y() { return _y; }
205 inline float Z() { return _z; }
206 };
207
208 /** MatrixD contains the data for a 4x4 matrix */
210 {
211 public:
212 // raw column-major matrix data
213 double _data[ 4 * 4 ];
214
215 // Uninitialized data
216 MatrixD()
217 {}
218
219 // Copy from data
220 MatrixD( double* data )
221 {
222 _data[ 0 ] = data[ 0 ];
223 _data[ 1 ] = data[ 1 ];
224 _data[ 2 ] = data[ 2 ];
225 _data[ 3 ] = data[ 3 ];
226 _data[ 4 ] = data[ 4 ];
227 _data[ 5 ] = data[ 5 ];
228 _data[ 6 ] = data[ 6 ];
229 _data[ 7 ] = data[ 7 ];
230 _data[ 8 ] = data[ 8 ];
231 _data[ 9 ] = data[ 9 ];
232 _data[ 10 ] = data[ 10 ];
233 _data[ 11 ] = data[ 11 ];
234 _data[ 12 ] = data[ 12 ];
235 _data[ 13 ] = data[ 13 ];
236 _data[ 14 ] = data[ 14 ];
237 _data[ 15 ] = data[ 15 ];
238 }
239 };
240
241 /** OpenGLMatrices is used to pass the current OpenGL matrices to PreDraw */
243 {
244 public:
245 int* _viewPort; // pointer to array size 4
246 MatrixD* _projMatrix;
247 MatrixD* _modelMatrix;
248
250 : _viewPort( 0 )
251 , _projMatrix( 0 )
252 , _modelMatrix( 0 )
253 {}
254
255 OpenGLMatrices( int* viewPort, MatrixD* projMatrix, MatrixD* modelMatrix )
256 : _viewPort( viewPort )
257 , _projMatrix( projMatrix )
258 , _modelMatrix( modelMatrix )
259 {}
260 };
261
262 /** The PlaneClass is used to define the clipping planes for culling */
264 {
265 public:
266 float _a, _b, _c, _d; /** Coefficients to describe a 3D plane: aX + bY + cZ + d = 0 */
267
269 : _a( 0 )
270 , _b( 0 )
271 , _c( 0 )
272 , _d( 0 )
273 {}
274
275 inline void Set( float a, float b, float c, float d )
276 {
277 _a = a;
278 _b = b;
279 _c = c;
280 _d = d;
281 }
282
283 inline float A() { return _a; }
284 inline float B() { return _b; }
285 inline float C() { return _c; }
286 inline float D() { return _d; }
287 };
288
289 /** Defines culling parameters for PreDraw */
290 class Culler
291 {
292 public:
293 bool _enabled; /** Whether or not culling is enabled */
294 PlaneClass _planes[ 6 ]; /** Array of six clipping planes to define the frustum */
295
297 : _enabled( false )
298 {}
299 };
300
301 /** Base class for events */
302 class Event
303 {
304 public:
305 /** Event Type Enum */
306 typedef enum
307 {
308 EVENT_MOUSE = 0, /**< A Mouse (or touch screen) event */
309 EVENT_KEYBOARD, /**< A Keyboard event */
310 EVENT_TIMER, /**< Unused */
311 EVENT_OBJECT, /**< An event emitted by an object */
312 EVENT_KEYBOARD_UP /**< A Keyboard up event (uses KeyboardEvent class) */
314
315 /** Event Subtype Enum */
316 typedef enum
317 {
318 MOUSE_DOWN = 0, /**< A Mouse button was pushed down */
319 MOUSE_UP, /**< A Mouse button was released */
320 MOUSE_MOVE, /**< The mouse moved */
321 MOUSE_DRAG, /**< The mouse moved while a button was held down */
322 MOUSE_LEAVE, /**< The mouse exited the object */
323 MOUSE_ENTER, /**< The mouse entered the object */
324 MOUSE_WHEEL_MINUS, /**< The mouse wheel was turned in the negative direction */
325 MOUSE_WHEEL_PLUS /**< The mouse wheel was turned in the positive direction */
327
328 unsigned short _eventType; /**< Major event code. see EventTypeEnum */
329 unsigned short _eventSubtype; /**< Minor event code. see EventSubtypeEnum */
330
331 /**
332 Special Key State
333 */
334 typedef enum
335 {
336 NONE_STATE = 0,
337 SHIFT_STATE = 0x00010000,
338 CAPS_LOCK_STATE = 0x00020000,
339 CTRL_STATE = 0x00040000,
340 ALT_STATE = 0x00080000,
341 NUM_LOCK_STATE = 0x00100000,
342 META_STATE = 0x00400000,
343 SCROLL_LOCK_STATE = 0x00800000,
344 BUTTON1_STATE = 0x01000000,
345 BUTTON2_STATE = 0x02000000,
346 BUTTON3_STATE = 0x04000000
348
349 Event()
350 : _eventType( 0 )
351 , // Derived classes MUST set the appropriate event type
353 {}
354
355 virtual ~Event() {}
356
357 inline unsigned short EventType() { return _eventType; }
358 inline void EventType( unsigned short value ) { _eventType = value; }
359
360 inline unsigned short EventSubType() { return _eventSubtype; }
361 inline void EventSubType( unsigned short value ) { _eventSubtype = value; }
362 };
363
364 /** An event associated with a specific location in the application window.
365 * Base class for MouseEvent and KeyboardEvent.
366 */
367 class LocationEvent : public Event
368 {
369 public:
370 Vector _winLoc; /**< Location of the event in window coordinates
371 * x and y window coordinates in pixels.
372 * z is from 0.0 -> 1.0 and represents the depth.
373 * z == 0 is at the near cliping plane.
374 * z == 0.5 represents half way between near
375 * and far cliping planes.
376 */
378 {}
379
380 inline Vector WinLoc() { return _winLoc; }
381 inline void WinLoc( Vector value ) { _winLoc = value; }
382 };
383
384 /** An event containing mouse input. */
386 {
387 public:
388 /** Mouse Button Type */
389 typedef enum
390 {
391 MOUSE_LBUTTON = 1, /**< Mask that matches only left mouse button */
392 MOUSE_MBUTTON = 2, /**< Mask that matches only middle mouse button */
393 MOUSE_RBUTTON = 4, /**< Mask that matches only right mouse button */
394 MOUSE_BUTTON_ANY = 7 /**< Mask that matches any mouse button */
396
397 unsigned char _buttonMask; /**< bitfield: which button was pressed for this event ( MouseButtonType )*/
398 unsigned char _clicks; /**< # of times a button was pressed */
399 int _modifiers; /**< bitfield: which buttons or modifiers were depressed before event ( \sa SpecialKeyState) */
400
401 MouseEvent()
402 : _buttonMask( 0 )
403 , _clicks( 0 )
404 , _modifiers( NONE_STATE )
405 {
407 }
408
409 inline unsigned char ButtonMask() { return _buttonMask; }
410 inline void ButtonMask( unsigned char value ) { _buttonMask = value; }
411
412 inline unsigned char Clicks() { return _clicks; }
413 inline void Clicks( unsigned char value ) { _clicks = value; }
414
415 inline int Modifiers() { return _modifiers; }
416 inline void Modifiers( int value ) { _modifiers = value; }
417 };
418
419 /** An event containing keyboard input */
421 {
422 public:
423 // Keyboard key enum used by keysym (use ascii letters for all other keys):
424 enum
425 {
426 KEY_Button = 0xfee8,
427 KEY_BackSpace = 0xff08,
428 KEY_Tab = 0xff09,
429 KEY_Enter = 0xff0d,
430 KEY_Pause = 0xff13,
431 KEY_Scroll_Lock = 0xff14,
432 KEY_Escape = 0xff1b,
433 KEY_Home = 0xff50,
434 KEY_Left = 0xff51,
435 KEY_Up = 0xff52,
436 KEY_Right = 0xff53,
437 KEY_Down = 0xff54,
438 KEY_Page_Up = 0xff55,
439 KEY_Page_Down = 0xff56,
440 KEY_End = 0xff57,
441 KEY_Print = 0xff61,
442 KEY_Insert = 0xff63,
443 KEY_Menu = 0xff67,
444 KEY_Num_Lock = 0xff7f,
445 KEY_KP = 0xff80,
446 KEY_KP_Enter = 0xff8d,
447 KEY_KP_Last = 0xffbd,
448 KEY_F = 0xffbd,
449 KEY_F_Last = 0xffe0,
450 KEY_Shift_L = 0xffe1,
451 KEY_Shift_R = 0xffe2,
452 KEY_Control_L = 0xffe3,
453 KEY_Control_R = 0xffe4,
454 KEY_Caps_Lock = 0xffe5,
455 KEY_Meta_L = 0xffe7,
456 KEY_Meta_R = 0xffe8,
457 KEY_Alt_L = 0xffe9,
458 KEY_Alt_R = 0xffea,
459 KEY_Delete = 0xffff
460 } KeySymCodeEnum;
461
462 int _keysym; /**< Code for key that was pressed ( \sa KeySymCodeEnum) */
463 int _modifiers; /**< bitfield: which modifiers or buttons were pressed ( \sa SpecialKeyState) */
464
466 : _keysym( 0 )
467 , _modifiers( 0 )
468 {
470 }
471
472 inline int KeySym() { return _keysym; }
473 inline void KeySym( int value ) { _keysym = value; }
474
475 inline int Modifiers() { return _modifiers; }
476 inline void Modifiers( int value ) { _modifiers = value; }
477 };
478
479 /** An event that is emitted from a simulation object */
480 class ObjectEvent : public Event
481 {
482 public:
483 char* _initiator; /**< The qualified name of the object that initiated the event */
484 char* _eventName; /**< String event name */
485 char* _eventData; /**< Any additional data for this event. A NULL terminated string */
486
488 : _initiator( 0 )
489 , _eventName( 0 )
490 , _eventData( 0 )
491 {
493 }
494
495 virtual ~ObjectEvent()
496 {
497 if( _initiator )
498 {
499 delete _initiator;
500 _initiator = 0;
501 }
502 if( _eventName )
503 {
504 delete _eventName;
505 _eventName = 0;
506 }
507 if( _eventData )
508 {
509 delete _eventData;
510 _eventData = 0;
511 }
512 }
513
514 // Get the initiator name
515 inline const char* Initiator() const
516 {
517 return _initiator;
518 }
519 // Set the initiator name
520 virtual void Initiator( const char* value )
521 {
522 if( _initiator )
523 {
524 delete[] _initiator;
525 _initiator = 0;
526 }
527 if( value )
528 {
529 _initiator = new char[ RSOInterface1::strlen( value ) + 1 ];
530 RSOInterface1::strcpy( _initiator, value );
531 }
532 }
533
534 // Get the event name
535 inline const char* EventName() const
536 {
537 return _eventName;
538 }
539 // Set the event name
540 virtual void EventName( const char* value )
541 {
542 if( _eventName )
543 {
544 delete[] _eventName;
545 _eventName = 0;
546 }
547 if( value )
548 {
549 _eventName = new char[ RSOInterface1::strlen( value ) + 1 ];
550 RSOInterface1::strcpy( _eventName, value );
551 }
552 }
553
554 // Get the event data
555 inline const char* EventData() const
556 {
557 return _eventData;
558 }
559 // Set the event data
560 virtual void EventData( const char* value )
561 {
562 if( _eventData )
563 {
564 delete[] _eventData;
565 _eventData = 0;
566 }
567 if( value )
568 {
569 _eventData = new char[ RSOInterface1::strlen( value ) + 1 ];
570 RSOInterface1::strcpy( _eventData, value );
571 }
572 }
573 };
574
575 /** The emitted event handler is an object provided by the
576 container to handle events emitted from the component.
577 */
579 {
580 protected:
581 virtual ~EmittedEventHandler() {}
582
583 public:
584 /// Called by the component to pass an event
585 /// to the container. Most containers will only handle
586 /// ObjectEvents.
587 /// \returns int Reserved. Currently always -1.
588 virtual int HandleEvent( Event* ev ) = 0;
589 };
590
591 /** The resource filter is a parameter to the GetResources method */
593 {
594 protected:
595 virtual ~ResourceFilter() {}
596
597 public:
598 /// How many levels of qualification to show in the name.
599 /// -1 means full qualification.
600 /// Default: 0 // TODO: confirm this default
601 virtual int LevelsUp() const = 0;
602 virtual void LevelsUp( int value ) = 0;
603
604 /// How many levels of children to show.
605 /// 0 means don't show any children properties
606 /// -1 means all the way down.
607 /// Default: -1
608 virtual int GroupLevelsDown() const = 0;
609 virtual void GroupLevelsDown( int value ) = 0;
610
611 /// If true, only a list of names will be returned.
612 /// Values will not be returned.
613 /// The format changes to not include the ":".
614 /// Default: false
615 virtual bool NamesOnly() const = 0;
616 virtual void NamesOnly( bool value ) = 0;
617
618 /// Manage the list of excluded attributes
619 virtual void AddExclude( const char* str ) = 0;
620 /// Returns the number of entries in the exclude list.
621 /// Default: 0
622 virtual int ExcludeCount() const = 0;
623 /// Returns NULL if index >= ExcludeCount() or index < -1
624 virtual const char* GetExclude( int index ) const = 0;
625
626 /// Manage the list of included attributes
627 virtual void AddInclude( const char* str ) = 0;
628 /// Returns the number of entries in the include list.
629 /// Default: 0
630 virtual int IncludeCount() const = 0;
631 // Returns NULL if index >= IncludeCount() or index < -1
632 virtual const char* GetInclude( int index ) const = 0;
633
634 /// Check a name against the filters
635 /// Exclude list takes precedence
636 virtual bool PassFilter( const char* name ) const = 0;
637 };
638
639 ////////////////////////////////////////////////////////////////////////////////
640 // Support class utility methods
641 ////////////////////////////////////////////////////////////////////////////////
642
643 static inline unsigned int strlen( const char* str )
644 {
645 unsigned int i = 0;
646 while( str[ i ] != '\0' )
647 {
648 i++;
649 }
650 return i;
651 }
652
653 static inline char* strcpy( char* dest, const char* src )
654 {
655 unsigned int i = 0;
656 while( ( dest[ i ] = src[ i ] ) != '\0' )
657 {
658 i++;
659 }
660 return dest;
661 }
662};
663
664} // end namespace disti
665
666#endif
Definition: rso_interface_1.h:291
PlaneClass _planes[6]
Definition: rso_interface_1.h:294
Culler()
Definition: rso_interface_1.h:296
Definition: rso_interface_1.h:579
virtual int HandleEvent(Event *ev)=0
Definition: rso_interface_1.h:303
unsigned short _eventType
Definition: rso_interface_1.h:328
unsigned short _eventSubtype
Definition: rso_interface_1.h:329
EventSubtypeEnum
Definition: rso_interface_1.h:317
@ MOUSE_DOWN
Definition: rso_interface_1.h:318
@ MOUSE_ENTER
Definition: rso_interface_1.h:323
@ MOUSE_UP
Definition: rso_interface_1.h:319
@ MOUSE_DRAG
Definition: rso_interface_1.h:321
@ MOUSE_MOVE
Definition: rso_interface_1.h:320
@ MOUSE_WHEEL_PLUS
Definition: rso_interface_1.h:325
@ MOUSE_LEAVE
Definition: rso_interface_1.h:322
@ MOUSE_WHEEL_MINUS
Definition: rso_interface_1.h:324
EventTypeEnum
Definition: rso_interface_1.h:307
@ EVENT_MOUSE
Definition: rso_interface_1.h:308
@ EVENT_KEYBOARD_UP
Definition: rso_interface_1.h:312
@ EVENT_OBJECT
Definition: rso_interface_1.h:311
@ EVENT_TIMER
Definition: rso_interface_1.h:310
@ EVENT_KEYBOARD
Definition: rso_interface_1.h:309
SpecialKeyState
Definition: rso_interface_1.h:335
Definition: rso_interface_1.h:421
int _keysym
Definition: rso_interface_1.h:462
int _modifiers
Definition: rso_interface_1.h:463
Definition: rso_interface_1.h:368
Vector _winLoc
Definition: rso_interface_1.h:370
Definition: rso_interface_1.h:210
Definition: rso_interface_1.h:386
MouseButtonType
Definition: rso_interface_1.h:390
@ MOUSE_BUTTON_ANY
Definition: rso_interface_1.h:394
@ MOUSE_LBUTTON
Definition: rso_interface_1.h:391
@ MOUSE_RBUTTON
Definition: rso_interface_1.h:393
@ MOUSE_MBUTTON
Definition: rso_interface_1.h:392
int _modifiers
Definition: rso_interface_1.h:399
unsigned char _buttonMask
Definition: rso_interface_1.h:397
unsigned char _clicks
Definition: rso_interface_1.h:398
Definition: rso_interface_1.h:481
char * _eventName
Definition: rso_interface_1.h:484
char * _initiator
Definition: rso_interface_1.h:483
char * _eventData
Definition: rso_interface_1.h:485
Definition: rso_interface_1.h:243
Definition: rso_interface_1.h:264
PlaneClass()
Definition: rso_interface_1.h:268
Definition: rso_interface_1.h:593
virtual int GroupLevelsDown() const =0
virtual void AddInclude(const char *str)=0
Manage the list of included attributes.
virtual int ExcludeCount() const =0
virtual const char * GetExclude(int index) const =0
Returns NULL if index >= ExcludeCount() or index < -1.
virtual void AddExclude(const char *str)=0
Manage the list of excluded attributes.
virtual int LevelsUp() const =0
virtual bool PassFilter(const char *name) const =0
virtual bool NamesOnly() const =0
virtual int IncludeCount() const =0
Definition: rso_interface_1.h:186
Definition: rso_interface_1.h:61
virtual bool SetEmittedEventHandler(EmittedEventHandler *handler)=0
virtual void SetResource(const char *resourceName, const char *resourceVal)=0
Set the string value for a given named resource.
virtual void Draw()=0
virtual bool HandleInput(Event *ev)=0
virtual bool GetBoundingSphere(Vector *center, float *radius)=0
virtual void DeleteInstance()=0
Safely delete the object.
virtual const char * GetResource(const char *resourceName)=0
Get the string value for the given resource.
virtual RSOInterface1 * CloneObject()=0
virtual void PreDraw(const OpenGLMatrices &current, Culler &culler)=0
virtual const char * GetResources(ResourceFilter *filter=0)=0
virtual bool Pick3D(const Vector &winLoc, const Vector &logicalCoords, float scale, const Vector &directionVector, Vector &collisionWinLoc, const OpenGLMatrices &drawnMatrices)=0
Pick3D returns true if the RSO was picked.
virtual bool GetBoundingBox(Vector *min, Vector *max, const MatrixD *transform=0)=0
virtual ~RSOInterface1()
Protected destructor so it can't be deleted directly.
Definition: rso_interface_1.h:177
virtual void Calculate(double time)=0
The RSO Interface methods.