26 template<
class CycleDataType>
31 _current_thread(current_thread)
33 _pointer = _cycler->read_unlocked(_current_thread);
41 template<
class CycleDataType>
44 _cycler(copy._cycler),
45 _current_thread(copy._current_thread),
46 _pointer(copy._pointer)
55 template<
class CycleDataType>
58 nassertv(_current_thread == copy._current_thread);
60 _cycler = copy._cycler;
61 _pointer = copy._pointer;
69 template<
class CycleDataType>
80 template<
class CycleDataType>
92 template<
class CycleDataType>
94 operator
const CycleDataType * ()
const {
104 template<
class CycleDataType>
116 template<
class CycleDataType>
119 return _current_thread;
122 #else // !DO_PIPELINING
130 template<
class CycleDataType>
133 _pointer = cycler.
cheat();
141 template<
class CycleDataType>
144 _pointer(copy._pointer)
153 template<
class CycleDataType>
156 _pointer = copy._pointer;
164 template<
class CycleDataType>
175 template<
class CycleDataType>
187 template<
class CycleDataType>
189 operator
const CycleDataType * ()
const {
199 template<
class CycleDataType>
211 template<
class CycleDataType>
217 #endif // DO_PIPELINING
This class maintains different copies of a page of data between stages of the graphics pipeline (or a...
static Thread * get_current_thread()
Returns a pointer to the currently-executing Thread object.
This template class calls PipelineCycler::read_unlocked(), and then provides a transparent read-only ...
const CycleDataType * p() const
This allows the CycleDataReader to be passed to any function that expects a const CycleDataType point...
CycleDataType * cheat() const
Returns a pointer without counting it.
Thread * get_current_thread() const
Returns the Thread pointer of the currently-executing thread, as passed to the constructor of this ob...
A thread; that is, a lightweight process.
const CycleDataType * operator->() const
This provides an indirect member access to the actual CycleData data.