Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/physics/src/ogrebullet/Constraints/OgreBulletDynamics6DofConstraint.cpp @ 1971

Last change on this file since 1971 was 1971, checked in by rgrieder, 16 years ago

Added OgreBullet to the repository. The revision was 2493 (ogreaddons), trunk.

  • Property svn:eol-style set to native
File size: 4.2 KB
Line 
1/***************************************************************************
2
3This source file is part of OGREBULLET
4(Object-oriented Graphics Rendering Engine Bullet Wrapper)
5For the latest info, see http://www.ogre3d.org/phpBB2addons/viewforum.php?f=10
6
7Copyright (c) 2007 tuan.kuranes@gmail.com (Use it Freely, even Statically, but have to contribute any changes)
8
9
10
11This program is free software; you can redistribute it and/or modify it under
12the terms of the GPL General Public License with runtime exception as published by the Free Software
13Foundation; either version 2 of the License, or (at your option) any later
14version.
15
16This program is distributed in the hope that it will be useful, but WITHOUT
17ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18FOR A PARTICULAR PURPOSE. See the GPL General Public License with runtime exception for more details.
19
20You should have received a copy of the GPL General Public License with runtime exception along with
21this program; if not, write to the Free Software Foundation, Inc., 59 Temple
22Place - Suite 330, Boston, MA 02111-1307, USA, or go to
23http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
24-----------------------------------------------------------------------------
25*/
26
27#include "OgreBulletDynamics.h"
28
29#include "OgreBulletDynamicsWorld.h"
30#include "OgreBulletDynamicsRigidBody.h"
31
32#include "OgreBulletDynamicsConstraint.h"
33#include "Constraints/OgreBulletDynamics6DofConstraint.h"
34
35using namespace Ogre;
36
37namespace OgreBulletDynamics
38{
39    // -------------------------------------------------------------------------
40    SixDofConstraint::SixDofConstraint(RigidBody * rbA, RigidBody * rbB, 
41        const Vector3& FrameInAVector3, const Quaternion& FrameInAOrientation,
42        const Vector3& FrameInBVector3, const Quaternion& FrameInBOrientation):
43    TypedConstraint(rbA, rbB)
44    {
45        btTransform frameInA (OgreBulletCollisions::OgreBtConverter::to (FrameInAOrientation), 
46                              OgreBulletCollisions::OgreBtConverter::to (FrameInAVector3));
47        btTransform frameInB (OgreBulletCollisions::OgreBtConverter::to (FrameInBOrientation),
48                              OgreBulletCollisions::OgreBtConverter::to (FrameInBVector3));
49
50        mConstraint = new btGeneric6DofConstraint(
51            *rbA->getBulletRigidBody (),
52            *rbB->getBulletRigidBody (), 
53            frameInA,
54            frameInB,
55                        true); // Eric added this because Bullet 2.61 has a new argument (useLinearReferenceFrameA)
56    }
57    // -------------------------------------------------------------------------
58    SixDofConstraint::~SixDofConstraint()
59    {
60        }
61        // -------------------------------------------------------------------------
62        void     SixDofConstraint::setLinearLowerLimit(const Ogre::Vector3& linearLower)
63        {
64                static_cast<btGeneric6DofConstraint* > (mConstraint)->setLinearLowerLimit(OgreBulletCollisions::OgreBtConverter::to (linearLower));
65        }
66        // -------------------------------------------------------------------------
67        void     SixDofConstraint::setLinearUpperLimit(const Ogre::Vector3& linearUpper)
68        {
69                static_cast<btGeneric6DofConstraint* > (mConstraint)->setLinearLowerLimit(OgreBulletCollisions::OgreBtConverter::to (linearUpper));
70        }
71        // -------------------------------------------------------------------------
72        void     SixDofConstraint::setAngularLowerLimit(const Ogre::Vector3& angularLower)
73        {
74                static_cast<btGeneric6DofConstraint* > (mConstraint)->setLinearLowerLimit(OgreBulletCollisions::OgreBtConverter::to (angularLower));
75        }
76        // -------------------------------------------------------------------------
77        void     SixDofConstraint::setAngularUpperLimit(const Ogre::Vector3& angularUpper)
78        {
79                static_cast<btGeneric6DofConstraint* > (mConstraint)->setLinearLowerLimit(OgreBulletCollisions::OgreBtConverter::to (angularUpper));
80        }
81        // -------------------------------------------------------------------------
82        void     SixDofConstraint::setLimit(const int axis, const Ogre::Real lo, const Ogre::Real hi)
83        {
84                static_cast<btGeneric6DofConstraint* > (mConstraint)->setLimit(axis, lo, hi);
85        }
86        // -------------------------------------------------------------------------
87        bool     SixDofConstraint::isLimited(int limitIndex)
88        {
89                return static_cast<btGeneric6DofConstraint* > (mConstraint)->isLimited(limitIndex);
90        }
91}
Note: See TracBrowser for help on using the repository browser.