This defines a single entry in a TransformBlendTable. More...
#include "transformBlend.h"
Public Member Functions | |
TransformBlend (const VertexTransform *transform0, PN_stdfloat weight0) | |
TransformBlend (const VertexTransform *transform0, PN_stdfloat weight0, const VertexTransform *transform1, PN_stdfloat weight1) | |
TransformBlend (const VertexTransform *transform0, PN_stdfloat weight0, const VertexTransform *transform1, PN_stdfloat weight1, const VertexTransform *transform2, PN_stdfloat weight2) | |
TransformBlend (const VertexTransform *transform0, PN_stdfloat weight0, const VertexTransform *transform1, PN_stdfloat weight1, const VertexTransform *transform2, PN_stdfloat weight2, const VertexTransform *transform3, PN_stdfloat weight3) | |
TransformBlend (const TransformBlend ©) | |
void | add_transform (const VertexTransform *transform, PN_stdfloat weight) |
Adds a new transform to the blend. More... | |
int | compare_to (const TransformBlend &other) const |
Defines an arbitrary ordering for TransformBlend objects. More... | |
int | complete_pointers (TypedWritable **plist, BamReader *manager) |
Receives an array of pointers, one for each time manager->read_pointer() was called in fillin(). More... | |
void | fillin (DatagramIterator &scan, BamReader *manager) |
This internal function is called by make_from_bam to read in all of the relevant data from the BamFile for the new PandaNode. More... | |
void | get_blend (LMatrix4 &result, Thread *current_thread) const |
Returns the current value of the blend, based on the current value of all of the nested transform objects and their associated weights. More... | |
UpdateSeq | get_modified (Thread *current_thread=Thread::get_current_thread()) const |
size_t | get_num_transforms () const |
const VertexTransform * | get_transform (size_t n) const |
PN_stdfloat | get_weight (const VertexTransform *transform) const |
PN_stdfloat | get_weight (size_t n) const |
bool | has_transform (const VertexTransform *transform) const |
void | limit_transforms (int max_transforms) |
If the total number of transforms in the blend exceeds max_transforms, removes the n least-important transforms as needed to reduce the number of transforms to max_transforms. More... | |
void | normalize_weights () |
Rescales all of the weights on the various transforms so that they sum to 1.0. More... | |
bool | operator != (const TransformBlend &other) const |
bool | operator< (const TransformBlend &other) const |
void | operator= (const TransformBlend ©) |
bool | operator== (const TransformBlend &other) const |
void | output (std::ostream &out) const |
void | remove_transform (const VertexTransform *transform) |
void | remove_transform (size_t n) |
void | set_transform (size_t n, const VertexTransform *transform) |
void | set_weight (size_t n, PN_stdfloat weight) |
Replaces the weight associated with the nth transform stored in the blend object. More... | |
void | transform_point (LPoint4f &point, Thread *current_thread) const |
Transforms the indicated point by the blend matrix. More... | |
void | transform_point (LPoint3f &point, Thread *current_thread) const |
Transforms the indicated point by the blend matrix. More... | |
void | transform_point (LPoint4d &point, Thread *current_thread) const |
Transforms the indicated point by the blend matrix. More... | |
void | transform_point (LPoint3d &point, Thread *current_thread) const |
Transforms the indicated point by the blend matrix. More... | |
void | transform_vector (LVector3f &point, Thread *current_thread) const |
Transforms the indicated vector by the blend matrix. More... | |
void | transform_vector (LVector3d &point, Thread *current_thread) const |
Transforms the indicated vector by the blend matrix. More... | |
void | update_blend (Thread *current_thread) const |
Recomputes the internal representation of the blend value, if necessary. More... | |
void | write (std::ostream &out, int indent_level) const |
void | write_datagram (BamWriter *manager, Datagram &dg) const |
Writes the contents of this object to the datagram for shipping out to a Bam file. More... | |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
Public Attributes | |
get_modified | |
Returns a counter which is guaranteed to increment at least as often as the result of get_blend() changes. More... | |
get_num_transforms | |
Returns the number of transforms stored in the blend object. More... | |
get_transform | |
Returns the nth transform stored in the blend object. More... | |
get_weight | |
Returns the weight associated with the indicated transform, or 0 if there is no entry for the transform. More... | |
has_transform | |
Returns true if the blend has the indicated transform, false otherwise. More... | |
remove_transform | |
Removes the indicated transform from the blend. More... | |
set_transform | |
Replaces the nth transform stored in the blend object. More... | |
Friends | |
class | VertexTransform |
This defines a single entry in a TransformBlendTable.
It represents a unique combination of VertexTransform pointers and blend amounts.
Definition at line 32 of file transformBlend.h.
void TransformBlend::add_transform | ( | const VertexTransform * | transform, |
PN_stdfloat | weight | ||
) |
Adds a new transform to the blend.
If the transform already existed, increases its weight factor.
Definition at line 52 of file transformBlend.cxx.
int TransformBlend::compare_to | ( | const TransformBlend & | other | ) | const |
Defines an arbitrary ordering for TransformBlend objects.
Definition at line 25 of file transformBlend.cxx.
References ordered_vector< Key, Compare, Vector >::begin(), ordered_vector< Key, Compare, Vector >::end(), and ordered_vector< Key, Compare, Vector >::size().
int TransformBlend::complete_pointers | ( | TypedWritable ** | p_list, |
BamReader * | manager | ||
) |
Receives an array of pointers, one for each time manager->read_pointer() was called in fillin().
Returns the number of pointers processed.
Definition at line 268 of file transformBlend.cxx.
void TransformBlend::fillin | ( | DatagramIterator & | scan, |
BamReader * | manager | ||
) |
This internal function is called by make_from_bam to read in all of the relevant data from the BamFile for the new PandaNode.
Definition at line 287 of file transformBlend.cxx.
References DatagramIterator::get_uint16(), and ordered_vector< Key, Compare, Vector >::reserve().
|
inline |
Returns the current value of the blend, based on the current value of all of the nested transform objects and their associated weights.
You should call update_blend() to ensure that the cache is up-to-date before calling this.
Definition at line 196 of file transformBlend.I.
void TransformBlend::limit_transforms | ( | int | max_transforms | ) |
If the total number of transforms in the blend exceeds max_transforms, removes the n least-important transforms as needed to reduce the number of transforms to max_transforms.
Definition at line 95 of file transformBlend.cxx.
References ordered_vector< Key, Compare, Vector >::clear(), and ordered_vector< Key, Compare, Vector >::size().
void TransformBlend::normalize_weights | ( | ) |
Rescales all of the weights on the various transforms so that they sum to 1.0.
It is generally a good idea to call this after adding or removing transforms from the blend.
Definition at line 124 of file transformBlend.cxx.
References ordered_vector< Key, Compare, Vector >::begin(), and ordered_vector< Key, Compare, Vector >::end().
|
inline |
Replaces the weight associated with the nth transform stored in the blend object.
Definition at line 170 of file transformBlend.I.
|
inline |
Transforms the indicated point by the blend matrix.
You should call update_blend() to ensure that the cache is up-to-date before calling this.
Definition at line 208 of file transformBlend.I.
References ordered_vector< Key, Compare, Vector >::empty().
|
inline |
Transforms the indicated point by the blend matrix.
You should call update_blend() to ensure that the cache is up-to-date before calling this.
Definition at line 222 of file transformBlend.I.
References ordered_vector< Key, Compare, Vector >::empty().
|
inline |
Transforms the indicated point by the blend matrix.
You should call update_blend() to ensure that the cache is up-to-date before calling this.
Definition at line 251 of file transformBlend.I.
References ordered_vector< Key, Compare, Vector >::empty().
|
inline |
Transforms the indicated point by the blend matrix.
You should call update_blend() to ensure that the cache is up-to-date before calling this.
Definition at line 281 of file transformBlend.I.
References ordered_vector< Key, Compare, Vector >::empty().
|
inline |
Transforms the indicated vector by the blend matrix.
You should call update_blend() to ensure that the cache is up-to-date before calling this.
Definition at line 236 of file transformBlend.I.
References ordered_vector< Key, Compare, Vector >::empty().
|
inline |
Transforms the indicated vector by the blend matrix.
You should call update_blend() to ensure that the cache is up-to-date before calling this.
Definition at line 311 of file transformBlend.I.
References ordered_vector< Key, Compare, Vector >::empty().
|
inline |
Recomputes the internal representation of the blend value, if necessary.
You should call this before calling get_blend() or transform_point().
Definition at line 180 of file transformBlend.I.
References VertexTransform::get_global_modified().
Writes the contents of this object to the datagram for shipping out to a Bam file.
Definition at line 253 of file transformBlend.cxx.
References Datagram::add_stdfloat(), Datagram::add_uint16(), ordered_vector< Key, Compare, Vector >::begin(), ordered_vector< Key, Compare, Vector >::end(), ordered_vector< Key, Compare, Vector >::size(), and BamWriter::write_pointer().
|
inline |
Returns a counter which is guaranteed to increment at least as often as the result of get_blend() changes.
Definition at line 87 of file transformBlend.h.
|
inline |
Returns the number of transforms stored in the blend object.
Definition at line 63 of file transformBlend.h.
Referenced by TransformBlendTable::add_blend().
|
inline |
Returns the nth transform stored in the blend object.
Definition at line 63 of file transformBlend.h.
|
inline |
Returns the weight associated with the indicated transform, or 0 if there is no entry for the transform.
Returns the weight associated with the nth transform stored in the blend object.
Definition at line 71 of file transformBlend.h.
bool TransformBlend::has_transform |
Returns true if the blend has the indicated transform, false otherwise.
Definition at line 71 of file transformBlend.h.
|
inline |
Removes the indicated transform from the blend.
Removes the nth transform stored in the blend object.
Definition at line 70 of file transformBlend.h.
|
inline |
Replaces the nth transform stored in the blend object.
Definition at line 70 of file transformBlend.h.