Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/PlugIns/OctreeSceneManager/src/OgreOctreeCamera.cpp @ 1

Last change on this file since 1 was 1, checked in by landauf, 17 years ago
File size: 3.0 KB
Line 
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4(Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2006 Torus Knot Software Ltd
8Also see acknowledgements in Readme.html
9
10This program is free software; you can redistribute it and/or modify it under
11the terms of the GNU Lesser General Public License as published by the Free Software
12Foundation; either version 2 of the License, or (at your option) any later
13version.
14
15This program is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
18
19You should have received a copy of the GNU Lesser General Public License along with
20this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21Place - Suite 330, Boston, MA 02111-1307, USA, or go to
22http://www.gnu.org/copyleft/lesser.txt.
23
24You may alternatively use this source under the terms of a specific version of
25the OGRE Unrestricted License provided you have obtained such a license from
26Torus Knot Software Ltd.
27-----------------------------------------------------------------------------
28*/
29/***************************************************************************
30octreecamera.cpp  -  description
31-------------------
32begin                : Fri Sep 27 2002
33copyright            : (C) 2002 by Jon Anderson
34email                : janders@users.sf.net
35
36Enhancements 2003 - 2004 (C) The OGRE Team
37
38***************************************************************************/
39#include <OgreMath.h>
40#include <OgreAxisAlignedBox.h>
41#include <OgreRoot.h>
42
43#include <OgreOctreeCamera.h>
44
45namespace Ogre
46{
47OctreeCamera::OctreeCamera( const String& name, SceneManager* sm ) : Camera( name, sm )
48{
49                                                                     
50}
51
52OctreeCamera::~OctreeCamera()
53{
54}
55
56OctreeCamera::Visibility OctreeCamera::getVisibility( const AxisAlignedBox &bound )
57{
58
59    // Null boxes always invisible
60    if ( bound.isNull() )
61        return NONE;
62
63    // Get centre of the box
64    Vector3 centre = bound.getCenter();
65    // Get the half-size of the box
66    Vector3 halfSize = bound.getHalfSize();
67
68    bool all_inside = true;
69
70    for ( int plane = 0; plane < 6; ++plane )
71    {
72
73        // Skip far plane if infinite view frustum
74        if (plane == FRUSTUM_PLANE_FAR && mFarDist == 0)
75            continue;
76
77                // This updates frustum planes and deals with cull frustum
78        Plane::Side side = getFrustumPlane(plane).getSide(centre, halfSize);
79        if(side == Plane::NEGATIVE_SIDE) return NONE;
80        // We can't return now as the box could be later on the negative side of a plane.
81        if(side == Plane::BOTH_SIDE) 
82                all_inside = false;
83    }
84
85    if ( all_inside )
86        return FULL;
87    else
88        return PARTIAL;
89
90}
91
92}
93
94
95
96
Note: See TracBrowser for help on using the repository browser.