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 : mPhysicsWorld(world)
32 const Impl& operator=(const Impl&) = delete;
36 mPhysicsWorld.Unlock();
38 Internal::PhysicsWorld& mPhysicsWorld;
39 friend Internal::PhysicsAdaptor;
42 PhysicsAdaptor::ScopedPhysicsAccessor::ScopedPhysicsAccessor(Internal::PhysicsWorld& world)
43 : mImpl(new Impl(world))
47 PhysicsAdaptor::ScopedPhysicsAccessor::~ScopedPhysicsAccessor()
52 Dali::Any PhysicsAdaptor::ScopedPhysicsAccessor::GetNative()
54 return mImpl->mPhysicsWorld.GetNative();
57 Dali::Any PhysicsAdaptor::ScopedPhysicsAccessor::HitTest(
58 Dali::Vector3 rayFromWorld, Dali::Vector3 rayToWorld, Dali::Any nativeFilter, Dali::Vector3& localPivot, float& distanceFromCamera)
60 return mImpl->mPhysicsWorld.HitTest(rayFromWorld, rayToWorld, nativeFilter, localPivot, distanceFromCamera);
63 } // namespace Dali::Toolkit::Physics