1 #ifndef __DALI_INTEGRATION_DYNAMICS_BODY_INTF_H__
2 #define __DALI_INTEGRATION_DYNAMICS_BODY_INTF_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.
22 #include <dali/public-api/common/dali-common.h>
23 #include <dali/public-api/geometry/mesh-data.h>
34 struct DynamicsBodySettings;
38 class DALI_IMPORT_API DynamicsBody
44 virtual ~DynamicsBody() {}
48 * @param[in] settings Configuration parameters for the new body
49 * @param[in] shape The collision shape for the body
50 * ~param[in] dynamicsWorld The dynamics world
51 * @param[in] startPosition The initial position for the body
52 * @param[in] startRotation The initial rotation of the body
54 virtual void Initialize( const DynamicsBodySettings& settings, DynamicsShape* shape,
55 Integration::DynamicsWorld& dynamicsWorld,
56 const Vector3& startPosition, const Quaternion& startRotation ) = 0;
60 * @param[in] mass The new mass for the body
62 virtual void SetMass(const float mass) = 0;
64 ///@ copydoc Dali::DynamicsBody::SetElasticity
65 virtual void SetElasticity(const float elasticity) = 0;
67 /// @copydoc Dali::DynamicsBody::SetLinearVelocity
68 virtual void SetLinearVelocity(const Vector3& velocity) = 0;
70 /// @copydoc Dali::DynamicsBody::GetLinearVelocity
71 virtual Vector3 GetLinearVelocity() const = 0;
73 /// @copydoc Dali::DynamicsBody::SetAngularVelocity
74 virtual void SetAngularVelocity(const Vector3& velocity) = 0;
76 /// @copydoc Dali::DynamicsBody::SetLinearVelocity
77 virtual Vector3 GetAngularVelocity() const = 0;
79 /// @copydoc Dali::DynamicsBody::SetKinematic
80 virtual void SetKinematic(bool flag ) = 0;
82 /// @copydoc Dali::DynamicsBody::IsKinematic
83 virtual bool IsKinematic() const = 0;
85 /// @copydoc Dali::DynamicsBody::SetSleepEnabled
86 virtual void SetSleepEnabled(bool flag) = 0;
88 /// @copydoc Dali::DynamicsBody::WakeUp
89 virtual void WakeUp() = 0;
91 /// @copydoc Dali::DynamicsBody::AddAnchor
92 virtual void AddAnchor( unsigned int index, const DynamicsBody* anchorBody, const bool collisions ) = 0;
94 /// @copydoc Dali::DynamicsBody::ConserveVolume
95 virtual void ConserveVolume( bool flag ) = 0;
97 /// @copydoc Dali::DynamicsBody::ConserveShape
98 virtual void ConserveShape( bool flag ) = 0;
100 /// @copydoc Dali::DynamicsBody::GetCollisionGroup
101 virtual short int GetCollisionGroup() const = 0;
103 /// @copydoc Dali::DynamicsBody::SetCollisionGroup
104 virtual void SetCollisionGroup( short int collisionGroup ) = 0;
106 /// @copydoc Dali::DynamicsBody::GetCollisionMask
107 virtual short int GetCollisionMask() const = 0;
109 /// @copydoc Dali::DynamicsBody::SetCollisionMask
110 virtual void SetCollisionMask( short int collisionMask ) = 0;
112 virtual int GetType() const = 0;
114 virtual bool IsActive() const = 0;
116 virtual void SetTransform( const Vector3& position, const Quaternion& rotation ) = 0;
117 virtual void GetTransform( Vector3& position, Quaternion& rotation ) = 0;
120 * Get the vertices and normal from a soft body
121 * @param[in,out] meshData A MeshData object with preallocated space for all the vertices.
123 virtual void GetSoftVertices( MeshData::VertexContainer& meshData ) const = 0;
125 }; // class DynamicsBody
127 } //namespace Integration
131 #endif // __DALI_INTEGRATION_DYNAMICS_BODY_INTF_H__