23 template<
class CycleDataType>
28 _current_thread(current_thread)
30 _pointer = _cycler->read_unlocked(_current_thread);
36 template<
class CycleDataType>
39 _cycler(copy._cycler),
40 _current_thread(copy._current_thread),
41 _pointer(copy._pointer)
48 template<
class CycleDataType>
51 nassertv(_current_thread == copy._current_thread);
53 _cycler = copy._cycler;
54 _pointer = copy._pointer;
60 template<
class CycleDataType>
68 template<
class CycleDataType>
78 template<
class CycleDataType>
80 operator
const CycleDataType * ()
const {
88 template<
class CycleDataType>
98 template<
class CycleDataType>
101 return _current_thread;
104 #else // !DO_PIPELINING 110 template<
class CycleDataType>
113 _pointer = cycler.
cheat();
119 template<
class CycleDataType>
122 _pointer(copy._pointer)
129 template<
class CycleDataType>
132 _pointer = copy._pointer;
138 template<
class CycleDataType>
146 template<
class CycleDataType>
156 template<
class CycleDataType>
158 operator
const CycleDataType * ()
const {
166 template<
class CycleDataType>
176 template<
class CycleDataType>
179 return Thread::get_current_thread();
182 #endif // DO_PIPELINING const CycleDataType * p() const
This allows the CycleDataReader to be passed to any function that expects a const CycleDataType point...
This class maintains different copies of a page of data between stages of the graphics pipeline (or a...
Thread * get_current_thread() const
Returns the Thread pointer of the currently-executing thread, as passed to the constructor of this ob...
CycleDataType * cheat() const
Returns a pointer without counting it.
This template class calls PipelineCycler::read_unlocked(), and then provides a transparent read-only ...
A thread; that is, a lightweight process.
const CycleDataType * operator ->() const
This provides an indirect member access to the actual CycleData data.