1 #ifndef __DALI_PLUGIN_BULLET_DYNAMICS_BODY_H__
2 #define __DALI_PLUGIN_BULLET_DYNAMICS_BODY_H__
5 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
23 #include <dali/integration-api/dynamics/dynamics-body-intf.h>
25 class btCollisionObject;
33 struct DynamicsBodySettings;
36 } // namespace Integration
41 class BulletDynamicsWorld;
46 class BulletDynamicsBody : public Integration::DynamicsBody
50 virtual ~BulletDynamicsBody();
52 public: // From Dali::Integration::DynamicsBody
54 ///@ copydoc Dali::DynamicsBody::Initialize
55 void Initialize( const Integration::DynamicsBodySettings& bodySettings, Integration::DynamicsShape* shape,
56 Integration::DynamicsWorld& dynamicsWorld,
57 const Vector3& startPosition, const Quaternion& startRotation );
59 ///@ copydoc Dali::DynamicsBody::SetMass
60 void SetMass( float mass );
62 ///@ copydoc Dali::DynamicsBody::SetElasticity
63 void SetElasticity( float elasticity );
65 /// @copydoc Dali::DynamicsBody::SetLinearVelocity
66 void SetLinearVelocity( const Vector3& velocity );
68 /// @copydoc Dali::DynamicsBody::GetLinearVelocity
69 Vector3 GetLinearVelocity() const;
71 /// @copydoc Dali::DynamicsBody::SetAngularVelocity
72 void SetAngularVelocity( const Vector3& velocity );
74 /// @copydoc Dali::DynamicsBody::GetAngularVelocity
75 Vector3 GetAngularVelocity() const;
77 /// @copydoc Dali::DynamicsBody::SetKinematic
78 void SetKinematic( bool flag );
80 /// @copydoc Dali::DynamicsBody::IsKinematic
81 bool IsKinematic() const;
83 /// @copydoc Dali::DynamicsBody::SetSleepEnabled
84 void SetSleepEnabled( bool flag );
86 /// @copydoc Dali::DynamicsBody::WakeUp
89 /// @copydoc Dali::DynamicsBody::AddAnchor
90 void AddAnchor( unsigned int index, const Integration::DynamicsBody* anchorBody, bool collisions );
92 /// @copydoc Dali::DynamicsBody::ConserveVolume
93 void ConserveVolume( bool flag );
95 /// @copydoc Dali::DynamicsBody::ConserveShape
96 void ConserveShape( bool flag );
98 /// @copydoc Dali::DynamicsBody::GetCollisionGroup
99 short int GetCollisionGroup() const;
101 /// @copydoc Dali::DynamicsBody::SetCollisionGroup
102 void SetCollisionGroup( short int collisionGroup );
104 /// @copydoc Dali::DynamicsBody::GetCollisionMask
105 short int GetCollisionMask() const;
107 /// @copydoc Dali::DynamicsBody::SetCollisionMask
108 void SetCollisionMask( short int collisionMask );
112 /// @copydoc Dali::DynamicsBody::IsActive
113 bool IsActive() const;
115 /// @copydoc Dali::Integration::DynamicsBody::SetTransform
116 void SetTransform( const Vector3& position, const Quaternion& rotation );
118 /// @copydoc Dali::Integration::GetTransform
119 void GetTransform( Vector3& position, Quaternion& rotation );
121 /// @copydoc Dali::Integration::GetSoftVertices
122 void GetSoftVertices( MeshData::VertexContainer& vertices ) const;
126 btCollisionObject* GetBody() const;
130 * Create a rigid body
132 void CreateRigidBody( const Integration::DynamicsBodySettings& bodySettings, Dali::Integration::DynamicsShape* shape,
133 const Vector3& startPosition, const Quaternion& startRotation );
138 void CreateSoftBody( const Integration::DynamicsBodySettings& bodySettings, Dali::Integration::DynamicsShape* shape,
139 const Vector3& startPosition, const Quaternion& startRotation );
142 Dali::Integration::DynamicsBodySettings* mSettings;
143 btCollisionObject* mBody;
144 bool mConserveVolume:1;
145 bool mConserveShape:1;
147 bool mActivationState:1;
149 short int mCollisionGroup;
150 short int mCollisionMask;
152 BulletDynamicsWorld* mWorld;
154 }; // class BulletDynamicsBody
156 } // namespace Plugin
160 #endif // __DALI_PLUGIN_BULLET_DYNAMICS_BODY_H__