mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
149 lines
6.1 KiB
Plaintext
149 lines
6.1 KiB
Plaintext
// Filename: callbackNode.I
|
|
// Created by: drose (13Mar09)
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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: CallbackNode::set_cull_callback
|
|
// Access: Published
|
|
// Description: Sets the CallbackObject that will be notified when
|
|
// this node is visited during the cull traversal. This
|
|
// callback will be made during the cull thread.
|
|
//
|
|
// The cull traversal is responsible for determining
|
|
// which nodes are visible and within the view frustum,
|
|
// and for accumulating state and transform, and
|
|
// generally building up the list of CullableObjects
|
|
// that are to be eventually passed to the draw
|
|
// traversal for rendering.
|
|
//
|
|
// At the time the cull traversal callback is made, the
|
|
// node has been determined to be visible and it has
|
|
// passed the bounding-volume test, so it lies within
|
|
// the view frustum.
|
|
//
|
|
// The callback is passed an instance of a
|
|
// NodeCullCallbackData, which contains pointers to the
|
|
// CullTraverser and CullTraverserData--enough data to
|
|
// examine the current node and its place within the
|
|
// scene graph. The callback *replaces* the normal cull
|
|
// behavior, so if your callback does nothing, the cull
|
|
// traversal will not continue below this node. If you
|
|
// wish the cull traversal to continue to visit this
|
|
// node and below, you must call cbdata->upcall()
|
|
// from your callback.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void CallbackNode::
|
|
set_cull_callback(CallbackObject *object) {
|
|
CDWriter cdata(_cycler);
|
|
cdata->_cull_callback = object;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: CallbackNode::clear_cull_callback
|
|
// Access: Published
|
|
// Description: Removes the callback set by an earlier call to
|
|
// set_cull_callback().
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void CallbackNode::
|
|
clear_cull_callback() {
|
|
set_cull_callback(NULL);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: CallbackNode::get_cull_callback
|
|
// Access: Published
|
|
// Description: Returns the CallbackObject set by set_cull_callback().
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE CallbackObject *CallbackNode::
|
|
get_cull_callback() const {
|
|
CDReader cdata(_cycler);
|
|
return cdata->_cull_callback;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: CallbackNode::set_draw_callback
|
|
// Access: Published
|
|
// Description: Sets the CallbackObject that will be notified when
|
|
// this node is visited during the draw traversal. This
|
|
// callback will be made during the draw thread.
|
|
//
|
|
// The draw traversal is responsible for actually
|
|
// issuing the commands to the graphics engine to draw
|
|
// primitives. Its job is to walk through the list of
|
|
// CullableObjects build up by the cull traversal, as
|
|
// quickly as possible, issuing the appropriate commands
|
|
// to draw each one.
|
|
//
|
|
// At the time the draw traversal callback is made, the
|
|
// graphics state has been loaded with the correct
|
|
// modelview transform and render state, and the
|
|
// primitives (if any) in this node are ready to be
|
|
// drawn.
|
|
//
|
|
// The callback is passed an instance of a
|
|
// GeomDrawCallbackData, which contains pointers to the
|
|
// current state and transform, as well as the current
|
|
// GSG. There is a Geom pointer as well, but it will
|
|
// always be NULL to this callback, since the
|
|
// CallbackNode does not itself contain any Geoms.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void CallbackNode::
|
|
set_draw_callback(CallbackObject *object) {
|
|
CDWriter cdata(_cycler);
|
|
cdata->_draw_callback = object;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: CallbackNode::clear_draw_callback
|
|
// Access: Published
|
|
// Description: Removes the callback set by an earlier call to
|
|
// set_draw_callback().
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void CallbackNode::
|
|
clear_draw_callback() {
|
|
set_draw_callback(NULL);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: CallbackNode::get_draw_callback
|
|
// Access: Published
|
|
// Description: Returns the CallbackObject set by set_draw_callback().
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE CallbackObject *CallbackNode::
|
|
get_draw_callback() const {
|
|
CDReader cdata(_cycler);
|
|
return cdata->_draw_callback;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: CallbackNode::CData::Constructor
|
|
// Access: Public
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE CallbackNode::CData::
|
|
CData() {
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: CallbackNode::CData::Copy Constructor
|
|
// Access: Public
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE CallbackNode::CData::
|
|
CData(const CallbackNode::CData ©) :
|
|
_cull_callback(copy._cull_callback),
|
|
_draw_callback(copy._draw_callback)
|
|
{
|
|
}
|