23template<
class CycleDataType>
26 int stage,
Thread *current_thread) :
28 _current_thread(current_thread),
31 _pointer = _cycler->read_stage_unlocked(_stage);
37template<
class CycleDataType>
40 _cycler(copy._cycler),
41 _current_thread(copy._current_thread),
42 _pointer(copy._pointer),
50template<
class CycleDataType>
53 nassertv(_current_thread == copy._current_thread);
55 _cycler = copy._cycler;
56 _pointer = copy._pointer;
63template<
class CycleDataType>
71template<
class CycleDataType>
81template<
class CycleDataType>
83operator
const CycleDataType * ()
const {
91template<
class CycleDataType>
94 return _current_thread;
103template<
class CycleDataType>
107 _pointer = cycler.
cheat();
113template<
class CycleDataType>
116 _pointer(copy._pointer)
123template<
class CycleDataType>
126 _pointer = copy._pointer;
132template<
class CycleDataType>
140template<
class CycleDataType>
150template<
class CycleDataType>
152operator
const CycleDataType * ()
const {
160template<
class CycleDataType>
This class is similar to CycleDataReader, except it allows reading from a particular stage of the pip...
Thread * get_current_thread() const
Returns the Thread pointer of the currently-executing thread, as passed to the constructor of this ob...
const CycleDataType * operator->() const
This provides an indirect member access to the actual CycleData data.
A thread; that is, a lightweight process.
get_current_thread
Returns a pointer to the currently-executing Thread object.
This class maintains different copies of a page of data between stages of the graphics pipeline (or a...
CycleDataType * cheat() const
Returns a pointer without counting it.