15 #include "sliderTable.h" 16 #include "bamReader.h" 17 #include "bamWriter.h" 18 #include "vertexTransform.h" 41 _is_registered(false),
42 _sliders(copy._sliders),
43 _sliders_by_name(copy._sliders_by_name)
54 nassertv(!_is_registered);
55 _sliders = copy._sliders;
56 _sliders_by_name = copy._sliders_by_name;
79 nassertv(!_is_registered);
80 nassertv(n >= 0 && n < (
int)_sliders.size());
82 if (_sliders[n]._slider->get_name() != slider->
get_name()) {
83 _sliders_by_name[_sliders[n]._slider->get_name()].clear_bit(n);
84 _sliders_by_name[slider->
get_name()].set_bit(n);
87 _sliders[n]._slider = slider;
102 nassertv(n >= 0 && n < (
int)_sliders.size());
104 _sliders[n]._rows = rows;
115 nassertv(!_is_registered);
116 nassertv(n >= 0 && n < (
int)_sliders.size());
118 _sliders_by_name[_sliders[n]._slider->get_name()].clear_bit(n);
119 _sliders.erase(_sliders.begin() + n);
131 nassertr(!_is_registered, -1);
133 int new_index = (int)_sliders.size();
135 SliderDef slider_def;
136 slider_def._slider = slider;
137 slider_def._rows = rows;
138 _sliders.push_back(slider_def);
139 _sliders_by_name[slider->
get_name()].set_bit(new_index);
150 write(ostream &out)
const {
151 for (
size_t i = 0; i < _sliders.size(); ++i) {
152 out << i <<
". " << *_sliders[i]._slider <<
" " 153 << _sliders[i]._rows <<
"\n";
164 nassertv(!_is_registered);
166 Sliders::iterator si;
167 for (si = _sliders.begin(); si != _sliders.end(); ++si) {
169 bool inserted = ((
VertexSlider *)slider)->_tables.insert(
this).second;
172 _is_registered =
true;
183 nassertv(_is_registered);
185 Sliders::iterator si;
186 for (si = _sliders.begin(); si != _sliders.end(); ++si) {
190 _is_registered =
false;
215 Sliders::const_iterator si;
216 for (si = _sliders.begin(); si != _sliders.end(); ++si) {
219 (*si)._rows.write_datagram(manager, dg);
236 for (
size_t n = 0; n < _sliders.size(); ++n) {
237 CPT(InternalName) name = DCAST(InternalName, p_list[pi++]);
240 _sliders[n]._slider = slider;
241 _sliders_by_name[name].set_bit(n);
261 parse_params(params, scan, manager);
262 object->fillin(scan, manager);
279 _sliders.reserve(num_sliders);
280 for (
size_t i = 0; i < num_sliders; ++i) {
283 _sliders.push_back(SliderDef());
285 _sliders[i]._rows.read_datagram(scan, manager);
303 return new CData(*
this);
312 void SliderTable::CData::
323 void SliderTable::CData::
This class records a set of integers, where each integer is either present or not present in the set...
const InternalName * get_name() const
Returns the name of this particular slider.
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
void read_cdata(DatagramIterator &scan, PipelineCyclerBase &cycler)
Reads in the indicated CycleData object.
void set_slider(int n, const VertexSlider *slider)
Replaces the nth slider.
A single page of data maintained by a PipelineCycler.
Base class for objects that can be written to and read from Bam files.
void write_cdata(Datagram &packet, const PipelineCyclerBase &cycler)
Writes out the indicated CycleData object.
This is an abstract base class that retains some slider value, which is a linear value that typically...
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
virtual int complete_pointers(TypedWritable **plist, BamReader *manager)
Receives an array of pointers, one for each time manager->read_pointer() was called in fillin()...
int get_file_minor_ver() const
Returns the minor version number of the Bam file currently being read.
virtual void fillin(DatagramIterator &scan, BamReader *manager)
This internal function is intended to be called by each class's make_from_bam() method to read in all...
PN_uint16 get_uint16()
Extracts an unsigned 16-bit integer.
static Thread * get_current_thread()
Returns a pointer to the currently-executing Thread object.
virtual void write_datagram(BamWriter *manager, Datagram &dg)
Writes the contents of this object to the datagram for shipping out to a Bam file.
Stores the total set of VertexSliders that the vertices in a particular GeomVertexData object might d...
void remove_slider(int n)
Removes the nth slider.
void set_slider_rows(int n, const SparseArray &rows)
Replaces the rows affected by the nth slider.
virtual int complete_pointers(TypedWritable **p_list, BamReader *manager)
Receives an array of pointers, one for each time manager->read_pointer() was called in fillin()...
An instance of this class is passed to the Factory when requesting it to do its business and construc...
int add_slider(const VertexSlider *slider, const SparseArray &rows)
Adds a new slider to the table, and returns the index number of the new slider.
void register_factory(TypeHandle handle, CreateFunc *func)
Registers a new kind of thing the Factory will be able to create.
void add_uint16(PN_uint16 value)
Adds an unsigned 16-bit integer to the datagram.
static WritableFactory * get_factory()
Returns the global WritableFactory for generating TypedWritable objects.
A thread; that is, a lightweight process.
static void register_with_read_factory()
Tells the BamReader how to create objects of type SliderTable.
A class to retrieve the individual data elements previously stored in a Datagram. ...
TypeHandle is the identifier used to differentiate C++ class types.
virtual void write_datagram(BamWriter *manager, Datagram &dg)
Writes the contents of this object to the datagram for shipping out to a Bam file.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
void write_pointer(Datagram &packet, const TypedWritable *dest)
The interface for writing a pointer to another object to a Bam file.
void read_pointer(DatagramIterator &scan)
The interface for reading a pointer to another object from a Bam file.