source: OGRE/trunk/ogrenew/OgreMain/src/OgreBone.cpp @ 657

Revision 657, 3.9 KB checked in by mattausch, 19 years ago (diff)

added ogre dependencies and patched ogre sources

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-2005 The OGRE Team
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-----------------------------------------------------------------------------
24*/
25#include "OgreStableHeaders.h"
26
27#include "OgreBone.h"
28#include "OgreSkeleton.h"
29#include "OgreTagPoint.h"
30
31namespace Ogre {
32
33    //---------------------------------------------------------------------
34    Bone::Bone(unsigned short handle, Skeleton* creator)
35        : Node(), mHandle(handle), mManuallyControlled(false), mCreator(creator)
36    {
37    }
38    //---------------------------------------------------------------------
39    Bone::Bone(const String& name, unsigned short handle, Skeleton* creator)
40        : Node(name), mHandle(handle), mManuallyControlled(false), mCreator(creator)
41    {
42    }
43    //---------------------------------------------------------------------
44    Bone::~Bone()
45    {
46    }
47    //---------------------------------------------------------------------
48    Bone* Bone::createChild(unsigned short handle, const Vector3& translate,
49        const Quaternion& rotate)
50    {
51        Bone* retBone = mCreator->createBone(handle);
52        retBone->translate(translate);
53        retBone->rotate(rotate);
54        this->addChild(retBone);
55        return retBone;
56    }
57    //---------------------------------------------------------------------
58    Node* Bone::createChildImpl(void)
59    {
60        return mCreator->createBone();
61    }
62    //---------------------------------------------------------------------
63    Node* Bone::createChildImpl(const String& name)
64    {
65        return mCreator->createBone(name);
66    }
67    //---------------------------------------------------------------------
68    void Bone::setBindingPose(void)
69    {
70        setInitialState();
71
72        // Save inverse derived, used for mesh transform later (assumes _update() has been called by Skeleton)
73        makeInverseTransform(_getDerivedPosition(), Vector3::UNIT_SCALE ,
74            _getDerivedOrientation(), mBindDerivedInverseTransform);
75    }
76    //---------------------------------------------------------------------
77    void Bone::reset(void)
78    {
79        resetToInitialState();
80    }
81    //---------------------------------------------------------------------
82    void Bone::setManuallyControlled(bool manuallyControlled) {
83        this->mManuallyControlled = manuallyControlled;
84    }
85    //---------------------------------------------------------------------
86    bool Bone::isManuallyControlled() const {
87        return mManuallyControlled;
88    }
89    //---------------------------------------------------------------------
90    const Matrix4& Bone::_getBindingPoseInverseTransform(void) const
91    {
92        return mBindDerivedInverseTransform;
93    }
94    //---------------------------------------------------------------------
95    unsigned short Bone::getHandle(void) const
96    {
97        return mHandle;
98    }
99
100
101
102
103
104}
105
Note: See TracBrowser for help on using the repository browser.