Skip to content

Commit 1532234

Browse files
committed
Use limb length in push as limb. Need to investigate why it doesn't work as expected, but should make for a more physically accurate sim
1 parent e9a6a8e commit 1532234

File tree

5 files changed

+35
-27
lines changed

5 files changed

+35
-27
lines changed

Source/Entities/ACRocket.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -351,17 +351,17 @@ void ACRocket::PreControllerUpdate() {
351351

352352
if (!m_LimbPushForcesAndCollisionsDisabled) {
353353
if (m_pRLeg) {
354-
m_pRFootGroup->PushAsLimb(m_Pos.GetFloored() + RotateOffset(m_pRLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[RIGHT][m_GearState], deltaTime, nullptr, true);
354+
m_pRFootGroup->PushAsLimb(m_Pos.GetFloored() + RotateOffset(m_pRLeg->GetParentOffset()), m_pRLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[RIGHT][m_GearState], deltaTime, nullptr, true);
355355
}
356356
if (m_pLLeg) {
357-
m_pLFootGroup->PushAsLimb(m_Pos.GetFloored() + RotateOffset(m_pLLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[LEFT][m_GearState], deltaTime, nullptr, true);
357+
m_pLFootGroup->PushAsLimb(m_Pos.GetFloored() + RotateOffset(m_pLLeg->GetParentOffset()), m_pLLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[LEFT][m_GearState], deltaTime, nullptr, true);
358358
}
359359
} else {
360360
if (m_pRLeg) {
361-
m_pRFootGroup->PushAsLimb(m_Pos.GetFloored() + RotateOffset(m_pRLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[RIGHT][m_GearState], deltaTime, nullptr, true);
361+
m_pRFootGroup->PushAsLimb(m_Pos.GetFloored() + RotateOffset(m_pRLeg->GetParentOffset()), m_pRLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[RIGHT][m_GearState], deltaTime, nullptr, true);
362362
}
363363
if (m_pLLeg) {
364-
m_pLFootGroup->PushAsLimb(m_Pos.GetFloored() + RotateOffset(m_pLLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[LEFT][m_GearState], deltaTime, nullptr, true);
364+
m_pLFootGroup->PushAsLimb(m_Pos.GetFloored() + RotateOffset(m_pLLeg->GetParentOffset()), m_pLLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[LEFT][m_GearState], deltaTime, nullptr, true);
365365
}
366366
}
367367
}

Source/Entities/ACrab.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,14 +1024,14 @@ void ACrab::PreControllerUpdate() {
10241024

10251025
if (m_pLFGLeg && (!m_pLBGLeg || (!(m_Paths[LEFTSIDE][FGROUND][WALK].PathEnded() && LBGLegProg < 0.5F) || m_StrideStart[LEFTSIDE]))) {
10261026
m_StrideTimer[LEFTSIDE].Reset();
1027-
m_pLFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pLFGLeg->GetParentOffset()), m_Vel, walkAngle, m_Paths[LEFTSIDE][FGROUND][WALK], deltaTime, &restarted);
1027+
m_pLFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pLFGLeg->GetParentOffset()), m_pLFGLeg->GetMaxLength(), m_Vel, walkAngle, m_Paths[LEFTSIDE][FGROUND][WALK], deltaTime, &restarted);
10281028
}
10291029

10301030
if (m_pLBGLeg) {
10311031
if (!m_pLFGLeg || !(m_Paths[LEFTSIDE][BGROUND][WALK].PathEnded() && LFGLegProg < 0.5F)) {
10321032
m_StrideStart[LEFTSIDE] = false;
10331033
m_StrideTimer[LEFTSIDE].Reset();
1034-
m_pLBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pLBGLeg->GetParentOffset()), m_Vel, walkAngle, m_Paths[LEFTSIDE][BGROUND][WALK], deltaTime);
1034+
m_pLBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pLBGLeg->GetParentOffset()), m_pLBGLeg->GetMaxLength(), m_Vel, walkAngle, m_Paths[LEFTSIDE][BGROUND][WALK], deltaTime);
10351035
} else {
10361036
m_pLBGFootGroup->FlailAsLimb(m_Pos, RotateOffset(m_pLBGLeg->GetParentOffset()), m_pLBGLeg->GetMaxLength(), m_PrevVel, m_AngularVel, m_pLBGLeg->GetMass(), deltaTime);
10371037
}
@@ -1049,15 +1049,15 @@ void ACrab::PreControllerUpdate() {
10491049
if (!m_pRBGLeg || !(m_Paths[RIGHTSIDE][FGROUND][WALK].PathEnded() && RBGLegProg < 0.5F)) {
10501050
m_StrideStart[RIGHTSIDE] = false;
10511051
m_StrideTimer[RIGHTSIDE].Reset();
1052-
m_pRFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pRFGLeg->GetParentOffset()), m_Vel, walkAngle, m_Paths[RIGHTSIDE][FGROUND][WALK], deltaTime, &restarted);
1052+
m_pRFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pRFGLeg->GetParentOffset()), m_pRFGLeg->GetMaxLength(), m_Vel, walkAngle, m_Paths[RIGHTSIDE][FGROUND][WALK], deltaTime, &restarted);
10531053
} else {
10541054
m_pRFGFootGroup->FlailAsLimb(m_Pos, RotateOffset(m_pRFGLeg->GetParentOffset()), m_pRFGLeg->GetMaxLength(), m_PrevVel, m_AngularVel, m_pRFGLeg->GetMass(), deltaTime);
10551055
}
10561056
}
10571057

10581058
if (m_pRBGLeg && (!m_pRFGLeg || (!(m_Paths[RIGHTSIDE][BGROUND][WALK].PathEnded() && RFGLegProg < 0.5F) || m_StrideStart[RIGHTSIDE]))) {
10591059
m_StrideTimer[RIGHTSIDE].Reset();
1060-
m_pRBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pRBGLeg->GetParentOffset()), m_Vel, walkAngle, m_Paths[RIGHTSIDE][BGROUND][WALK], deltaTime);
1060+
m_pRBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pRBGLeg->GetParentOffset()), m_pRBGLeg->GetMaxLength(), m_Vel, walkAngle, m_Paths[RIGHTSIDE][BGROUND][WALK], deltaTime);
10611061
}
10621062

10631063
// Reset the right-side walking stride if it's taking longer than it should.
@@ -1118,19 +1118,19 @@ void ACrab::PreControllerUpdate() {
11181118
}
11191119
}
11201120
if (m_pLFGLeg) {
1121-
m_pLFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pLFGLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[LEFTSIDE][FGROUND][STAND], deltaTime, nullptr, !m_pRFGLeg);
1121+
m_pLFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pLFGLeg->GetParentOffset()), m_pLFGLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[LEFTSIDE][FGROUND][STAND], deltaTime, nullptr, !m_pRFGLeg);
11221122
}
11231123

11241124
if (m_pLBGLeg) {
1125-
m_pLBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pLBGLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[LEFTSIDE][BGROUND][STAND], deltaTime);
1125+
m_pLBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pLBGLeg->GetParentOffset()), m_pLBGLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[LEFTSIDE][BGROUND][STAND], deltaTime);
11261126
}
11271127

11281128
if (m_pRFGLeg) {
1129-
m_pRFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pRFGLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[RIGHTSIDE][FGROUND][STAND], deltaTime, nullptr, !m_pLFGLeg);
1129+
m_pRFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pRFGLeg->GetParentOffset()), m_pRFGLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[RIGHTSIDE][FGROUND][STAND], deltaTime, nullptr, !m_pLFGLeg);
11301130
}
11311131

11321132
if (m_pRBGLeg) {
1133-
m_pRBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pRBGLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[RIGHTSIDE][BGROUND][STAND], deltaTime);
1133+
m_pRBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pRBGLeg->GetParentOffset()), m_pRBGLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[RIGHTSIDE][BGROUND][STAND], deltaTime);
11341134
}
11351135
}
11361136
}

Source/Entities/AHuman.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2012,7 +2012,7 @@ void AHuman::PreControllerUpdate() {
20122012
m_StrideTimer.Reset();
20132013
}
20142014
Vector jointPos = m_Pos + RotateOffset(m_pFGLeg->GetParentOffset());
2015-
m_ArmClimbing[BGROUND] = !m_pFGFootGroup->PushAsLimb(jointPos, m_Vel, m_WalkAngle[FGROUND], m_Paths[FGROUND][movementPath], deltaTime, &restarted, false, Vector(0.0F, m_Paths[FGROUND][movementPath].GetLowestY()), pathOffset);
2015+
m_ArmClimbing[BGROUND] = !m_pFGFootGroup->PushAsLimb(jointPos, m_pFGLeg->GetMaxLength(), m_Vel, m_WalkAngle[FGROUND], m_Paths[FGROUND][movementPath], deltaTime, &restarted, false, Vector(0.0F, m_Paths[FGROUND][movementPath].GetLowestY()), pathOffset);
20162016
} else {
20172017
m_ArmClimbing[BGROUND] = false;
20182018
}
@@ -2023,7 +2023,7 @@ void AHuman::PreControllerUpdate() {
20232023
m_StrideTimer.Reset();
20242024
}
20252025
Vector jointPos = m_Pos + RotateOffset(m_pBGLeg->GetParentOffset());
2026-
m_ArmClimbing[FGROUND] = !m_pBGFootGroup->PushAsLimb(jointPos, m_Vel, m_WalkAngle[BGROUND], m_Paths[BGROUND][movementPath], deltaTime, &restarted, false, Vector(0.0F, m_Paths[BGROUND][movementPath].GetLowestY()), pathOffset);
2026+
m_ArmClimbing[FGROUND] = !m_pBGFootGroup->PushAsLimb(jointPos, m_pBGLeg->GetMaxLength(), m_Vel, m_WalkAngle[BGROUND], m_Paths[BGROUND][movementPath], deltaTime, &restarted, false, Vector(0.0F, m_Paths[BGROUND][movementPath].GetLowestY()), pathOffset);
20272027
} else {
20282028
if (m_pBGLeg) {
20292029
m_pBGFootGroup->FlailAsLimb(m_Pos, RotateOffset(m_pBGLeg->GetParentOffset()), m_pBGLeg->GetMaxLength(), m_PrevVel, m_AngularVel, m_pBGLeg->GetMass(), deltaTime);
@@ -2072,7 +2072,7 @@ void AHuman::PreControllerUpdate() {
20722072
if (m_Paths[FGROUND][CLIMB].PathEnded() || m_Paths[FGROUND][CLIMB].PathIsAtStart()) {
20732073
m_StrideTimer.Reset();
20742074
}
2075-
m_pFGHandGroup->PushAsLimb(m_Pos + Vector(0, m_pFGArm->GetParentOffset().m_Y).RadRotate(-rot), m_Vel, Matrix(), m_Paths[FGROUND][CLIMB], deltaTime, 0, false);
2075+
m_pFGHandGroup->PushAsLimb(m_Pos + Vector(0, m_pFGArm->GetParentOffset().m_Y).RadRotate(-rot), m_pFGArm->GetMaxLength(), m_Vel, Matrix(), m_Paths[FGROUND][CLIMB], deltaTime, 0, false);
20762076
} else {
20772077
m_ArmClimbing[FGROUND] = false;
20782078
m_Paths[FGROUND][CLIMB].Terminate();
@@ -2085,7 +2085,7 @@ void AHuman::PreControllerUpdate() {
20852085
if (m_Paths[BGROUND][CLIMB].PathEnded() || m_Paths[BGROUND][CLIMB].PathIsAtStart()) {
20862086
m_StrideTimer.Reset();
20872087
}
2088-
m_pBGHandGroup->PushAsLimb(m_Pos + Vector(0, m_pBGArm->GetParentOffset().m_Y).RadRotate(-rot), m_Vel, Matrix(), m_Paths[BGROUND][CLIMB], deltaTime, 0, false);
2088+
m_pBGHandGroup->PushAsLimb(m_Pos + Vector(0, m_pBGArm->GetParentOffset().m_Y).RadRotate(-rot), m_pBGArm->GetMaxLength(), m_Vel, Matrix(), m_Paths[BGROUND][CLIMB], deltaTime, 0, false);
20892089
} else {
20902090
m_ArmClimbing[BGROUND] = false;
20912091
m_Paths[BGROUND][CLIMB].Terminate();
@@ -2114,7 +2114,7 @@ void AHuman::PreControllerUpdate() {
21142114
if (m_Paths[FGROUND][CRAWL].PathEnded() || m_Paths[FGROUND][CRAWL].PathIsAtStart()) {
21152115
m_StrideTimer.Reset();
21162116
}
2117-
m_pFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pFGLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[FGROUND][CRAWL], deltaTime);
2117+
m_pFGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pFGLeg->GetParentOffset()), m_pFGLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[FGROUND][CRAWL], deltaTime);
21182118
} else {
21192119
m_Paths[FGROUND][CRAWL].Terminate();
21202120
}
@@ -2123,17 +2123,17 @@ void AHuman::PreControllerUpdate() {
21232123
if (m_Paths[BGROUND][CRAWL].PathEnded() || m_Paths[BGROUND][CRAWL].PathIsAtStart()) {
21242124
m_StrideTimer.Reset();
21252125
}
2126-
m_pBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pBGLeg->GetParentOffset()), m_Vel, m_Rotation, m_Paths[BGROUND][CRAWL], deltaTime);
2126+
m_pBGFootGroup->PushAsLimb(m_Pos + RotateOffset(m_pBGLeg->GetParentOffset()), m_pBGLeg->GetMaxLength(), m_Vel, m_Rotation, m_Paths[BGROUND][CRAWL], deltaTime);
21272127
} else {
21282128
m_Paths[BGROUND][CRAWL].Terminate();
21292129
}
21302130
if (m_pBGArm) {
21312131
m_ArmClimbing[BGROUND] = true;
2132-
m_pBGHandGroup->PushAsLimb(m_Pos + RotateOffset(Vector(0, m_pBGArm->GetParentOffset().m_Y)), m_Vel, m_Rotation, m_Paths[BGROUND][ARMCRAWL], deltaTime);
2132+
m_pBGHandGroup->PushAsLimb(m_Pos + RotateOffset(Vector(0, m_pBGArm->GetParentOffset().m_Y)), m_pBGArm->GetMaxLength(), m_Vel, m_Rotation, m_Paths[BGROUND][ARMCRAWL], deltaTime);
21332133
}
21342134
if (m_pFGArm && !m_pFGArm->GetHeldDevice() && !(m_Paths[FGROUND][ARMCRAWL].PathEnded() && m_Paths[BGROUND][ARMCRAWL].GetRegularProgress() < 0.5F)) {
21352135
m_ArmClimbing[FGROUND] = true;
2136-
m_pFGHandGroup->PushAsLimb(m_Pos + RotateOffset(Vector(0, m_pFGArm->GetParentOffset().m_Y)), m_Vel, m_Rotation, m_Paths[FGROUND][ARMCRAWL], deltaTime);
2136+
m_pFGHandGroup->PushAsLimb(m_Pos + RotateOffset(Vector(0, m_pFGArm->GetParentOffset().m_Y)), m_pFGArm->GetMaxLength(), m_Vel, m_Rotation, m_Paths[FGROUND][ARMCRAWL], deltaTime);
21372137
}
21382138
// Restart the stride if the current one seems to be taking too long.
21392139
if (m_StrideTimer.IsPastSimMS(m_Paths[FGROUND][CRAWL].GetTotalPathTime())) {
@@ -2170,11 +2170,11 @@ void AHuman::PreControllerUpdate() {
21702170
m_Paths[BGROUND][CRAWL].Terminate();
21712171

21722172
if (m_pFGLeg) {
2173-
m_pFGFootGroup->PushAsLimb(m_Pos.GetFloored() + m_pFGLeg->GetParentOffset().GetXFlipped(m_HFlipped), m_Vel, Matrix(), m_Paths[FGROUND][PRONE], deltaTime);
2173+
m_pFGFootGroup->PushAsLimb(m_Pos.GetFloored() + m_pFGLeg->GetParentOffset().GetXFlipped(m_HFlipped), m_pFGLeg->GetMaxLength(), m_Vel, Matrix(), m_Paths[FGROUND][PRONE], deltaTime);
21742174
}
21752175

21762176
if (m_pBGLeg) {
2177-
m_pBGFootGroup->PushAsLimb(m_Pos.GetFloored() + m_pBGLeg->GetParentOffset().GetXFlipped(m_HFlipped), m_Vel, Matrix(), m_Paths[BGROUND][PRONE], deltaTime);
2177+
m_pBGFootGroup->PushAsLimb(m_Pos.GetFloored() + m_pBGLeg->GetParentOffset().GetXFlipped(m_HFlipped), m_pBGLeg->GetMaxLength(), m_Vel, Matrix(), m_Paths[BGROUND][PRONE], deltaTime);
21782178
}
21792179

21802180
} else {
@@ -2187,12 +2187,12 @@ void AHuman::PreControllerUpdate() {
21872187

21882188
if (m_pFGLeg) {
21892189
Vector jointPos = m_Pos.GetFloored() + m_pFGLeg->GetParentOffset().GetXFlipped(m_HFlipped);
2190-
m_pFGFootGroup->PushAsLimb(jointPos, m_Vel, m_WalkAngle[FGROUND], m_Paths[FGROUND][STAND], deltaTime, nullptr, !m_pBGLeg, Vector(0.0F, m_Paths[FGROUND][STAND].GetLowestY()), pathOffset);
2190+
m_pFGFootGroup->PushAsLimb(jointPos, m_pFGLeg->GetMaxLength(), m_Vel, m_WalkAngle[FGROUND], m_Paths[FGROUND][STAND], deltaTime, nullptr, !m_pBGLeg, Vector(0.0F, m_Paths[FGROUND][STAND].GetLowestY()), pathOffset);
21912191
}
21922192

21932193
if (m_pBGLeg) {
21942194
Vector jointPos = m_Pos.GetFloored() + m_pBGLeg->GetParentOffset().GetXFlipped(m_HFlipped);
2195-
m_pBGFootGroup->PushAsLimb(jointPos, m_Vel, m_WalkAngle[BGROUND], m_Paths[BGROUND][STAND], deltaTime, nullptr, !m_pFGLeg, Vector(0.0F, m_Paths[FGROUND][STAND].GetLowestY()), pathOffset);
2195+
m_pBGFootGroup->PushAsLimb(jointPos, m_pBGLeg->GetMaxLength(), m_Vel, m_WalkAngle[BGROUND], m_Paths[BGROUND][STAND], deltaTime, nullptr, !m_pFGLeg, Vector(0.0F, m_Paths[FGROUND][STAND].GetLowestY()), pathOffset);
21962196
}
21972197
}
21982198
}

Source/Entities/AtomGroup.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,7 @@ Vector AtomGroup::PushTravel(Vector& position, const Vector& velocity, float pus
12111211
return returnPush;
12121212
}
12131213

1214-
bool AtomGroup::PushAsLimb(const Vector& jointPos, const Vector& velocity, const Matrix& rotation, LimbPath& limbPath, const float travelTime, bool* restarted, bool affectRotation, Vector rotationOffset, Vector positionOffset) {
1214+
bool AtomGroup::PushAsLimb(const Vector& jointPos, const float limbRadius, const Vector& velocity, const Matrix& rotation, LimbPath& limbPath, const float travelTime, bool* restarted, bool affectRotation, Vector rotationOffset, Vector positionOffset) {
12151215
RTEAssert(m_OwnerMOSR, "Tried to push-as-limb an AtomGroup that has no parent!");
12161216

12171217
bool didWrap = false;
@@ -1259,6 +1259,13 @@ bool AtomGroup::PushAsLimb(const Vector& jointPos, const Vector& velocity, const
12591259
limbPath.ReportProgress(m_LimbPos);
12601260
} while (!limbPath.FrameDone() && !limbPath.PathEnded());
12611261

1262+
// Todo, right now this doesn't really work well. Need to investigate
1263+
/*Vector limbRange = m_LimbPos - adjustedJointPos;
1264+
if (limbRange.MagnitudeIsGreaterThan(limbRadius)) {
1265+
limbRange.SetMagnitude(limbRadius);
1266+
m_LimbPos = jointPos + limbRange;
1267+
}*/
1268+
12621269
if (pushImpulse.GetLargest() > 10000.0F) {
12631270
pushImpulse.Reset();
12641271
}
@@ -1298,11 +1305,11 @@ void AtomGroup::FlailAsLimb(const Vector& ownerPos, const Vector& jointOffset, c
12981305
Vector pushImpulse = PushTravel(m_LimbPos, totalVel, 100, didWrap, travelTime, false, false);
12991306

13001307
Vector limbRange = m_LimbPos - jointPos;
1301-
13021308
if (limbRange.MagnitudeIsGreaterThan(limbRadius)) {
13031309
limbRange.SetMagnitude(limbRadius);
13041310
m_LimbPos = jointPos + limbRange;
13051311
}
1312+
13061313
return;
13071314
}
13081315

Source/Entities/AtomGroup.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ namespace RTE {
216216
/// Makes this AtomGroup travel as a pushing entity relative to the position of the owning MOSRotating.
217217
/// If stuff in the scene is hit, resulting forces are be added to the owning MOSRotating's impulse forces.
218218
/// @param jointPos A reference to a Vector with the world position of the limb joint which this AtomGroup is being pushed along.
219+
/// @param limbRadius The radius/range of the limb this is to simulate.
219220
/// @param velocity A Vector with the velocity of the owning MOSRotating.
220221
/// @param rotation A Matrix with the rotation of the owning MOSRotating.
221222
/// @param limbPath A LimbPath which this AtomGroup should travel along.
@@ -225,7 +226,7 @@ namespace RTE {
225226
/// @param rotationOffset The position, relative to the owning actor's position, that we should rotate around.
226227
/// @param rotationOffset The positional offset to apply to our limb path.
227228
/// @return Whether the LimbPath passed in could start free of terrain or not.
228-
bool PushAsLimb(const Vector& jointPos, const Vector& velocity, const Matrix& rotation, LimbPath& limbPath, const float travelTime, bool* restarted = nullptr, bool affectRotation = true, Vector rotationOffset = Vector(), Vector positionOffset = Vector());
229+
bool PushAsLimb(const Vector& jointPos, const float limbRadius, const Vector& velocity, const Matrix& rotation, LimbPath& limbPath, const float travelTime, bool* restarted = nullptr, bool affectRotation = true, Vector rotationOffset = Vector(), Vector positionOffset = Vector());
229230

230231
/// Makes this AtomGroup travel as a lifeless limb, constrained to a radius around the joint pin in the center.
231232
/// @param ownerPos A Vector with the world position of the owner MOSRotating.

0 commit comments

Comments
 (0)