VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtIndirectUvOffsetManager.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2021 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
14 
16 
18 #include <vrvMath/DtVector2.h>
19 
21 
22 #include <unordered_map>
23 
24 namespace osg
25 {
26 class State;
27 }
28 
29 namespace makVrv
30 {
31  class DtInstanceContainer;
32  class DtDe;
33  class DtGlBuffer;
34 
37 
40 
42  template <>
43  inline const char* creatorTypeName<DtIndirectUvOffsetManager>(void) { return "DtIndirectUvOffsetManagerCreator"; }
44 
50  {
51  public:
52 
53  typedef std::map<std::string, unsigned int> AnnotationToUvOffsetMap;
54  typedef std::map<int, AnnotationToUvOffsetMap> MapIntToAnnotationToUvOffsetMap;
55 
57  {
58  public:
60  public:
62  int mySide; // left, right, none
63 
64  };
65  typedef std::unordered_map<int, MultiplierAndTrackSide> ScrollableUvOffsetIdsAndMultipliers;
66  typedef std::unordered_map< int, ScrollableUvOffsetIdsAndMultipliers > MapInstancesToScrollableUvOffsetIds;
67 
68  //Simple data struct for holding 2 floats for the uv offset
69  struct UvOffset
70  {
71  float uOffset;
72  float vOffset;
73  };
74 
75  public:
78 
80  virtual ~DtIndirectUvOffsetManager();
81  protected:
84 
85  private:
87  DtIndirectUvOffsetManager() = delete;
91  DtIndirectUvOffsetManager &operator=(const DtIndirectUvOffsetManager &other) = delete;
92 
93  public:
95  virtual void addUvOffsetAnnotations(int perGeomInstanceIndex, int size, const AnnotationToUvOffsetMap& annotationToUvOffsetMap, const ScrollableUvOffsetIdsAndMultipliers& scrollableUvOffsetIds, int instanceId);
96 
98  virtual void addUvOffsetAnnotation(int perGeomInstanceIndex, unsigned int uvOffsetStartId);
99 
101  virtual void removeUvOffsets(int instanceId);
102 
104  virtual void setUvOffset(const std::string& annotation, int instanceId, float uOffset, float vOffset);
105 
107  virtual void scrollUv(int instanceId, const std::tuple<float, float, float>& uvSpeeds);
108 
110  virtual void annotationAndUvOffsets(int instanceId, std::vector<DtIndirectAnnotationAndUvOffset>& annotations) const;
111 
114  virtual void setPureSignalBasedUvOffsets(bool val);
115 
118  virtual bool pureSignalBasedUvOffsets(void) const;
119 
121  virtual void processUvOffsets(void);
122 
124  virtual void releaseGLObjects(osg::State* state) const;
125 
127  virtual const DtGlBuffer* gpuUvOffsetBuffer(void) const;
128 
129  protected:
130 
132  virtual void updateUvOffsetBufferIfNecessary(void);
133 
135  virtual void deleteBuffers(void);
136 
138  virtual void tearDownBuffers(void) const;
139 
140  protected:
141 
144 
146 
147  //Simple operator for initializing the UVOffsets to 0
149  {
150  void operator()(UvOffset& info);
151  };
152 
153  //which parent switches of this geometry are turned off
154  //(so if this is 0 then all switches are turned on and the geometry should be visible)
157 
159 
161  };
162 
163 }
MapInstancesToScrollableUvOffsetIds myMapInstancesToScrollableUvOffsetIds
Definition: DtIndirectUvOffsetManager.h:143
parent manager class for all Indirect managers. Managers handle information about a specific feature ...
Definition: DtIndirectManager.h:26
2 dimensional vector
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
const char * creatorTypeName< DtIndirectUvOffsetManager >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtIndirectUvOffsetManager.h:43
Contains makVrv::DtIndirectManager class.
voidpf void uLong size
Definition: ioapi.h:39
bool myPureSignalBasedSwitches
Definition: DtIndirectUvOffsetManager.h:160
Definition: DtIndirectUvOffsetManager.h:69
friend DtIndirectUvOffsetManagerCreator
only creator can create
Definition: DtIndirectUvOffsetManager.h:77
float uOffset
Definition: DtIndirectUvOffsetManager.h:71
bool myMutableUvOffsetsDirty
Definition: DtIndirectUvOffsetManager.h:145
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:23
VectorUvOffsets myVectorUvOffsets
Definition: DtIndirectUvOffsetManager.h:156
std::map< std::string, unsigned int > AnnotationToUvOffsetMap
Definition: DtIndirectUvOffsetManager.h:53
std::unordered_map< int, MultiplierAndTrackSide > ScrollableUvOffsetIdsAndMultipliers
Definition: DtIndirectUvOffsetManager.h:65
float vOffset
Definition: DtIndirectUvOffsetManager.h:72
std::map< int, AnnotationToUvOffsetMap > MapIntToAnnotationToUvOffsetMap
Definition: DtIndirectUvOffsetManager.h:54
DtReusableMemoryVector< UvOffset, UvOffsetInitializer > VectorUvOffsets
Definition: DtIndirectUvOffsetManager.h:155
Definition: DtIndirectUvOffsetManager.h:148
Vector2_32 myMultiplier
Definition: DtIndirectUvOffsetManager.h:61
A generic OpenGL buffer. This can be: -&gt; a vertex buffer -&gt; an index buffer -&gt; a shader storage buffe...
Definition: DtGlBuffer.h:29
Contains makVrv::DtIndirectAnnotationAndUvOffset class.
DtGlBuffer * myGpuUvOffsetBuffer
Definition: DtIndirectUvOffsetManager.h:158
Definition: DtIndirectUvOffsetManager.h:56
Contains makVrv::DtReusableMemoryVector class.
std::unordered_map< int, ScrollableUvOffsetIdsAndMultipliers > MapInstancesToScrollableUvOffsetIds
Definition: DtIndirectUvOffsetManager.h:66
handles the uv offsets for all the indirect geometry. Sets up the default state of the uv offset...
Definition: DtIndirectUvOffsetManager.h:49
Contains DLL export macros.
DtVirtualBaseClassCreator< DtIndirectUvOffsetManager, DtInstanceContainer & > DtIndirectUvOffsetManagerCreator
creator
Definition: DtIndirectUvOffsetManager.h:36
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
Helper class to manage instances This class allows you to add a DtInstance_64 Internally, however it stores this as a DtInstance (which the GPU can directly read)
Definition: DtInstanceContainer.h:31
MapIntToAnnotationToUvOffsetMap myMapIntToAnnotationToUvOffsetMap
Definition: DtIndirectUvOffsetManager.h:142
int mySide
Definition: DtIndirectUvOffsetManager.h:62

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)