Skip to content

データアセット由来のLimitがあるときに選択してDeleteキーを押すとクラッシュの可能性があります。 #72

@monguri

Description

@monguri

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による分岐をすれば解決すると思います。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions