2 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <dali-physics/public-api/physics-adaptor.h>
19 #include <dali-physics/internal/physics-adaptor-impl.h>
20 #include <dali-physics/internal/physics-world-impl.h>
22 namespace Dali::Toolkit::Physics
24 struct PhysicsAdaptor::ScopedPhysicsAccessor::Impl
26 Impl(Internal::PhysicsWorld& world)
27 : mLock(world.GetMutex()),
32 const Impl& operator=(const Impl&) = delete;
34 Dali::Mutex::ScopedLock mLock;
35 Internal::PhysicsWorld& mPhysicsWorld;
36 friend Internal::PhysicsAdaptor;
39 PhysicsAdaptor::ScopedPhysicsAccessor::ScopedPhysicsAccessor(Internal::PhysicsWorld& world)
40 : mImpl(new Impl(world))
44 PhysicsAdaptor::ScopedPhysicsAccessor::~ScopedPhysicsAccessor()
49 Dali::Any PhysicsAdaptor::ScopedPhysicsAccessor::GetNative()
51 return mImpl->mPhysicsWorld.GetNative();
54 Dali::Any PhysicsAdaptor::ScopedPhysicsAccessor::HitTest(
55 Dali::Vector3 rayFromWorld, Dali::Vector3 rayToWorld, Dali::Vector3& localPivot, float& distanceFromCamera)
57 return mImpl->mPhysicsWorld.HitTest(rayFromWorld, rayToWorld, localPivot, distanceFromCamera);
60 } // namespace Dali::Toolkit::Physics