Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/ReferenceApplication/ReferenceAppLayer/src/OgreRefAppBox.cpp @ 1

Last change on this file since 1 was 1, checked in by landauf, 17 years ago
File size: 3.1 KB
Line 
1/*
2-----------------------------------------------------------------------------
3This source file is part of the OGRE Reference Application, a layer built
4on top of OGRE(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#include "OgreRefAppBox.h"
30#include "OgreRefAppWorld.h"
31
32namespace OgreRefApp
33{
34
35    //-------------------------------------------------------------------------
36    Box::Box(const String& name, Real width, Real height, Real depth) : ApplicationObject(name)
37    {
38        mDimensions.x = width;
39        mDimensions.y = height;
40        mDimensions.z = depth;
41        setUp(name);
42    }
43    //-------------------------------------------------------------------------
44    Box::~Box()
45    {
46
47    }
48    //-------------------------------------------------------------------------
49    void Box::setUp(const String& name)
50    {
51        // Create visual presence
52        SceneManager* sm = World::getSingleton().getSceneManager();
53        mEntity = sm->createEntity(name, "cube.mesh");
54        mSceneNode = sm->getRootSceneNode()->createChildSceneNode(name);
55        // Scale down, default size is 100x100x100
56        mSceneNode->scale(mDimensions.x / 100.f, 
57            mDimensions.y / 100.f, mDimensions.z / 100.f);
58
59        mSceneNode->attachObject(mEntity);
60        // Add reverse reference
61        mEntity->setUserObject(this);
62
63        // Create mass body
64        mOdeBody = new dBody(World::getSingleton().getOdeWorld()->id());
65        // Set reverse reference
66        mOdeBody->setData(this);
67        // Set mass
68        setMassBox(0.05, mDimensions);
69
70        this->setBounceParameters(0.0, 0.0);
71        this->setSoftness(0.0f);
72        this->setFriction(Math::POS_INFINITY);
73
74        // Create collision proxy
75        dBox* odeBox = new dBox(0, mDimensions.x, mDimensions.y, mDimensions.z);
76        mCollisionProxies.push_back(odeBox);
77        updateCollisionProxies();
78
79
80    }
81
82
83}
Note: See TracBrowser for help on using the repository browser.