Skip to content

Commit 20c1ec0

Browse files
committed
Merged : Reset bone location and rotation may cause trouble when switching between skeleton LODs #44
1 parent 4659a10 commit 20c1ec0

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

Plugins/KawaiiPhysics/Source/KawaiiPhysics/Private/AnimNode_KawaiiPhysics.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ void FAnimNode_KawaiiPhysics::EvaluateSkeletalControl_AnyThread(FComponentSpaceP
118118
{
119119
if (!Bone.bDummy)
120120
{
121-
Bone.UpdatePoseTranform(BoneContainer, Output.Pose);
121+
Bone.UpdatePoseTranform(BoneContainer, Output.Pose, ResetBoneTransformWhenBoneNotFound);
122122
}
123123
else
124124
{

Plugins/KawaiiPhysics/Source/KawaiiPhysics/Public/AnimNode_KawaiiPhysics.h

+16-9
Original file line numberDiff line numberDiff line change
@@ -195,14 +195,18 @@ struct KAWAIIPHYSICS_API FKawaiiPhysicsModifyBone
195195

196196
public:
197197

198-
void UpdatePoseTranform(const FBoneContainer& BoneContainer, FCSPose<FCompactPose>& Pose)
198+
void UpdatePoseTranform(const FBoneContainer& BoneContainer, FCSPose<FCompactPose>& Pose, bool ResetBoneTransformWhenBoneNotFound)
199199
{
200200
auto CompactPoseIndex = BoneRef.GetCompactPoseIndex(BoneContainer);
201201
if (CompactPoseIndex < 0)
202202
{
203-
PoseLocation = FVector::ZeroVector;
204-
PoseRotation = FQuat::Identity;
205-
PoseScale = FVector::OneVector;
203+
// Reset bone location and rotation may cause trouble when switching between skeleton LODs #44
204+
if(ResetBoneTransformWhenBoneNotFound)
205+
{
206+
PoseLocation = FVector::ZeroVector;
207+
PoseRotation = FQuat::Identity;
208+
PoseScale = FVector::OneVector;
209+
}
206210
return;
207211
}
208212

@@ -300,6 +304,9 @@ struct KAWAIIPHYSICS_API FAnimNode_KawaiiPhysics : public FAnimNode_SkeletalCont
300304
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced Physics Settings", meta = (PinHiddenByDefault))
301305
EPlanarConstraint PlanarConstraint = EPlanarConstraint::None;
302306

307+
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced Physics Settings", meta = (PinHiddenByDefault))
308+
bool ResetBoneTransformWhenBoneNotFound = false;
309+
303310

304311
UPROPERTY(EditAnywhere, Category = "Spherical Limits")
305312
TArray< FSphericalLimit> SphericalLimits;
@@ -330,24 +337,24 @@ struct KAWAIIPHYSICS_API FAnimNode_KawaiiPhysics : public FAnimNode_SkeletalCont
330337
FVector Gravity = FVector::ZeroVector;
331338

332339
/** Whether or not wind is enabled for the bodies in this simulation */
333-
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Wind, meta = (PinHiddenByDefault))
340+
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Wind", meta = (PinHiddenByDefault))
334341
bool bEnableWind = false;
335342

336343
/** Scale to apply to calculated wind velocities in the solver */
337-
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Wind, meta = (DisplayAfter = "bEnableWind"), meta = (PinHiddenByDefault))
344+
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Wind", meta = (DisplayAfter = "bEnableWind"), meta = (PinHiddenByDefault))
338345
float WindScale = 1.0f;
339346

340347
/**
341348
* EXPERIMENTAL. Perform sweeps for each simulating bodies to avoid collisions with the world.
342349
* This greatly increases the cost of the physics simulation.
343350
*/
344-
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Collision, meta = (PinHiddenByDefault))
351+
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Collision", meta = (PinHiddenByDefault))
345352
bool bAllowWorldCollision = false;
346353
//use component collision channel settings by default
347-
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Collision, meta = (PinHiddenByDefault, EditCondition = "bAllowWorldCollision"))
354+
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Collision", meta = (PinHiddenByDefault, EditCondition = "bAllowWorldCollision"))
348355
bool bOverrideCollisionParams = false;
349356
/** Types of objects that this physics objects will collide with. */
350-
UPROPERTY(EditAnywhere, Category = Collision, meta = (FullyExpand = "true", EditCondition = "bAllowWorldCollision&&bOverrideCollisionParams"))
357+
UPROPERTY(EditAnywhere, Category = "Collision", meta = (FullyExpand = "true", EditCondition = "bAllowWorldCollision&&bOverrideCollisionParams"))
351358
FBodyInstance CollisionChannelSettings;
352359

353360

0 commit comments

Comments
 (0)