// Filename: modelNode.I // Created by: drose (16Mar02) // //////////////////////////////////////////////////////////////////// // // 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." // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // Function: ModelNode::Constructor // Access: Public // Description: //////////////////////////////////////////////////////////////////// INLINE ModelNode:: ModelNode(const string &name) : PandaNode(name) { _preserve_transform = PT_none; _preserve_attributes = 0; _transform_limit = 0; } //////////////////////////////////////////////////////////////////// // Function: ModelNode::set_preserve_transform // Access: Public // Description: Sets the preserve_transform flag. This restricts the // ability of a flatten operation to affect the // transform stored on this node, and/or the node // itself. In the order from weakest to strongest // restrictions, the possible flags are: // // PT_drop_node - This node should be removed at the // next flatten call. // // PT_none - The transform may be adjusted at will. The // node itself will not be removed. This is the // default. // // PT_net - Preserve the net transform from the root, // but it's acceptable to modify the local transform // stored on this particular node if necessary, so long // as the net transform is not changed. This eliminates // the need to drop an extra transform on the node // above. // // PT_local - The local (and net) transform should not // be changed in any way. If necessary, an extra // transform will be left on the node above to guarantee // this. This is a stronger restriction than PT_net. // // PT_no_touch - The local transform will not be // changed, the node will not be removed, and // furthermore any flatten operation will not continue // below this node--this node and all descendents are // protected from the effects of flatten. //////////////////////////////////////////////////////////////////// INLINE void ModelNode:: set_preserve_transform(ModelNode::PreserveTransform preserve_transform) { _preserve_transform = preserve_transform; } //////////////////////////////////////////////////////////////////// // Function: ModelNode::get_preserve_transform // Access: Public // Description: Returns the current setting of the preserve_transform // flag. See set_preserve_transform(). //////////////////////////////////////////////////////////////////// INLINE ModelNode::PreserveTransform ModelNode:: get_preserve_transform() const { return _preserve_transform; } //////////////////////////////////////////////////////////////////// // Function: ModelNode::set_preserve_attributes // Access: Public // Description: Sets the preserve_attributes flag. This restricts the // ability of a flatten operation to affect the // render attributes stored on this node. // // The value should be the union of bits from // SceneGraphReducer::AttribTypes that represent the // attributes that should *not* be changed. //////////////////////////////////////////////////////////////////// INLINE void ModelNode:: set_preserve_attributes(int preserve_attributes) { _preserve_attributes = preserve_attributes; } //////////////////////////////////////////////////////////////////// // Function: ModelNode::get_preserve_attributes // Access: Public // Description: Returns the current setting of the preserve_attributes // flag. See set_preserve_attributes(). //////////////////////////////////////////////////////////////////// INLINE int ModelNode:: get_preserve_attributes() const { return _preserve_attributes; } //////////////////////////////////////////////////////////////////// // Function: ModelNode::Copy Constructor // Access: Protected // Description: //////////////////////////////////////////////////////////////////// INLINE ModelNode:: ModelNode(const ModelNode ©) : PandaNode(copy), _preserve_transform(copy._preserve_transform), _preserve_attributes(copy._preserve_attributes), _transform_limit(copy._transform_limit) { }