open_toontown_panda3d/panda/src/graph/node.I

84 lines
2.9 KiB
Plaintext

// Filename: node.I
// Created by: drose (26Oct98)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) 2001, 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://www.panda3d.org/license.txt .
//
// To contact the maintainers of this program write to
// panda3d@yahoogroups.com .
//
////////////////////////////////////////////////////////////////////
#include <notify.h>
////////////////////////////////////////////////////////////////////
// Function: Node::find_connection
// Access: Public
// Description: Returns a const reference to the NodeConnection of
// the indicated graph type, if one exists, or a const
// reference to an empty NodeConnection if a connection
// of the indicated type does not exist.
////////////////////////////////////////////////////////////////////
INLINE_GRAPH const NodeConnection &Node::
find_connection(TypeHandle graph_type) const {
if (_connections[0].get_graph_type() == graph_type) {
return _connections[0];
}
if (max_node_graphs > 1) {
return p_find_connection(graph_type);
} else {
return _empty_connection;
}
}
////////////////////////////////////////////////////////////////////
// Function: Node::update_connection
// Access: Public
// Description: Returns a non-const pointer to the NodeConnection of
// the indicated graph type, if one exists. If a
// NodeConnection of the indicated type does not already
// exist, creates one if possible and returns its
// pointer. Otherwise, returns NULL.
////////////////////////////////////////////////////////////////////
INLINE_GRAPH NodeConnection *Node::
update_connection(TypeHandle graph_type) {
if (_connections[0].get_graph_type() == graph_type) {
return &_connections[0];
}
if (max_node_graphs > 1) {
return p_update_connection(graph_type);
} else {
return (NodeConnection *)NULL;
}
}
////////////////////////////////////////////////////////////////////
// Function: remove_child
// Description: Finds the arc that connects the indicated nodes and
// removes it. Returns true if the arc was found and
// removed, false if it did not exist.
////////////////////////////////////////////////////////////////////
EXPCL_PANDA INLINE_GRAPH bool
remove_child(Node *parent, Node *child, TypeHandle graph_type) {
NodeRelation *arc = find_arc(parent, child, graph_type);
if (arc != (NodeRelation *)NULL) {
remove_arc(arc);
return true;
}
return false;
}
EXPCL_PANDA INLINE_GRAPH ostream &
operator << (ostream &out, const Node &node) {
node.output(out);
return out;
}