1 #ifndef DALI_TOOLKIT_PHYSICS_INTERNAL_ACTOR_H
2 #define DALI_TOOLKIT_PHYSICS_INTERNAL_ACTOR_H
5 * Copyright (c) 2023 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.
21 #include <dali/public-api/actors/actor.h>
22 #include <dali/public-api/object/any.h>
23 #include <dali/public-api/object/base-object.h>
26 #include <dali-physics/public-api/physics-actor.h>
27 #include <dali-toolkit/public-api/dali-toolkit-common.h>
29 namespace Dali::Toolkit::Physics
36 using PhysicsActorPtr = Dali::IntrusivePtr<PhysicsActor>;
38 class PhysicsActor : public Dali::BaseObject
41 PhysicsActor(Dali::Actor actor, Dali::Any body, PhysicsAdaptor& adaptor);
42 ~PhysicsActor() override;
43 PhysicsActor(const PhysicsActor& handle) = delete;
44 PhysicsActor& operator=(const PhysicsActor& handle) = delete;
47 * @copydoc Dali::Toolkit::Physics::PhysicsActor::New()
49 static PhysicsActorPtr New(Dali::Actor actor, Dali::Any body, PhysicsAdaptor& adaptor);
51 void Initialize(void);
54 * @copydoc Dali::Toolkit::Physics::PhysicsActor::GetId
56 uint32_t GetId() const
62 * @copydoc Dali::Toolkit::Physics::PhysicsActor::GetBody
64 Dali::Any GetBody() const
70 * @copydoc Dali::Toolkit::Physics::PhysicsActor::AsyncSetPhysicsPosition
72 void AsyncSetPhysicsPosition(Dali::Vector3 actorPosition);
75 * @copydoc Dali::Toolkit::Physics::PhysicsActor::AsyncSetPhysicsRotation
77 void AsyncSetPhysicsRotation(Dali::Quaternion actorRotation);
80 * @copydoc Dali::Toolkit::Physics::PhysicsActor::GetPhysicsPosition
82 Dali::Vector3 GetPhysicsPosition() const;
85 * @copydoc Dali::Toolkit::Physics::PhysicsActor::GetPhysicsRotation
87 Dali::Quaternion GetPhysicsRotation() const;
90 * @copydoc Dali::Toolkit::Physics::PhysicsActor::GetActorPosition
92 Dali::Vector3 GetActorPosition() const;
95 * @copydoc Dali::Toolkit::Physics::PhysicsActor::GetActorRotation
97 Dali::Quaternion GetActorRotation() const;
100 PhysicsAdaptor& mAdaptor;
101 uint32_t mActorId{0};
105 } // namespace Internal
107 inline Internal::PhysicsActor& GetImplementation(Physics::PhysicsActor& physics)
109 DALI_ASSERT_ALWAYS(physics && "Physics actor handle is empty");
110 BaseObject& handle = physics.GetBaseObject();
111 return static_cast<Internal::PhysicsActor&>(handle);
114 inline const Internal::PhysicsActor& GetImplementation(const Physics::PhysicsActor& physics)
116 DALI_ASSERT_ALWAYS(physics && "Physics actor handle is empty");
117 const BaseObject& handle = physics.GetBaseObject();
118 return static_cast<const Internal::PhysicsActor&>(handle);
121 } // namespace Dali::Toolkit::Physics
123 #endif //DALI_TOOLKIT_PHYSICS_INTERNAL_ACTOR_H