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.
1.8.15