From fa35929f1d5d941ba7a42f4a49781cf1da6c0e6f Mon Sep 17 00:00:00 2001 From: cxgeorge <> Date: Thu, 18 Oct 2001 01:06:34 +0000 Subject: [PATCH] add << for proj node --- panda/src/sgraph/projectionNode.I | 7 +++++++ panda/src/sgraph/projectionNode.cxx | 20 ++++++++++++++++++-- panda/src/sgraph/projectionNode.h | 3 +-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/panda/src/sgraph/projectionNode.I b/panda/src/sgraph/projectionNode.I index dc60cb224b..66db1f0cfa 100644 --- a/panda/src/sgraph/projectionNode.I +++ b/panda/src/sgraph/projectionNode.I @@ -49,3 +49,10 @@ operator = (const ProjectionNode ©) { NamedNode::operator = (copy); _projection = copy._projection; } + +INLINE ostream &operator << (ostream &out, const ProjectionNode &projnode) { + projnode.output(out); + return out; +} + + diff --git a/panda/src/sgraph/projectionNode.cxx b/panda/src/sgraph/projectionNode.cxx index c0f75d88ae..c23d5b2e26 100644 --- a/panda/src/sgraph/projectionNode.cxx +++ b/panda/src/sgraph/projectionNode.cxx @@ -184,8 +184,9 @@ void ProjectionNode:: get_near_far(float &cnear, float &cfar) const { if (_projection->get_type() == PerspectiveProjection::get_class_type()) { PerspectiveProjection *proj = DCAST(PerspectiveProjection, _projection); - cnear = proj->get_frustum()._fnear; - cfar = proj->get_frustum()._ffar; + Frustumf frust = proj->get_frustum(); + cnear = frust._fnear; + cfar = frust._ffar; } } @@ -349,3 +350,18 @@ set_far(float cfar) { float cnear = get_near(); set_near_far(cnear, cfar); } + +void ProjectionNode:: +output(ostream &out) const { + if (_projection->get_type() == PerspectiveProjection::get_class_type()) { + PerspectiveProjection *proj = DCAST(PerspectiveProjection, _projection); + float xfov,yfov,aspect_ratio,cnear,cfar; + proj->get_frustum().get_perspective_params(xfov, yfov, aspect_ratio, cnear, cfar); + + out << "X-FOV: " << xfov << " deg, Y-FOV: " << yfov << " deg" + << "Aspect ratio: " << aspect_ratio << ", Near plane: " << cnear << ", Far plane: " << cfar << endl; + } + + out << "Projection Matrix: " << _projection->get_projection_mat(CS_default) << endl; +} + diff --git a/panda/src/sgraph/projectionNode.h b/panda/src/sgraph/projectionNode.h index a104297884..e4015e5d4a 100644 --- a/panda/src/sgraph/projectionNode.h +++ b/panda/src/sgraph/projectionNode.h @@ -41,7 +41,7 @@ PUBLISHED: public: INLINE ProjectionNode(const ProjectionNode ©); INLINE void operator = (const ProjectionNode ©); - + void output(ostream &out) const; virtual Node *make_copy() const; PUBLISHED: @@ -74,7 +74,6 @@ protected: PT(Projection) _projection; public: - static TypeHandle get_class_type( void ) { return _type_handle; }