From 65395b9721d1b8849e1d44e6dce282875ab16700 Mon Sep 17 00:00:00 2001 From: David Rose Date: Tue, 5 Mar 2002 02:05:27 +0000 Subject: [PATCH] pgraph decal --- panda/src/pgraph/cullableObject.I | 48 +++++++++++++++++++ panda/src/pgraph/cullableObject.cxx | 48 +++++++++++++++++++ panda/src/pgraph/cullableObject.h | 74 +++++++++++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 panda/src/pgraph/cullableObject.I create mode 100644 panda/src/pgraph/cullableObject.cxx create mode 100644 panda/src/pgraph/cullableObject.h diff --git a/panda/src/pgraph/cullableObject.I b/panda/src/pgraph/cullableObject.I new file mode 100644 index 0000000000..0c6f00905c --- /dev/null +++ b/panda/src/pgraph/cullableObject.I @@ -0,0 +1,48 @@ +// Filename: cullableObject.I +// Created by: drose (04Mar02) +// +//////////////////////////////////////////////////////////////////// +// +// 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 . +// +//////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////// +// Function: CullableObject::Constructor +// Access: Public +// Description: +//////////////////////////////////////////////////////////////////// +INLINE CullableObject:: +CullableObject(CullableObject *next) : + _next(next) +{ +} + +//////////////////////////////////////////////////////////////////// +// Function: CullableObject::Copy Constructor +// Access: Private +// Description: CullableObjects should not be copied. +//////////////////////////////////////////////////////////////////// +INLINE CullableObject:: +CullableObject(const CullableObject ©) { + nassertv(false); +} + +//////////////////////////////////////////////////////////////////// +// Function: CullableObject::Copy Assignment Operator +// Access: Private +// Description: CullableObjects should not be copied. +//////////////////////////////////////////////////////////////////// +INLINE void CullableObject:: +operator = (const CullableObject ©) { + nassertv(false); +} diff --git a/panda/src/pgraph/cullableObject.cxx b/panda/src/pgraph/cullableObject.cxx new file mode 100644 index 0000000000..35fbbf537d --- /dev/null +++ b/panda/src/pgraph/cullableObject.cxx @@ -0,0 +1,48 @@ +// Filename: cullableObject.cxx +// Created by: drose (04Mar02) +// +//////////////////////////////////////////////////////////////////// +// +// 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 "cullableObject.h" + + +TypeHandle CullableObject::_type_handle; + +//////////////////////////////////////////////////////////////////// +// Function: CullableObject::Destructor +// Access: Public +// Description: Automatically deletes the whole chain of these things. +//////////////////////////////////////////////////////////////////// +CullableObject:: +~CullableObject() { + if (_next != (CullableObject *)NULL) { + delete _next; + } +} + +//////////////////////////////////////////////////////////////////// +// Function: CullableObject::output +// Access: Public +// Description: +//////////////////////////////////////////////////////////////////// +void CullableObject:: +output(ostream &out) const { + if (_geom != (Geom *)NULL) { + out << *_geom; + } else { + out << "(null)"; + } +} diff --git a/panda/src/pgraph/cullableObject.h b/panda/src/pgraph/cullableObject.h new file mode 100644 index 0000000000..25c286131c --- /dev/null +++ b/panda/src/pgraph/cullableObject.h @@ -0,0 +1,74 @@ +// Filename: cullableObject.h +// Created by: drose (04Mar02) +// +//////////////////////////////////////////////////////////////////// +// +// 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 . +// +//////////////////////////////////////////////////////////////////// + +#ifndef CULLABLEOBJECT_H +#define CULLABLEOBJECT_H + +#include "pandabase.h" + +#include "geom.h" +#include "renderState.h" +#include "transformState.h" +#include "pointerTo.h" +#include "referenceCount.h" + +//////////////////////////////////////////////////////////////////// +// Class : CullableObject +// Description : The smallest atom of cull. This is normally just a +// Geom and its associated state, but it also represent +// a number of Geoms to be drawn together, with a number +// of Geoms decalled onto them. +//////////////////////////////////////////////////////////////////// +class EXPCL_PANDA CullableObject { +public: + INLINE CullableObject(CullableObject *next = NULL); + +private: + INLINE CullableObject(const CullableObject ©); + INLINE void operator = (const CullableObject ©); + +public: + ~CullableObject(); + + void output(ostream &out) const; + + PT(Geom) _geom; + CPT(RenderState) _state; + CPT(TransformState) _transform; + CullableObject *_next; + +public: + static TypeHandle get_class_type() { + return _type_handle; + } + static void init_type() { + register_type(_type_handle, "CullableObject"); + } + +private: + static TypeHandle _type_handle; +}; + +INLINE ostream &operator << (ostream &out, const CullableObject &object) { + object.output(out); + return out; +} + +#include "cullableObject.I" + +#endif