pipeline animated blends, etc. better
This commit is contained in:
parent
f0e9f34908
commit
0e55bc8b2c
|
|
@ -144,7 +144,7 @@ get_modified() const {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void SliderTable::
|
||||
update_modified(UpdateSeq modified) {
|
||||
CDWriter cdata(_cycler);
|
||||
CDWriter cdata(_cycler, true);
|
||||
cdata->_modified = modified;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ INLINE UpdateSeq TransformBlendTable::
|
|||
get_modified() const {
|
||||
CDReader cdata(_cycler);
|
||||
if (cdata->_global_modified != VertexTransform::get_global_modified()) {
|
||||
CDWriter cdataw(((TransformBlendTable *)this)->_cycler, cdata);
|
||||
CDWriter cdataw(((TransformBlendTable *)this)->_cycler, cdata, false);
|
||||
((TransformBlendTable *)this)->recompute_modified(cdataw);
|
||||
return cdataw->_modified;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
#include "bamWriter.h"
|
||||
|
||||
TypeHandle TransformBlendTable::_type_handle;
|
||||
TypeHandle TransformBlendTable::_palette_type_handle;
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: TransformBlendTable::Constructor
|
||||
|
|
@ -175,7 +174,7 @@ rebuild_index() {
|
|||
// TransformBlend objects, if necessary.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TransformBlendTable::
|
||||
recompute_modified(TransformBlendTable::CDWriter &cdata) {
|
||||
recompute_modified(TransformBlendTable::CData *cdata) {
|
||||
// Update the global_modified sequence number first, to prevent race
|
||||
// conditions.
|
||||
cdata->_global_modified = VertexTransform::get_global_modified();
|
||||
|
|
@ -198,7 +197,7 @@ recompute_modified(TransformBlendTable::CDWriter &cdata) {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
void TransformBlendTable::
|
||||
clear_modified() {
|
||||
CDWriter cdata(_cycler);
|
||||
CDWriter cdata(_cycler, true);
|
||||
cdata->_global_modified = UpdateSeq();
|
||||
cdata->_modified = UpdateSeq();
|
||||
}
|
||||
|
|
@ -212,7 +211,6 @@ clear_modified() {
|
|||
void TransformBlendTable::
|
||||
register_with_read_factory() {
|
||||
BamReader::get_factory()->register_factory(get_class_type(), make_from_bam);
|
||||
BamReader::get_factory()->register_factory(_palette_type_handle, make_from_bam);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
// combinations of transforms and blend amounts used by
|
||||
// a GeomVertexData, to facilitate computing dynamic
|
||||
// vertices on the CPU at runtime. Each vertex has a
|
||||
// pointer to exactly one of entries in this table,
|
||||
// pointer to exactly one of the entries in this table,
|
||||
// and each entry defines a number of transform/blend
|
||||
// combinations.
|
||||
//
|
||||
|
|
@ -68,10 +68,15 @@ PUBLISHED:
|
|||
void write(ostream &out, int indent_level) const;
|
||||
|
||||
private:
|
||||
class CData;
|
||||
|
||||
void clear_index();
|
||||
INLINE void consider_rebuild_index() const;
|
||||
void rebuild_index();
|
||||
|
||||
void recompute_modified(CData *cdata);
|
||||
void clear_modified();
|
||||
|
||||
private:
|
||||
// We don't bother with registering the table, or protecting its
|
||||
// data in a CycleData structure--the interface on GeomVertexData
|
||||
|
|
@ -111,9 +116,6 @@ private:
|
|||
typedef CycleDataReader<CData> CDReader;
|
||||
typedef CycleDataWriter<CData> CDWriter;
|
||||
|
||||
void recompute_modified(CDWriter &cdata);
|
||||
void clear_modified();
|
||||
|
||||
public:
|
||||
static void register_with_read_factory();
|
||||
virtual void write_datagram(BamWriter *manager, Datagram &dg);
|
||||
|
|
@ -131,10 +133,6 @@ public:
|
|||
TypedWritableReferenceCount::init_type();
|
||||
register_type(_type_handle, "TransformBlendTable",
|
||||
TypedWritableReferenceCount::get_class_type());
|
||||
// The _palette_type_handle is defined only to support older bam
|
||||
// files, generated before we renamed the type to TransformBlendTable.
|
||||
register_type(_palette_type_handle, "TransformBlendPalette",
|
||||
TypedWritableReferenceCount::get_class_type());
|
||||
}
|
||||
virtual TypeHandle get_type() const {
|
||||
return get_class_type();
|
||||
|
|
@ -143,7 +141,6 @@ public:
|
|||
|
||||
private:
|
||||
static TypeHandle _type_handle;
|
||||
static TypeHandle _palette_type_handle;
|
||||
|
||||
friend class VertexTransform;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ get_modified() const {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void TransformTable::
|
||||
update_modified(UpdateSeq modified) {
|
||||
CDWriter cdata(_cycler);
|
||||
CDWriter cdata(_cycler, true);
|
||||
cdata->_modified = modified;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void UserVertexSlider::
|
||||
set_slider(float slider) {
|
||||
CDWriter cdata(_cycler);
|
||||
CDWriter cdata(_cycler, true);
|
||||
cdata->_slider = slider;
|
||||
mark_modified();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ get_name() const {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void UserVertexTransform::
|
||||
set_matrix(const LMatrix4f &matrix) {
|
||||
CDWriter cdata(_cycler);
|
||||
CDWriter cdata(_cycler, true);
|
||||
cdata->_matrix = matrix;
|
||||
mark_modified();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ write(ostream &out, int indent_level) const {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
void VertexSlider::
|
||||
mark_modified() {
|
||||
CDWriter cdata(_cycler);
|
||||
CDWriter cdata(_cycler, true);
|
||||
cdata->_modified = VertexTransform::get_next_modified();
|
||||
|
||||
Tables::iterator ti;
|
||||
|
|
|
|||
|
|
@ -85,9 +85,6 @@ private:
|
|||
typedef CycleDataReader<CData> CDReader;
|
||||
typedef CycleDataWriter<CData> CDWriter;
|
||||
|
||||
static PipelineCycler<CData> _global_cycler;
|
||||
static UpdateSeq _next_modified;
|
||||
|
||||
public:
|
||||
virtual void write_datagram(BamWriter *manager, Datagram &dg);
|
||||
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ UpdateSeq VertexTransform::
|
|||
get_next_modified() {
|
||||
++_next_modified;
|
||||
|
||||
CDWriter cdatag(_global_cycler);
|
||||
CDWriter cdatag(_global_cycler, true);
|
||||
cdatag->_modified = _next_modified;
|
||||
|
||||
return _next_modified;
|
||||
|
|
@ -157,7 +157,7 @@ get_next_modified() {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
void VertexTransform::
|
||||
mark_modified() {
|
||||
CDWriter cdata(_cycler);
|
||||
CDWriter cdata(_cycler, true);
|
||||
cdata->_modified = get_next_modified();
|
||||
|
||||
Palettes::iterator pi;
|
||||
|
|
|
|||
Loading…
Reference in New Issue