[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-physics / internal / chipmunk-impl / chipmunk-physics-adaptor-impl.h
1 #pragma once
2
3 /*
4  * Copyright (c) 2023 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or adaptoried.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 // External headers
20
21 // Internal headers
22 #include <dali-physics/internal/physics-adaptor-impl.h>
23
24 namespace Dali::Toolkit::Physics::Internal
25 {
26 class ChipmunkPhysicsAdaptor : public PhysicsAdaptor
27 {
28 public:
29   ChipmunkPhysicsAdaptor();
30
31   /**
32    * A reference counted object may only be deleted by calling Unreference()
33    */
34   ~ChipmunkPhysicsAdaptor() override;
35
36   // Remove copy constructor and copy assignment
37   ChipmunkPhysicsAdaptor(const PhysicsAdaptor& handle) = delete;
38   ChipmunkPhysicsAdaptor& operator=(const PhysicsAdaptor& handle) = delete;
39
40   /**
41    * 2nd stage initialization
42    */
43   void OnInitialize(const Dali::Matrix& transform, Uint16Pair size) override;
44
45   /**
46    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::CreateDebugLayer
47    */
48   Dali::Layer CreateDebugLayer(Dali::Window window) override;
49
50   /**
51    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::SetTransformAndSize
52    */
53   void SetTransformAndSize(const Dali::Matrix& transform, Uint16Pair size) override;
54
55   /**
56    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::TranslateToPhysicsSpace
57    */
58   Dali::Vector3 TranslateToPhysicsSpace(Dali::Vector3 vector) const override;
59
60   /**
61    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::TranslateToPhysicsSpace
62    */
63   Dali::Quaternion TranslateToPhysicsSpace(Dali::Quaternion rotation) const override;
64
65   /**
66    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::TranslateFromPhysicsSpace
67    */
68   Dali::Vector3 TranslateFromPhysicsSpace(Dali::Vector3 vector) const override;
69
70   /**
71    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::TranslateFromPhysicsSpace
72    */
73   Dali::Quaternion TranslateFromPhysicsSpace(Quaternion rotation) const override;
74
75   /**
76    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::ConvertVectorToPhysicsSpace
77    */
78   Dali::Vector3 ConvertVectorToPhysicsSpace(Dali::Vector3 vector) const override;
79
80   /**
81    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::ConvertVectorFromPhysicsSpace
82    */
83   Dali::Vector3 ConvertVectorFromPhysicsSpace(Dali::Vector3 vector) const override;
84
85   /**
86    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::AddActorBody
87    */
88   PhysicsActorPtr AddActorBody(Dali::Actor actor, Dali::Any body) override;
89
90   /**
91    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::RemoveActorBody
92    */
93   void RemoveActorBody(PhysicsActor& physicsActor) override;
94
95   /**
96    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::GetPhysicsActor
97    */
98   PhysicsActorPtr GetPhysicsActor(Dali::Any body) const override;
99
100   /**
101    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::BuildPickingRay
102    */
103   void BuildPickingRay(Dali::Vector3 origin, Dali::Vector3 direction, Dali::Vector3& rayFromWorld, Dali::Vector3& rayToWorld) override;
104
105   /**
106    * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::ProjectPoint
107    */
108   Dali::Vector3 ProjectPoint(Dali::Vector3 origin, Dali::Vector3 direction, float distance) override;
109
110 private:
111   Actor mDebugActor;
112   // Physics world owns debug renderer
113 };
114
115 } // namespace Dali::Toolkit::Physics::Internal