GL Studio C++ Runtime API
gls_multi_view.h
Go to the documentation of this file.
1/*! \file
2 \brief The disti::GlsMultiView class.
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 INCLUDED_DISTI_GLS_MULTI_VIEW_H
41#define INCLUDED_DISTI_GLS_MULTI_VIEW_H
42
43#include "display_types.h"
44#include "gls_eyepoint.h"
45#include "group.h"
46
47/// Automatically link the runtime library plugin (on Windows).
48#define LIB_BASE_NAME "gls_multi_view"
49#include "gls_auto_lib.h"
50#undef LIB_BASE_NAME
51
52/// Provides support for creating DLLs.
53#if( defined( GLSGEN_EXPORT_GlsMultiView ) || defined( GLSGEN_IMPORT_GlsMultiView ) || defined( GLS_EXPORT_GENERATED ) || defined( GLS_IMPORT_GENERATED ) ) \
54 && defined( _MSC_VER )
55# if defined( GLSGEN_EXPORT_GlsMultiView ) || defined( GLS_EXPORT_GENERATED )
56# define GLSGEN_GlsMultiView_EXPORT __declspec( dllexport )
57# else
58# define GLSGEN_GlsMultiView_EXPORT __declspec( dllimport )
59# endif
60#else
61# define GLSGEN_GlsMultiView_EXPORT
62#endif
63///////////////////////////////////////////////////////////////////////////////
64
65namespace disti
66{
67// SetValue enumerations
68enum
69{
70 GLS_GLSMULTIVIEW_FIRST_VALUE = GLS_LAST_INITIALIZER + 1,
71 GLS_GLSMULTIVIEW_VIEW_DATA,
72 GLS_GLSMULTIVIEW_VIEW_DRAWING_STATE
73};
74class ComponentLightMgr;
75
76/** Runtime implementation of GlsMultiView */
77class GlsMultiView : public Group
78{
79 friend class GlsMultiViewEditor;
80
81public:
82 DISTI_DEPRECATED( "This identifier is forbidden by the C++ standard. Use BaseClass instead." )
83 typedef Group _BaseClass; ///< Deprecated typedef for the base class.
84 typedef Group BaseClass; ///< Typedef for the base class.
85
86 /** Create a new GlsMultiView.
87 * \param generateInstance Whether or not to generate an instance name
88 * for this inputdevice */
90
91 /// Copy constructor
92 /// \param that The object to copy from.
93 /// \param generateNames Whether or not to generate an instance name.
94 GLSGEN_GlsMultiView_EXPORT GlsMultiView( const GlsMultiView& that, const bool generateNames );
95
96 /** GlsMultiView deconstructor */
98
99 /// \return A pointer to a new GlsMultiView object.
101
104 virtual GLSGEN_GlsMultiView_EXPORT void PreDraw( const OpenGLMatrices& parentMatrices, Culler& culler ) DISTI_METHOD_OVERRIDE;
107
108#ifndef GLES
111#endif
112
114 const Vector& logicalCoords,
115 float scale,
116 const Vector& directionVector,
117 Vector& collisionWinLoc, /*Returned*/
118 const OpenGLMatrices& drawnMatrices ) DISTI_METHOD_OVERRIDE;
119
122 virtual GLSGEN_GlsMultiView_EXPORT void GetResources( std::ostream& outstr, GlsResourceFilter* filter = NULL ) DISTI_METHOD_OVERRIDE;
123 virtual GLSGEN_GlsMultiView_EXPORT void SetValue( int spec, va_list& args ) DISTI_METHOD_OVERRIDE;
124
125 //////////////////////////////////////////////////
126 // Object specific operations
127 //////////////////////////////////////////////////
128
129 /// \details The ClearBackgroundEnum enumeration. Describes how the background for a given view will be cleared.
130 enum
131 {
132 CLEAR_BG_OFF = 0,
133 CLEAR_BG_DEPTH_AND_COLOR = 1,
134 CLEAR_BG_DEPTH = 2,
135 CLEAR_BG_COLOR = 3
137
138 /// \details The ViewData class. Describes a single view within GlsMultiView.
139 class ViewData : virtual public AttributeChangedNotifier
140 {
141 friend class GlsMultiView;
142 friend class GlsMultiViewEditor;
143
144 float _bottom; ///< The bottom edge of the view from 0.0 to 1.0, or in pixels if _absolutePixels is true.
145 float _left; ///< The left edge of the view from 0.0 to 1.0, or in pixels if _absolutePixels is true.
146 float _top; ///< The top edge of the view from 0.0 to 1.0, or in pixels if _absolutePixels is true.
147 float _right; ///< The right edge of the view from 0.0 to 1.0, or in pixels if _absolutePixels is true.
148 bool _absolutePixels; ///< If true, the corners are defined in screen space pixels, otherwise is the portion of the screen from 0.0 to 1.0.
149 GlsEyePoint* _eyepoint; ///< The associated eyepoint for this view, can be NULL. In this case the parent's view is used.
150 std::string _desiredEyePoint; ///< The optional name of the eyepoint to associate to this view.
151 int _clearBackground; ///< Defines the clear behavior for this view, \see ClearBackgroundEnum.
152 bool _pickGeometry; ///< If true, allows the view itself to be picked.
153 bool _visible; ///< If true, this view will be drawn.
154 bool _pickable; ///< If true, geometry within the view can be picked.
155
156 DistiAttribDict _attribDict; ///< The attribute dictionary holding the members of this class.
157 GlsMatrixType* _modelMatrix; ///< The modelview matrix associated with this view.
158 GlsMatrixType* _projMatrix; ///< The projection matrix associated with this view.
159 int* _viewPort; ///< The viewport associated with this view.
160 bool _cullerVal; ///< The state of the incoming Culler object, used in PreDraw.
161
162 GlsMultiView* _multiView; ///< Parent pointer, back to the associated GlsMultiView object.
163
164 /// \note For public access, use GetEyePoint(). It requires an object pointer.
165 /// \return The pointer to the eyepoint for this view.
166 GlsEyePoint* EyePoint();
167
168 /// Set the associated parent GlsMultiView for this view.
169 /// \param view The new parent object to set.
170 void SetMultiview( GlsMultiView* view );
171
172 /// Initializes the attribute dictionary for this object, associating member variables.
173 void InitAttributes();
174
175 public:
177
178 /// Copy constructor
180
182
183 /// Assignment operator
184 /// \return The resulting object (this).
186
187 /// Copies the baseline data from the other view object.
188 /// This does not include derived or cached values (like matrices / object pointers).
189 /// \param other The object to copy from.
191
192 /// \return The attribute dictionary for this view.
193 DistiAttribDict& Attributes() { return _attribDict; };
194
196
197 /// Sets the Screen Rectangle
198 /// The screen rect is specified in 0.0-1.0 as a ratio of the available viewport
199 /// e.g. 0.0, 0.0, 1.0, 1.0 uses the full screen.
200 /// \param bottom The bottom corner of the view rectangle.
201 /// \param left The left corner of the view rectangle.
202 /// \param top The top corner of the view rectangle.
203 /// \param right The right corner of the view rectangle.
204 GLSGEN_GlsMultiView_EXPORT void SetScreenRect( float bottom, float left, float top, float right );
205
206 /// Returns the current screen rectangle.
207 /// \param bottom The returned bottom corner of the view rectangle.
208 /// \param left The returned left corner of the view rectangle.
209 /// \param top The returned top corner of the view rectangle.
210 /// \param right The returned right corner of the view rectangle.
211 GLSGEN_GlsMultiView_EXPORT void GetScreenRect( float* bottom, float* left, float* top, float* right ) const;
212
213 /// Set the bottom value.
214 GLSGEN_GlsMultiView_EXPORT void Bottom( const float& );
215
216 /// \return The bottom value.
218
219 /// Set the left value.
220 GLSGEN_GlsMultiView_EXPORT void Left( const float& );
221
222 /// \return The left value.
224
225 /// Set the top value.
226 GLSGEN_GlsMultiView_EXPORT void Top( const float& );
227
228 /// \return The top value.
230
231 /// Set the right value.
232 GLSGEN_GlsMultiView_EXPORT void Right( const float& );
233
234 /// \return The right value.
236
237 /// Set the absolute pixels flag.
238 /// When true, the Left-Right-Top-Bottom values are interpreted
239 /// as pixel coordinates, otherwise they are percentage of screen space.
241
242 /// Get the absolute pixels flag.
243 /// When true, the Left-Right-Top-Bottom values are interpreted
244 /// as pixel coordinates, otherwise they are percentage of screen space.
245 /// \return the current absolute pixels flag
247
248 /// Sets the eyepoint to view from. When NULL, the parent view is used.
250
251 /// Sets the clear background mode
252 /// 0 == Don't Clear; 1 == Clear both; 2 == Depth only; 3 == Color only
253 /// \sa ClearBackgroundEnum
255
256 /// \return The clear background mode.
258
259 /// Sets the pick geometry flag
260 /// When true, the geometry will be traversed with Pick3D in this view.
262
263 /// \return The pick geometry flag.
265
266 /// Set the visibility of this view .
268
269 /// \return The visibility of this view.
271
272 /// Set if this view is pickable.
273 /// If true, and PickGeometry() is false, the view area will be picked.
275
276 /// \return The pickability of this view.
278
279 /// Set the name of the view's eyepoint.
281
282 /// \return The name of the view's eyepoint.
284
285 /// Finds the eyepoint or returns a previously found one.
286 /// It will be based on the _desiredEyePoint.
287 /// \param heirarchiedObject The point in the hierarchy to start searching for the eyepoint.
288 /// \return A pointer to the found eyepoint, else NULL.
290
291 /// Forces eyepoint reload, causes the multi view to trigger a redraw.
293
294 /// \return the cached OpenGL matrices from the previous frame's draw
296 };
297
298 typedef DynamicArray<ViewData> ViewDataArray; ///< Shorthand typedef for a list of views.
299
300 /// \details The ViewDrawStateEnum enumeration. Describes the drawing behavior for the multi view.
301 typedef enum
302 {
303 GEOMETRY_ONLY = 0,
304 GEOMETRY_AND_VIEWS,
305 VIEWS_ONLY
307
308 /// Set the ViewDrawingState.
310
311 /// \return the ViewDrawingState
313
314 /** Returns the number of views
315 * \return The view count
316 */
318
319 /// Returns a reference to the specified View object
320 /// Creates it (and all views with a lower id) if it doesn't exist
321 /// \param viewNumber The index of the view to return.
322 /// \return The associated view.
323 GLSGEN_GlsMultiView_EXPORT ViewData& View( unsigned int viewNumber );
324
325 /// \return A reference to the array containing the Views.
327
328 /// Return the integer id of the last view that was picked or
329 /// -1 if no view has been picked yet or if the GlsMultiview
330 /// was picked because it is set to PICK_ALWAYS.
331 /// \return The id of the last view that was picked.
333
334 /** Set the value for _emitViewDrawEvents
335 * When true, an object event is emitted at the start and
336 * end the draw of each view.
337 * VIEW_DRAW_BEGIN and VIEW_DRAW_END
338 * The data of the event is the view index.
339 *
340 * These events are currently EXPERIMENTAL and may be removed or
341 * changed in a future release. They are not accessable from the
342 * plugin GUI for this reason.
343 */
345
346 /// \return The value for _emitViewDrawEvents.
348
349 /// Draws the given view.
350 /// \note Not normally called by users.
351 /// \param viewNumber The index of the view to draw.
352 /// \param view The view data of the view to draw.
353 GLSGEN_GlsMultiView_EXPORT void DrawView( unsigned int viewNumber, ViewData* view );
354
355protected:
356 /// Calculate the matrices that are used for drawing the given view.
357 /// This method is called during the PreDraw, then the matrices
358 /// are used to setup the geometry for the Draw and Pick3D later.
359 /// \note Not normally called by users.
360 /// \param parentMatrices The initial matrix state at the parent view.
361 /// \param culler The intial culler state at the parent view.
362 /// \param view The view to calculate matrices for.
364
365 /// Applies the matrices for the given view to the geometry in preparation for a pick or draw.
366 /// \note Not normally called by users.
367 /// \param viewNumber The number of the last view predraw or -1 if predraw used parent's view.
368 /// \param view The view data to predraw for.
369 /// \return True if the predraw was successful (view data is valid).
371
372 /// Forces a recalculation of parent lighting based on the current view.
373 /// \note Not normally called by users.
374 /// \param view The view to be used when calling ComponentLightMgr::ReapplyLightsForEyePoint().
376
377#ifdef GLES
378 /** Set a single attribute from the GLO file.
379 * \param data The attribute to set and its associated data.
380 */
381 GLSGEN_GlsMultiView_EXPORT virtual void SetFromGloData( GlsGloFileAttribute& data ) DISTI_METHOD_OVERRIDE;
382#endif
383
384 ViewDrawStateEnum _viewDrawingState; ///< The drawing behavior for the multi view, generally VIEWS_ONLY.
385 ViewDataArray _viewArray; ///< The list of all views associated with this multi view.
386 ViewData _mainViewData; ///< The main (parent) view used for drawing geometry based views.
387 int _lastViewPicked; ///< The index of the last view picked, or -1 if the main view.
388 int _lastViewPredraw; ///< The index of the last view predraw or -1 if predraw used parent's view.
389
390 bool _showHighlights; ///< Used by the editor to turn on and off highlights.
391 int _highlightView; ///< Used by the editor to highlight a specific view. -1 is none.
392
393 bool _emitViewDrawEvents; ///< If true, will emit VIEW_DRAW_BEGIN / VIEW_DRAW_END object events on draw.
394
395 ComponentLightMgr* _multiViewLightMgr; ///< Our very own light manager.
396 bool _childLightsAffectGlobal; ///< Calculated internally based on if geometry is drawn.
397
398 GlsMatrixType _savedProjectionMatrix; ///< Stores the projection matrix from PreDraw for restoring after DrawView
399
400private:
401 void OnViewDataChanged();
402 void OnViewDrawingStateChanged();
403 void OnViewArrayChange();
404
405 void DummySetInt( const int& ) {} // Used for making a read only property
408};
409
410/// \details The DistiAttributeViewDataArray class. Allows access to GlsMultiView::ViewData through the resource interface.
412{
413 GlsMultiView::ViewDataArray& _array; ///< Observing reference to underlying view data storage.
414
415public:
416 /// Constructor, uses existing storage
417 /// \param caller The callback to call when this attribute changes.
418 /// \param name The name of the attribute.
419 /// \param array The existing view data storage.
421 : DistiAttributeBase( caller, name, false )
422 , _array( array )
423 {
424 }
425
426 /// Assignment operator
427 /// \param oldClass The object to copy from.
428 /// \return The resulting object (this).
430 {
432 if( ( ptr = dynamic_cast<const DistiAttributeViewDataArray*>( &oldClass ) ) )
433 {
434 // Copy array contents directly
435 _array = ptr->_array;
436 CallCallback();
437 }
438 else
439 {
440 // Copy by string value
441 return DistiAttributeBase::operator=( oldClass );
442 }
443 return *this;
444 }
445
446 std::istream& ReadValue( std::istream& instr ) DISTI_METHOD_OVERRIDE
447 {
448 // Scan through the token including the ':'
449 std::string buf;
450
451 // read through opening brace
452 instr.ignore( 1024, '{' );
453
454 // Clear the array before reading
455 _array.Clear();
456
457 while( DistiAttribDict::ScanToken( instr, buf ) )
458 {
459 if( buf.length() )
460 {
461 int index;
462 index = atoi( buf.c_str() );
463
464 // Eat the space between the : and the data
465 instr.get();
466 instr.ignore( 1024, '{' );
467
468 // This eats the closing brace
469 _array[ index ].Attributes().Read( instr );
470 }
471 }
472 CallCallback();
473
474 return instr;
475 }
476
477 std::ostream& WriteValue( std::ostream& outstr ) DISTI_METHOD_OVERRIDE
478 {
479 outstr << "\n"
481 << "\n";
483
484 for( unsigned int i = 0; i < _array.Count(); i++ )
485 {
486 outstr << DistiAttribDict::SpacingString() << i << ":\n";
487 outstr << DistiAttribDict::SpacingString() << "{\n";
489
490 _array[ i ].Attributes().Write( outstr );
491
493 outstr << DistiAttribDict::SpacingString() << "}\n";
494 }
496 outstr << DistiAttribDict::SpacingString() << "}";
497 return outstr;
498 }
499};
500
501} // namespace disti
502
503#endif
Definition: disti_metadata.h:514
Definition: disti_metadata.h:87
Definition: callback_caller_base.h:56
Definition: component_light_mgr.h:56
Definition: cull.h:50
Definition: events.h:113
Definition: display.h:96
Definition: disti_metadata.h:734
static bool ScanToken(std::istream &instr, std::string &result)
static void SpacingInc()
static void SpacingDec()
static std::string SpacingString()
Definition: disti_metadata.h:220
virtual void CallCallback()
Calls callback CallType3 if it has been set.
virtual DistiAttributeBase & operator=(const DistiAttributeBase &oldClass)
Definition: gls_multi_view.h:412
std::ostream & WriteValue(std::ostream &outstr) DISTI_METHOD_OVERRIDE
Definition: gls_multi_view.h:477
DistiAttributeViewDataArray(CallbackMethodCallerBase *caller, AttributeName name, GlsMultiView::ViewDataArray &array)
Definition: gls_multi_view.h:420
DistiAttributeBase & operator=(const DistiAttributeBase &oldClass) DISTI_METHOD_OVERRIDE
Definition: gls_multi_view.h:429
std::istream & ReadValue(std::istream &instr) DISTI_METHOD_OVERRIDE
Definition: gls_multi_view.h:446
Definition: dynamic_array.h:79
unsigned Count() const
Definition: dynamic_array.h:218
void Clear()
Definition: dynamic_array.h:253
Definition: gls_eyepoint.h:117
Definition: gls_glo_file.h:1243
Definition: gls_multi_view.h:140
void EyePoint(GlsEyePoint *)
Sets the eyepoint to view from. When NULL, the parent view is used.
void ForceEyePointReload()
Forces eyepoint reload, causes the multi view to trigger a redraw.
virtual void NotifyAttributeChanged(const AttributeName &name) DISTI_METHOD_OVERRIDE
void Bottom(const float &)
Set the bottom value.
OpenGLMatrices SavedMatrices() const
void SetScreenRect(float bottom, float left, float top, float right)
void ClearBackground(const int &)
const ViewData & operator=(const ViewData &)
void Right(const float &)
Set the right value.
ViewData(const ViewData &)
Copy constructor.
void Left(const float &)
Set the left value.
GlsPropString DesiredEyePoint() const
void Visible(bool)
Set the visibility of this view .
void DesiredEyePoint(const GlsPropString &)
Set the name of the view's eyepoint.
void AbsolutePixels(const bool &)
DistiAttribDict & Attributes()
Definition: gls_multi_view.h:193
void Top(const float &)
Set the top value.
void GetScreenRect(float *bottom, float *left, float *top, float *right) const
void PickGeometry(const bool &)
void CopyBaseData(const ViewData &other)
GlsEyePoint * GetEyePoint(const DisplayObject *heirarchiedObject)
Definition: gls_multi_view.h:78
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL) DISTI_METHOD_OVERRIDE
GlsMultiView(int generateInstance=FALSE)
virtual void SetAvailableAttributes(unsigned int value) DISTI_METHOD_OVERRIDE
virtual void Draw() DISTI_METHOD_OVERRIDE
virtual void GetCppInterfaceDescriptionFree(InterfaceListType *array) DISTI_METHOD_OVERRIDE
void ReapplyGlobalLightsForView(ViewData *view)
GlsMatrixType _savedProjectionMatrix
Stores the projection matrix from PreDraw for restoring after DrawView.
Definition: gls_multi_view.h:398
bool PreDrawGeometryForView(int viewNumber, ViewData *view)
enum disti::GlsMultiView::@22 ClearBackgroundEnum
ViewData _mainViewData
The main (parent) view used for drawing geometry based views.
Definition: gls_multi_view.h:386
virtual DisplayObject * CloneObject(bool generateNames=FALSE) DISTI_METHOD_OVERRIDE
ViewDrawStateEnum ViewDrawingState()
virtual void PreDraw(const OpenGLMatrices &parentMatrices, Culler &culler) DISTI_METHOD_OVERRIDE
void EmitViewDrawEvents(const bool &)
virtual DisplayObject * handle(DisplayEvent *ev) DISTI_METHOD_OVERRIDE
bool _emitViewDrawEvents
If true, will emit VIEW_DRAW_BEGIN / VIEW_DRAW_END object events on draw.
Definition: gls_multi_view.h:393
bool EmitViewDrawEvents() const
int _lastViewPredraw
The index of the last view predraw or -1 if predraw used parent's view.
Definition: gls_multi_view.h:388
virtual void SetValue(int spec, va_list &args) DISTI_METHOD_OVERRIDE
ComponentLightMgr * _multiViewLightMgr
Our very own light manager.
Definition: gls_multi_view.h:395
ViewDataArray _viewArray
The list of all views associated with this multi view.
Definition: gls_multi_view.h:385
int _highlightView
Used by the editor to highlight a specific view. -1 is none.
Definition: gls_multi_view.h:391
unsigned int ViewCount() const
int LastViewPicked() const
int _lastViewPicked
The index of the last view picked, or -1 if the main view.
Definition: gls_multi_view.h:387
static DisplayObject * CreateInstance()
ViewDrawStateEnum
Definition: gls_multi_view.h:302
DynamicArray< ViewData > ViewDataArray
Shorthand typedef for a list of views.
Definition: gls_multi_view.h:298
virtual DistiAttributeBase & Resource(const char *name) DISTI_METHOD_OVERRIDE
ViewData & View(unsigned int viewNumber)
virtual DisplayObject * Pick3D(const Vector &winLoc, const Vector &logicalCoords, float scale, const Vector &directionVector, Vector &collisionWinLoc, const OpenGLMatrices &drawnMatrices) DISTI_METHOD_OVERRIDE
virtual void CopyProperties(DisplayObject *src) DISTI_METHOD_OVERRIDE
void DrawView(unsigned int viewNumber, ViewData *view)
virtual void GetResources(std::ostream &outstr, GlsResourceFilter *filter=NULL) DISTI_METHOD_OVERRIDE
ViewDrawStateEnum _viewDrawingState
The drawing behavior for the multi view, generally VIEWS_ONLY.
Definition: gls_multi_view.h:384
bool _showHighlights
Used by the editor to turn on and off highlights.
Definition: gls_multi_view.h:390
bool _childLightsAffectGlobal
Calculated internally based on if geometry is drawn.
Definition: gls_multi_view.h:396
void ViewDrawingState(ViewDrawStateEnum)
Set the ViewDrawingState.
ViewDataArray & ViewArray()
void CalculateViewMatrices(const OpenGLMatrices &parentMatrices, Culler &culler, GlsMultiView::ViewData *view) const
Definition: util.h:1607
Definition: gls_resources.h:51
Definition: group.h:53
Class to contain current OpenGL view, projection and draw matrices.
Definition: util.h:544
Definition: vertex.h:85
GL Studio Enumerations and constants.
The gls_auto_lib.
#define DISTI_SPECIAL_MEM_FUN_DELETE
Macro to wrap function deletion, removed on compilers that don't support it.
Definition: gls_cpp_lang_support.h:235
#define DISTI_DEPRECATED(msg)
Defines whether this compiler supports the C++14 deprecated attribute.
Definition: gls_cpp_lang_support.h:457
#define DISTI_METHOD_OVERRIDE
Macro to wrap the override keyword, removed on compilers that don't support it.
Definition: gls_cpp_lang_support.h:214
The disti::GlsEyePoint class. Implements eyepoints.
#define GLSGEN_GlsMultiView_EXPORT
Provides support for creating DLLs.
Definition: gls_multi_view.h:61
The disti::Group class. Implements groups of objects.
Force inclusion of the DirectShow library.
Definition: bmpimage.h:47
#define FALSE
False macro, for backward compatibility purposes.
Definition: util.h:107