Skip to content

Commit ccff3af

Browse files
committed
phys::Constraint work
1 parent 4ea2d88 commit ccff3af

File tree

11 files changed

+619
-48
lines changed

11 files changed

+619
-48
lines changed

data/uking_functions.csv

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -62450,7 +62450,7 @@ Address,Quality,Size,Name
6245062450
0x0000007100acd484,U,000440,
6245162451
0x0000007100acd63c,U,000180,
6245262452
0x0000007100acd6f0,U,000088,_ZN2nn3vfx6System10SwapBufferEv
62453-
0x0000007100acd748,U,000048,_ZN2nn3vfx6System19AllocFromTempBufferEiPNS_3gfx10GpuAddressEm
62453+
0x0000007100acd748,U,000048,_ZN2nn3vfx6System19AllocFromActiveBodiesBufferEiPNS_3gfx10GpuAddressEm
6245462454
0x0000007100acd778,U,000004,nullsub_3142
6245562455
0x0000007100acd77c,U,000032,_ZNK2nn3vfx6System18SearchEmitterSetIdEPKci
6245662456
0x0000007100acd79c,U,000028,_ZN2nn3vfx6System33SetDrawPathRenderStateSetCallbackENS0_18DrawPathCallbackIdENS0_12DrawPathFlagEPFvRNS0_17RenderStateSetArgEE
@@ -82486,32 +82486,32 @@ Address,Quality,Size,Name
8248682486
0x0000007100f69d2c,U,000004,nullsub_4196
8248782487
0x0000007100f69d30,U,000004,nullsub_4197
8248882488
0x0000007100f69d34,U,000004,nullsub_4198
82489-
0x0000007100f69d38,U,000180,Constraint::ctor
82489+
0x0000007100f69d38,M,000180,_ZN4ksys4phys10ConstraintC1EP21hkpConstraintInstancePNS0_9RigidBodyES5_P13hkQuaternionfPv
8249082490
0x0000007100f69dec,U,000376,Constraint::dtor
8249182491
0x0000007100f69f64,U,000036,Constraint::dtorDelete
8249282492
0x0000007100f69f88,U,000036,getPhysicsMemSysField190Or
8249382493
0x0000007100f69fac,U,000044,
8249482494
0x0000007100f69fd8,U,000024,
82495-
0x0000007100f69ff0,U,000132,
82496-
0x0000007100f6a074,U,000136,
82497-
0x0000007100f6a0fc,U,000132,
82498-
0x0000007100f6a180,U,000088,Constraint::x
82499-
0x0000007100f6a1d8,U,000068,
82500-
0x0000007100f6a21c,U,000012,
82501-
0x0000007100f6a228,U,000184,
82502-
0x0000007100f6a2e0,U,000032,
82503-
0x0000007100f6a300,U,000372,
82504-
0x0000007100f6a474,U,000340,
82505-
0x0000007100f6a5c8,U,000212,
82506-
0x0000007100f6a69c,U,000092,
82507-
0x0000007100f6a6f8,U,000372,
82495+
0x0000007100f69ff0,O,000132,_ZN4ksys4phys10Constraint14sub_7100F69FF0Ev
82496+
0x0000007100f6a074,O,000136,_ZN4ksys4phys10Constraint14sub_7100F6A074Ev
82497+
0x0000007100f6a0fc,O,000132,_ZN4ksys4phys10Constraint20setConstraintWeightsEff
82498+
0x0000007100f6a180,O,000088,_ZN4ksys4phys10Constraint23allocConstraintListenerEPN4sead4HeapE
82499+
0x0000007100f6a1d8,O,000068,_ZN4ksys4phys10Constraint12unlinkIf2SetEv
82500+
0x0000007100f6a21c,O,000012,_ZN4ksys4phys10Constraint6unlinkEv
82501+
0x0000007100f6a228,m,000184,_ZN4ksys4phys10Constraint4wakeEv
82502+
0x0000007100f6a2e0,O,000032,_ZNK4ksys4phys10Constraint15checkIsSleepingEv
82503+
0x0000007100f6a300,O,000372,_ZN4ksys4phys10Constraint12setRigidBodyEPNS0_9RigidBodyES3_
82504+
0x0000007100f6a474,m,000340,_ZN4ksys4phys10Constraint10addToWorldEb
82505+
0x0000007100f6a5c8,m,000212,_ZN4ksys4phys10Constraint8calcMassEv
82506+
0x0000007100f6a69c,O,000092,_ZN4ksys4phys10Constraint14clearRigidBodyENS1_15ConstrainedTypeE
82507+
0x0000007100f6a6f8,m,000372,_ZN4ksys4phys10Constraint23unlinkConstrainedBodiesEbb
8250882508
0x0000007100f6a86c,O,000020,_ZN4ksys4phys10Constraint7destroyEPS1_
82509-
0x0000007100f6a880,U,000012,
82510-
0x0000007100f6a88c,U,000160,
82511-
0x0000007100f6a92c,U,000168,
82512-
0x0000007100f6a9d4,U,000208,
82513-
0x0000007100f6aaa4,U,000308,
82514-
0x0000007100f6abd8,U,000044,Constraint::x_0
82509+
0x0000007100f6a880,O,000012,_ZNK4ksys4phys10Constraint10isFlag2SetEv
82510+
0x0000007100f6a88c,O,000160,_ZN4ksys4phys10Constraint10initParentEPNS0_9RigidBodyE
82511+
0x0000007100f6a92c,O,000168,_ZN4ksys4phys10Constraint9initChildEPNS0_9RigidBodyE
82512+
0x0000007100f6a9d4,O,000208,_ZN4ksys4phys10Constraint13initWithGroupEPNS0_28StaticCompoundRigidBodyGroupE
82513+
0x0000007100f6aaa4,m,000308,_ZN4ksys4phys10Constraint10initBodiesEPNS0_9RigidBodyES3_
82514+
0x0000007100f6abd8,W,000044,_ZNK4ksys4phys10Constraint12getRigidBodyEi
8251582515
0x0000007100f6ac04,U,000092,
8251682516
0x0000007100f6ac60,U,000008,
8251782517
0x0000007100f6ac68,U,000064,
@@ -108420,22 +108420,22 @@ Address,Quality,Size,Name
108420108420
0x00000071016f7910,L,000004,nullsub_5294
108421108421
0x00000071016f7914,L,000004,nullsub_5295
108422108422
0x00000071016f7918,L,000004,j__ZN2nn3nex10RootObjectdlEPv_58
108423-
0x00000071016f791c,L,000056,_ZN2nn3nex22PRUDPStreamTemplateImp10GetVersionEv
108423+
0x00000071016f791c,L,000056,_ZN2nn3nex22PRUDPStreamActiveBodieslateImp10GetVersionEv
108424108424
0x00000071016f7954,L,000480,
108425-
0x00000071016f7b34,L,000068,_ZN2nn3nex22PRUDPStreamTemplateImp27CalcSendConnectionSignatureEPNS0_6PacketEPNS0_27TransportSignatureGeneratorEhPNS0_14SignatureBytesE
108426-
0x00000071016f7b78,L,000068,_ZN2nn3nex22PRUDPStreamTemplateImp26GetSendConnectionSignatureEPNS0_6PacketEPNS0_27TransportSignatureGeneratorEhPNS0_14SignatureBytesE
108427-
0x00000071016f7bbc,L,000160,_ZN2nn3nex22PRUDPStreamTemplateImp14CheckSignatureEPNS0_11InetAddressEthPNS0_6PacketEPNS0_3KeyEPNS0_27TransportSignatureGeneratorEPNS0_14SignatureBytesENS0_21PRUDPMessageInterface15SignatureMethodE
108425+
0x00000071016f7b34,L,000068,_ZN2nn3nex22PRUDPStreamActiveBodieslateImp27CalcSendConnectionSignatureEPNS0_6PacketEPNS0_27TransportSignatureGeneratorEhPNS0_14SignatureBytesE
108426+
0x00000071016f7b78,L,000068,_ZN2nn3nex22PRUDPStreamActiveBodieslateImp26GetSendConnectionSignatureEPNS0_6PacketEPNS0_27TransportSignatureGeneratorEhPNS0_14SignatureBytesE
108427+
0x00000071016f7bbc,L,000160,_ZN2nn3nex22PRUDPStreamActiveBodieslateImp14CheckSignatureEPNS0_11InetAddressEthPNS0_6PacketEPNS0_3KeyEPNS0_27TransportSignatureGeneratorEPNS0_14SignatureBytesENS0_21PRUDPMessageInterface15SignatureMethodE
108428108428
0x00000071016f7c5c,L,000008,
108429108429
0x00000071016f7c64,L,000020,
108430108430
0x00000071016f7c78,L,000052,
108431108431
0x00000071016f7cac,L,000364,_ZN2nn3nex24PRUDPEndPointTemplateImp4InitEPjPt
108432108432
0x00000071016f7e18,L,000040,
108433108433
0x00000071016f7e40,L,000004,nullsub_5296
108434108434
0x00000071016f7e44,L,000004,j__ZN2nn3nex10RootObjectdlEPv_59
108435-
0x00000071016f7e48,L,000024,_ZN2nn3nex31PRUDPStreamTemplatePRUDPLiteImp10GetVersionEv
108436-
0x00000071016f7e60,L,000188,_ZN2nn3nex31PRUDPStreamTemplatePRUDPLiteImp18VersionNegotiationEPNS0_6PacketES3_
108437-
0x00000071016f7f1c,L,000068,_ZN2nn3nex31PRUDPStreamTemplatePRUDPLiteImp27CalcSendConnectionSignatureEPNS0_6PacketEPNS0_27TransportSignatureGeneratorEhPNS0_14SignatureBytesE
108438-
0x00000071016f7f60,L,000068,_ZN2nn3nex31PRUDPStreamTemplatePRUDPLiteImp26GetSendConnectionSignatureEPNS0_6PacketEPNS0_27TransportSignatureGeneratorEhPNS0_14SignatureBytesE
108435+
0x00000071016f7e48,L,000024,_ZN2nn3nex31PRUDPStreamActiveBodieslatePRUDPLiteImp10GetVersionEv
108436+
0x00000071016f7e60,L,000188,_ZN2nn3nex31PRUDPStreamActiveBodieslatePRUDPLiteImp18VersionNegotiationEPNS0_6PacketES3_
108437+
0x00000071016f7f1c,L,000068,_ZN2nn3nex31PRUDPStreamActiveBodieslatePRUDPLiteImp27CalcSendConnectionSignatureEPNS0_6PacketEPNS0_27TransportSignatureGeneratorEhPNS0_14SignatureBytesE
108438+
0x00000071016f7f60,L,000068,_ZN2nn3nex31PRUDPStreamActiveBodieslatePRUDPLiteImp26GetSendConnectionSignatureEPNS0_6PacketEPNS0_27TransportSignatureGeneratorEhPNS0_14SignatureBytesE
108439108439
0x00000071016f7fa4,L,000184,
108440108440
0x00000071016f805c,L,000004,nullsub_5297
108441108441
0x00000071016f8060,L,000004,j__ZN2nn3nex10RootObjectdlEPv_60

lib/hkStubs/Havok/Physics/Constraint/Data/hkpConstraintInfo.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,25 @@ struct hkpConstraintInfo {
1212
int m_maxSizeOfSchema;
1313
int m_sizeOfSchemas;
1414
int m_numSolverResults;
15-
int m_numSolverElemTemps;
15+
int m_numSolverElemActiveBodiess;
1616
};
1717

1818
inline void hkpConstraintInfo::add(int schemaSize, int numSolverResults, int numSolverTempElems) {
1919
m_sizeOfSchemas += schemaSize;
2020
m_numSolverResults += numSolverResults;
21-
m_numSolverElemTemps += numSolverTempElems;
21+
m_numSolverElemActiveBodiess += numSolverTempElems;
2222
}
2323

2424
inline void hkpConstraintInfo::add(const hkpConstraintInfo& delta) {
2525
m_maxSizeOfSchema = hkMath::max2(m_maxSizeOfSchema, delta.m_maxSizeOfSchema);
2626
m_maxSizeOfSchema = hkMath::max2(m_maxSizeOfSchema, delta.m_sizeOfSchemas);
2727
m_sizeOfSchemas += delta.m_sizeOfSchemas;
2828
m_numSolverResults += delta.m_numSolverResults;
29-
m_numSolverElemTemps += delta.m_numSolverElemTemps;
29+
m_numSolverElemActiveBodiess += delta.m_numSolverElemActiveBodiess;
3030
}
3131

3232
inline void hkpConstraintInfo::sub(const hkpConstraintInfo& delta) {
3333
m_sizeOfSchemas -= delta.m_sizeOfSchemas;
3434
m_numSolverResults -= delta.m_numSolverResults;
35-
m_numSolverElemTemps -= delta.m_numSolverElemTemps;
35+
m_numSolverElemActiveBodiess -= delta.m_numSolverElemActiveBodiess;
3636
}

lib/hkStubs/Havok/Physics2012/Dynamics/Constraint/hkpConstraintInstance.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ struct alignas(16) hkConstraintInternal {
177177

178178
hkUint16 m_sizeOfSchemas;
179179
hkUint16 m_numSolverResults;
180-
hkUint16 m_numSolverElemTemps;
180+
hkUint16 m_numSolverElemActiveBodiess;
181181

182182
hkUint8 m_whoIsMaster;
183183
hkEnum<hkpConstraintInstance::InstanceType, hkUint8> m_constraintType;
@@ -291,31 +291,31 @@ inline void hkConstraintInternal::getConstraintInfo(hkpConstraintInfo& info) con
291291
info.m_maxSizeOfSchema = m_sizeOfSchemas;
292292
info.m_sizeOfSchemas = m_sizeOfSchemas;
293293
info.m_numSolverResults = m_numSolverResults;
294-
info.m_numSolverElemTemps = m_numSolverElemTemps;
294+
info.m_numSolverElemActiveBodiess = m_numSolverElemActiveBodiess;
295295
}
296296

297297
inline void hkConstraintInternal::addConstraintInfo(const hkpConstraintInfo& delta) {
298298
const hkUint32 numSolverResults = m_numSolverResults + delta.m_numSolverResults;
299-
const hkUint32 numSolverElemTemps = m_numSolverElemTemps + delta.m_numSolverElemTemps;
299+
const hkUint32 numSolverElemActiveBodiess = m_numSolverElemActiveBodiess + delta.m_numSolverElemActiveBodiess;
300300
const hkUint32 sizeOfSchemas = m_sizeOfSchemas + delta.m_sizeOfSchemas;
301301

302302
m_numSolverResults = hkUint16(numSolverResults);
303-
m_numSolverElemTemps = hkUint16(numSolverElemTemps);
303+
m_numSolverElemActiveBodiess = hkUint16(numSolverElemActiveBodiess);
304304
m_sizeOfSchemas = hkUint16(sizeOfSchemas);
305305
}
306306

307307
inline void hkConstraintInternal::subConstraintInfo(const hkpConstraintInfo& delta) {
308308
const hkUint32 numSolverResults = m_numSolverResults - delta.m_numSolverResults;
309-
const hkUint32 numSolverElemTemps = m_numSolverElemTemps - delta.m_numSolverElemTemps;
309+
const hkUint32 numSolverElemActiveBodiess = m_numSolverElemActiveBodiess - delta.m_numSolverElemActiveBodiess;
310310
const hkUint32 sizeOfSchemas = m_sizeOfSchemas - delta.m_sizeOfSchemas;
311311

312312
m_numSolverResults = hkUint16(numSolverResults);
313-
m_numSolverElemTemps = hkUint16(numSolverElemTemps);
313+
m_numSolverElemActiveBodiess = hkUint16(numSolverElemActiveBodiess);
314314
m_sizeOfSchemas = hkUint16(sizeOfSchemas);
315315
}
316316

317317
inline void hkConstraintInternal::clearConstraintInfo() {
318318
m_numSolverResults = 0;
319-
m_numSolverElemTemps = 0;
319+
m_numSolverElemActiveBodiess = 0;
320320
m_sizeOfSchemas = 0;
321321
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#pragma once
2+
3+
#include <Havok/Common/Base/Types/hkBaseTypes.h>
4+
5+
class hkpConstraintInstance;
6+
class hkpWorld;
7+
8+
struct hkpConstraintBrokenEvent {
9+
enum EventSource {
10+
EVENT_SOURCE_UNKNOWN,
11+
EVENT_SOURCE_BREAKABLE_CONSTRAINT,
12+
EVENT_SOURCE_FLEXIBLE_JOINT,
13+
};
14+
15+
hkpConstraintBrokenEvent(hkpWorld* world, hkpConstraintInstance* i, EventSource es)
16+
: m_world(world), m_constraintInstance(i), m_eventSource(es), m_eventSourceDetails(0),
17+
m_constraintBroken(true), m_actualImpulse(0.0f), m_impulseLimit(0.0f) {}
18+
19+
hkpWorld* m_world;
20+
hkpConstraintInstance* m_constraintInstance;
21+
22+
hkEnum<EventSource, hkUint8> m_eventSource;
23+
hkUint8 m_eventSourceDetails;
24+
hkBool m_constraintBroken;
25+
hkReal m_actualImpulse;
26+
hkReal m_impulseLimit;
27+
};
28+
29+
class hkpConstraintListener {
30+
public:
31+
virtual ~hkpConstraintListener() {}
32+
33+
virtual void constraintAddedCallback(hkpConstraintInstance* constraint) {}
34+
35+
virtual void constraintRemovedCallback(hkpConstraintInstance* constraint) {}
36+
37+
virtual void constraintDeletedCallback(hkpConstraintInstance* constraint) {}
38+
39+
virtual void constraintBreakingCallback(const hkpConstraintBrokenEvent& event) {}
40+
};

src/KingSystem/Physics/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ target_sources(uking PRIVATE
88

99
Constraint/physConstraint.cpp
1010
Constraint/physConstraint.h
11+
Constraint/physConstraintListener.h
1112

1213
Ragdoll/physRagdollConfig.cpp
1314
Ragdoll/physRagdollConfig.h
@@ -194,4 +195,4 @@ target_sources(uking PRIVATE
194195
physLayerMaskBuilder.h
195196
physMaterialMask.cpp
196197
physMaterialMask.h
197-
)
198+
)

0 commit comments

Comments
 (0)