4 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 #include <dali-physics/internal/bullet-impl/bullet-physics-debug-renderer.h>
23 #include <dali-physics/internal/physics-adaptor-impl.h>
25 namespace Dali::Toolkit::Physics::Internal
27 class PhysicsDebugRenderer;
29 class BulletPhysicsAdaptor : public PhysicsAdaptor
32 BulletPhysicsAdaptor();
35 * A reference counted object may only be deleted by calling Unreference()
37 ~BulletPhysicsAdaptor() override;
39 // Remove copy constructor and copy assignment
40 BulletPhysicsAdaptor(const PhysicsAdaptor& handle) = delete;
41 BulletPhysicsAdaptor& operator=(const PhysicsAdaptor& handle) = delete;
43 static PhysicsAdaptorPtr New(const Dali::Matrix& transform, Uint16Pair size);
46 * 2nd stage initialization
48 void Initialize(const Dali::Matrix& transform, Uint16Pair size);
49 void OnInitialize(const Dali::Matrix& transform, Uint16Pair size) override;
52 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::CreateDebugLayer
54 Dali::Layer CreateDebugLayer(Dali::Window window) override;
57 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::SetTransformAndSize
59 void SetTransformAndSize(const Dali::Matrix& transform, Uint16Pair size) override;
62 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::TranslateToPhysicsSpace
64 Dali::Vector3 TranslateToPhysicsSpace(Dali::Vector3 vector) const override;
67 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::TranslateToPhysicsSpace
69 Dali::Quaternion TranslateToPhysicsSpace(Dali::Quaternion rotation) const override;
72 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::TranslateFromPhysicsSpace
74 Dali::Vector3 TranslateFromPhysicsSpace(Dali::Vector3 vector) const override;
77 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::TranslateFromPhysicsSpace
79 Dali::Quaternion TranslateFromPhysicsSpace(Quaternion rotation) const override;
82 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::ConvertVectorToPhysicsSpace
84 Dali::Vector3 ConvertVectorToPhysicsSpace(Dali::Vector3 vector) const override;
87 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::ConvertVectorFromPhysicsSpace
89 Dali::Vector3 ConvertVectorFromPhysicsSpace(Dali::Vector3 vector) const override;
92 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::AddActorBody
94 PhysicsActorPtr AddActorBody(Dali::Actor actor, Dali::Any body) override;
97 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::RemoveActorBody
99 void RemoveActorBody(PhysicsActor& physicsActor) override;
102 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::GetPhysicsActor
104 PhysicsActorPtr GetPhysicsActor(Dali::Any body) const override;
107 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::BuildPickingRay
109 void BuildPickingRay(Dali::Vector3 origin, Dali::Vector3 direction, Dali::Vector3& rayFromWorld, Dali::Vector3& rayToWorld) override;
112 * @copydoc Dali::Toolkit::Physics::PhysicsAdaptor::ProjectPoint
114 Dali::Vector3 ProjectPoint(Dali::Vector3 origin, Dali::Vector3 direction, float distance) override;
118 std::unique_ptr<PhysicsDebugRenderer> mDebugRenderer;
121 } // namespace Dali::Toolkit::Physics::Internal