データアセット由来のLimitがあるときに選択してDeleteキーを押すとクラッシュの可能性があります。
monguri opened this issue · 1 comments
monguri commented
FKawaiiPhysicsEditMode::InputKey()の実装ですが、
else if (InKey == EKeys::Delete && IsValidSelectCollision())
{
switch (SelectCollisionType)
{
case ECollisionLimitType::Spherical:
RuntimeNode->SphericalLimits.RemoveAt(SelectCollisionIndex);
GraphNode->Node.SphericalLimits.RemoveAt(SelectCollisionIndex);
break;
case ECollisionLimitType::Capsule:
RuntimeNode->CapsuleLimits.RemoveAt(SelectCollisionIndex);
GraphNode->Node.CapsuleLimits.RemoveAt(SelectCollisionIndex);
break;
case ECollisionLimitType::Planar:
RuntimeNode->PlanarLimits.RemoveAt(SelectCollisionIndex);
GraphNode->Node.PlanarLimits.RemoveAt(SelectCollisionIndex);
break;
case ECollisionLimitType::None: break;
default: ;
}
}
となっていますが、SelectCollisionIsFromDataAsset による分岐をしていないため、
SphericalLimitsDataの方にLimitがあって、そちらを選択してるときにDeleteボタンを押すと
空のSphericalLimitsに対してRemoveAt()が走り、クラッシュする、ということが起きそうです。
こちらでもSelectCollisionIsFromDataAssetによる分岐をすれば解決すると思います。
pafuhana1213 commented
反応が遅くなって申し訳ありません…
ご指摘の通りでしたので、SelectCollisionIsFromDataAssetを使った分岐を入れることでクラッシュをしないようにしました!
09febed
ご報告だけでなく解決の糸口までご共有いただき、本当にありがとうございました!