Skip to content

Commit e397e57

Browse files
committed
Added missing null implementation of the new dmPhysics::Wakeup function (defold#5878)
1 parent 264b20f commit e397e57

File tree

5 files changed

+43
-0
lines changed

5 files changed

+43
-0
lines changed

Diff for: engine/physics/src/dmsdk/physics/physics.h

+9
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@
1313
#ifndef DMSDK_PHYSICS_H
1414
#define DMSDK_PHYSICS_H
1515

16+
/*# Physics
17+
* Physics related structs and functions
18+
*
19+
* @document
20+
* @name Physics
21+
* @namespace dmPhysics
22+
* @path engine/physics/src/dmsdk/physics/physics.h
23+
*/
24+
1625
namespace dmPhysics
1726
{
1827
/*#

Diff for: engine/physics/src/physics/physics_2d_null.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,10 @@ namespace dmPhysics
191191
return false;
192192
}
193193

194+
void Wakeup2D(HCollisionObject2D collision_object)
195+
{
196+
}
197+
194198
void SetLockedRotation2D(HCollisionObject2D collision_object, bool locked_rotation)
195199
{
196200
}

Diff for: engine/physics/src/physics/physics_3d_null.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ namespace dmPhysics
159159
return false;
160160
}
161161

162+
void Wakeup3D(HCollisionObject3D collision_object)
163+
{
164+
}
165+
162166
void SetLockedRotation3D(HCollisionObject3D collision_object, bool locked_rotation)
163167
{
164168
}

Diff for: engine/physics/src/physics/test/test_physics.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ Test3D::Test3D()
117117
, m_IsEnabledFunc(dmPhysics::IsEnabled3D)
118118
, m_SetEnabledFunc(dmPhysics::SetEnabled3D)
119119
, m_IsSleepingFunc(dmPhysics::IsSleeping3D)
120+
, m_WakeupFunc(dmPhysics::Wakeup3D)
120121
, m_SetLockedRotationFunc(dmPhysics::SetLockedRotation3D)
121122
, m_GetLinearDampingFunc(dmPhysics::GetLinearDamping3D)
122123
, m_SetLinearDampingFunc(dmPhysics::SetLinearDamping3D)
@@ -174,6 +175,7 @@ Test2D::Test2D()
174175
, m_IsEnabledFunc(dmPhysics::IsEnabled2D)
175176
, m_SetEnabledFunc(dmPhysics::SetEnabled2D)
176177
, m_IsSleepingFunc(dmPhysics::IsSleeping2D)
178+
, m_WakeupFunc(dmPhysics::Wakeup2D)
177179
, m_SetLockedRotationFunc(dmPhysics::SetLockedRotation2D)
178180
, m_GetLinearDampingFunc(dmPhysics::GetLinearDamping2D)
179181
, m_SetLinearDampingFunc(dmPhysics::SetLinearDamping2D)
@@ -1689,6 +1691,27 @@ TYPED_TEST(PhysicsTest, KinematicSleep)
16891691
(*TestFixture::m_Test.m_DeleteCollisionShapeFunc)(box0_shape);
16901692
}
16911693

1694+
// Although we don't have a good way of testing the functionality here (we do it in an integration test instead),
1695+
// we need to make sure the linking will work as expected
1696+
TYPED_TEST(PhysicsTest, Wakeup)
1697+
{
1698+
float box_half_ext = 0.5f;
1699+
1700+
VisualObject box0_vo;
1701+
box0_vo.m_Position = Point3(0, 5.0f, 0);
1702+
dmPhysics::CollisionObjectData box0_data;
1703+
box0_data.m_Type = dmPhysics::COLLISION_OBJECT_TYPE_KINEMATIC;
1704+
box0_data.m_Mass = 0.0f;
1705+
typename TypeParam::CollisionShapeType box0_shape = (*TestFixture::m_Test.m_NewBoxShapeFunc)(TestFixture::m_Context, Vector3(box_half_ext, box_half_ext, box_half_ext));
1706+
box0_data.m_UserData = &box0_vo;
1707+
typename TypeParam::CollisionObjectType box0_co = (*TestFixture::m_Test.m_NewCollisionObjectFunc)(TestFixture::m_World, box0_data, &box0_shape, 1u);
1708+
1709+
(*TestFixture::m_Test.m_WakeupFunc)(box0_co);
1710+
1711+
(*TestFixture::m_Test.m_DeleteCollisionObjectFunc)(TestFixture::m_World, box0_co);
1712+
(*TestFixture::m_Test.m_DeleteCollisionShapeFunc)(box0_shape);
1713+
}
1714+
16921715
// Detecting native bug in box2d when the penetration distance assumes a negative amount
16931716
TYPED_TEST(PhysicsTest, SphereBoxDeepPenetration)
16941717
{

Diff for: engine/physics/src/physics/test/test_physics.h

+3
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ struct Funcs
112112
typedef bool (*IsEnabledFunc)(typename T::CollisionObjectType collision_object);
113113
typedef void (*SetEnabledFunc)(typename T::WorldType world, typename T::CollisionObjectType collision_object, bool enabled);
114114
typedef bool (*IsSleepingFunc)(typename T::CollisionObjectType collision_object);
115+
typedef void (*WakeupFunc)(typename T::CollisionObjectType collision_object);
115116
typedef void (*SetLockedRotationFunc)(typename T::CollisionObjectType collision_object, bool locked_rotation);
116117
typedef float (*GetLinearDampingFunc)(typename T::CollisionObjectType collision_object);
117118
typedef void (*SetLinearDampingFunc)(typename T::CollisionObjectType collision_object, float linear_damping);
@@ -166,6 +167,7 @@ struct Test3D
166167
Funcs<Test3D>::IsEnabledFunc m_IsEnabledFunc;
167168
Funcs<Test3D>::SetEnabledFunc m_SetEnabledFunc;
168169
Funcs<Test3D>::IsSleepingFunc m_IsSleepingFunc;
170+
Funcs<Test3D>::WakeupFunc m_WakeupFunc;
169171
Funcs<Test3D>::SetLockedRotationFunc m_SetLockedRotationFunc;
170172
Funcs<Test3D>::GetLinearDampingFunc m_GetLinearDampingFunc;
171173
Funcs<Test3D>::SetLinearDampingFunc m_SetLinearDampingFunc;
@@ -223,6 +225,7 @@ struct Test2D
223225
Funcs<Test2D>::IsEnabledFunc m_IsEnabledFunc;
224226
Funcs<Test2D>::SetEnabledFunc m_SetEnabledFunc;
225227
Funcs<Test2D>::IsSleepingFunc m_IsSleepingFunc;
228+
Funcs<Test2D>::WakeupFunc m_WakeupFunc;
226229
Funcs<Test2D>::SetLockedRotationFunc m_SetLockedRotationFunc;
227230
Funcs<Test2D>::GetLinearDampingFunc m_GetLinearDampingFunc;
228231
Funcs<Test2D>::SetLinearDampingFunc m_SetLinearDampingFunc;

0 commit comments

Comments
 (0)