53 lines
1.6 KiB
Text
53 lines
1.6 KiB
Text
|
/**
|
||
|
* PANDA 3D SOFTWARE
|
||
|
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||
|
*
|
||
|
* All use of this software is subject to the terms of the revised BSD
|
||
|
* license. You should have received a copy of this license along
|
||
|
* with this source code in a file named "LICENSE."
|
||
|
*
|
||
|
* @file movingPartBase.I
|
||
|
* @author drose
|
||
|
* @date 1999-02-22
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Normally, you'd use make_copy() or copy_subgraph() to make a copy of this.
|
||
|
*/
|
||
|
INLINE MovingPartBase::
|
||
|
MovingPartBase(const MovingPartBase ©) :
|
||
|
PartGroup(copy),
|
||
|
_num_effective_channels(0),
|
||
|
_effective_control(nullptr),
|
||
|
_forced_channel(copy._forced_channel)
|
||
|
{
|
||
|
// We don't copy the bound channels. We do copy the forced_channel, though
|
||
|
// this is just a pointerwise copy.
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the number of channels that might be bound to this PartGroup. This
|
||
|
* might not be the actual number of channels, since there might be holes in
|
||
|
* the list; it is one more than the index number of the highest bound
|
||
|
* channel. Thus, it is called get_max_bound() instead of get_num_bound().
|
||
|
*/
|
||
|
INLINE int MovingPartBase::
|
||
|
get_max_bound() const {
|
||
|
return _channels.size();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the nth bound channel on this PartGroup. n can be determined by
|
||
|
* iterating from 0 to one less than get_max_bound(); or n might be
|
||
|
* AnimControl::get_channel_index().
|
||
|
*
|
||
|
* This will return NULL if there is no channel bound on the indicated index.
|
||
|
* It is an error to call this if n is less than zero or greater than or equal
|
||
|
* to get_max_bound().
|
||
|
*/
|
||
|
INLINE AnimChannelBase *MovingPartBase::
|
||
|
get_bound(int n) const {
|
||
|
nassertr(n >= 0 && n < (int)_channels.size(), nullptr);
|
||
|
return _channels[n];
|
||
|
}
|