VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rangeItemsStateComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 
12 
13 namespace makVrf
14 {
16  {
18  {
19  }
20 
22  : myRangeItems(orig.myRangeItems)
23  {
24  };
25 
27  {
28  myRangeItems = rhs.myRangeItems;
29 
30  return *this;
31  }
32 
33  void setRangeItems(const DtRangeItems& r)
34  {
35  myRangeItems = r;
36  }
37 
38  void addRangeItem(const DtRangeItem& i)
39  {
40  myRangeItems.myRangeItems.push_back(i);
41  }
42 
43  void removeRangeItem(int index)
44  {
45  if ((index > -1) && (index < (int)myRangeItems.myRangeItems.size()))
46  {
47  myRangeItems.myRangeItems.erase(myRangeItems.myRangeItems.begin() + index);
48  }
49  }
50 
52  {
53  myRangeItems.myRangeItems.clear();
54  }
55 
56  DEFINE_REF_ACCESSORS(DtRangeItems, rangeItems, RangeItems)
57 
58  protected:
59  DtRangeItems myRangeItems;
60  };
61 
65  {
66  public:
68 
70  : DtFrameStateInterface(storage)
71  {
72  }
73 
74  UNDEFINED_MUTATOR(DtRangeItems, rangeItems, RangeItems)
76  UNDEFINED_METHOD(void, clearRangeItems)
77  UNDEFINED_METHOD(void, addRangeItem, const DtRangeItem&)
78  UNDEFINED_METHOD(void, removeRangeItem, int)
79  };
80 
83  {
84  public:
86 
88  const DtRangeItemsStateComponentData& frameState() const { return myData; };
90 
91  void setRangeItems(const DtRangeItems& i);
92  void addRangeItem(const DtRangeItem& i);
93  void removeRangeItem(int index);
94  const DtRangeItems& rangeItems() const;
95  DtRangeItems& rangeItems();
96  void clearRangeItems();
97 
99  virtual void makeWritable() {};
100 
102  virtual void makeReadOnly() {};
103 
104  protected:
106  };
107 
110  {
111  public:
113 
115  const DtRangeItemsStateComponentData& frameState() const { return myData; };
116 
117  const DtRangeItems& rangeItems() const;
118 
119  protected:
122  {
123  myData = data;
124  }
125 
126  protected:
128  };
129 
133  {
134  public:
136 
137  bool isDoubleBuffered() { return true; };
138  const DtFrameStateInterface* currentFrameState() const { return &myCurrentFrameState; }
139  virtual DtFrameStateInterface* nextFrameState() { return &myNextFrameState; };
140  virtual const DtFrameStateInterface* nextFrameState() const { return &myNextFrameState; };
141 
142  void updateDataStorage();
143 
145  {
146  myCurrentFrameState.updateStateData(sd);
147  myNextFrameState.updateStateData(sd);
148  }
149 
150  virtual void aboutToBeDeleted() override
151  {
153  myCurrentFrameState.aboutToBeDeleted();
154  myNextFrameState.aboutToBeDeleted();
155  }
156 
157  protected:
160  };
161 
165 }
bool isDoubleBuffered()
Definition: rangeItemsStateComponent.h:137
virtual const DtFrameStateInterface * nextFrameState() const
Definition: rangeItemsStateComponent.h:140
#define UNDEFINED_METHOD(Type, Method,...)
Definition: doubleBufferedDataStorage.h:68
virtual DtFrameStateInterface * nextFrameState()
Definition: rangeItemsStateComponent.h:139
const DtRangeItemsStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: rangeItemsStateComponent.h:115
2) Define the next frame class. This will be used for write access.
Definition: rangeItemsStateComponent.h:82
Definition: stateComponent.h:257
virtual void aboutToBeDeleted() override
Definition: rangeItemsStateComponent.h:150
#define UNDEFINED_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:44
#define UNDEFINED_RETURNREF_ACCESSORS(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:40
DtRangeItemsStateComponentData & frameState()
Definition: rangeItemsStateComponent.h:89
const DtRangeItemsStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: rangeItemsStateComponent.h:88
void updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: rangeItemsStateComponent.h:144
DtRangeItemsStateComponentCurrentFrame myCurrentFrameState
Definition: rangeItemsStateComponent.h:158
DtRangeItems myRangeItems
Definition: rangeItemsStateComponent.h:59
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: rangeItemsStateComponent.h:64
Definition: rangeItem.h:149
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:219
void clearRangeItems()
Definition: rangeItemsStateComponent.h:51
DtRangeItemsStateComponentData & operator=(const DtRangeItemsStateComponentData &rhs)
Definition: rangeItemsStateComponent.h:26
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: rangeItemsStateComponent.h:132
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:365
void removeRangeItem(int index)
Definition: rangeItemsStateComponent.h:43
Definition: rangeItemsStateComponent.h:15
virtual void aboutToBeDeleted()
DtRangeItemsStateComponentData(const DtRangeItemsStateComponentData &orig)
Definition: rangeItemsStateComponent.h:21
Definition: rangeItem.h:206
void addRangeItem(const DtRangeItem &i)
Definition: rangeItemsStateComponent.h:38
#define DEFINE_REF_ACCESSORS(ReturnType, Method, Member)
Definition: doubleBufferedDataStorage.h:13
3) Define the current frame class. This will be used for read access.
Definition: rangeItemsStateComponent.h:109
const DtFrameStateInterface * currentFrameState() const
Definition: rangeItemsStateComponent.h:138
DtRangeItemsStateComponentNextFrame myNextFrameState
Definition: rangeItemsStateComponent.h:159
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
DtRangeItemsStateComponentData myData
Definition: rangeItemsStateComponent.h:127
void setRangeItems(const DtRangeItems &r)
Definition: rangeItemsStateComponent.h:33
DtRangeItemsStateComponentData()
Definition: rangeItemsStateComponent.h:17
Contains the DtStateComponent class declaration.
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:282
DtStateComponentCreator< DtRangeItemsStateComponentImplementation > DtRangeItemsStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: rangeItemsStateComponent.h:164
void advanceFrame(const DtRangeItemsStateComponentData &data)
Definition: rangeItemsStateComponent.h:121
virtual void makeWritable()
Override to make component writable.
Definition: rangeItemsStateComponent.h:99

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)