// Filename: transformBlendTable.I // Created by: drose (24Mar05) // //////////////////////////////////////////////////////////////////// // // PANDA 3D SOFTWARE // Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved // // All use of this software is subject to the terms of the Panda 3d // Software license. You should have received a copy of this license // along with this source code; you will also find a current copy of // the license at http://etc.cmu.edu/panda3d/docs/license/ . // // To contact the maintainers of this program write to // panda3d-general@lists.sourceforge.net . // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // Function: TransformBlendTable::get_num_blends // Access: Published // Description: Returns the total number of different blend // combinations in the table. //////////////////////////////////////////////////////////////////// INLINE int TransformBlendTable:: get_num_blends() const { return _blends.size(); } //////////////////////////////////////////////////////////////////// // Function: TransformBlendTable::get_blend // Access: Published // Description: Returns the nth blend in the table. //////////////////////////////////////////////////////////////////// INLINE const TransformBlend &TransformBlendTable:: get_blend(int n) const { nassertr(n >= 0 && n < (int)_blends.size(), _blends[0]); return _blends[n]; } //////////////////////////////////////////////////////////////////// // Function: TransformBlendTable::get_modified // Access: Published // Description: Returns a counter which is guaranteed to increment at // least when any TransformBlends within the table // have changed. //////////////////////////////////////////////////////////////////// INLINE UpdateSeq TransformBlendTable:: get_modified(Thread *current_thread) const { CDLockedReader cdata(_cycler); if (cdata->_global_modified != VertexTransform::get_global_modified(current_thread)) { CDWriter cdataw(((TransformBlendTable *)this)->_cycler, cdata, false); ((TransformBlendTable *)this)->recompute_modified(cdataw, current_thread); return cdataw->_modified; } else { return cdata->_modified; } } //////////////////////////////////////////////////////////////////// // Function: TransformBlendTable::get_num_transforms // Access: Published // Description: Returns the number of unique VertexTransform objects // represented in the table. This will correspond to // the size of the TransformTable object that would // represent the same table. This is also the same // limit reflected by // GraphicsStateGuardian::get_max_vertex_transform_indices(). //////////////////////////////////////////////////////////////////// INLINE int TransformBlendTable:: get_num_transforms() const { consider_rebuild_index(); return _num_transforms; } //////////////////////////////////////////////////////////////////// // Function: TransformBlendTable::get_max_simultaneous_transforms // Access: Published // Description: Returns the maximum number of unique VertexTransform // objects that are applied to any one vertex // simultaneously. This is the same limit reflected by // GraphicsStateGuardian::get_max_vertex_transforms(). //////////////////////////////////////////////////////////////////// INLINE int TransformBlendTable:: get_max_simultaneous_transforms() const { consider_rebuild_index(); return _max_simultaneous_transforms; } //////////////////////////////////////////////////////////////////// // Function: TransformBlendTable::consider_rebuild_index // Access: Private // Description: Calls rebuild_index() if the index needs to be // rebuilt. //////////////////////////////////////////////////////////////////// INLINE void TransformBlendTable:: consider_rebuild_index() const { if (_blend_index.empty()) { ((TransformBlendTable *)this)->rebuild_index(); } } //////////////////////////////////////////////////////////////////// // Function: TransformBlendTable::CData::Constructor // Access: Public // Description: //////////////////////////////////////////////////////////////////// INLINE TransformBlendTable::CData:: CData() { } //////////////////////////////////////////////////////////////////// // Function: TransformBlendTable::CData::Copy Constructor // Access: Public // Description: //////////////////////////////////////////////////////////////////// INLINE TransformBlendTable::CData:: CData(const TransformBlendTable::CData ©) : _modified(copy._modified), _global_modified(copy._global_modified) { }