protected void WaitMeshLoadUpdate(float deltaTime) { if (MeshAsset != null && MeshAsset.GetAsset().IsLoaded) { SetPhysicsFromLoadedMesh(); m_loadWaitUpdateScope.Disconnect(); m_loadWaitUpdateScope = null; } }
public override void Init() { base.Init(); if (MeshAsset == null || MeshAsset.GetAsset() == null || !MeshAsset.GetAsset().IsLoaded) { m_physicsMesh = new InstancedMesh(PhysicsStatics.DummyInstancedMesh); m_physicsMesh.Sidedness = TriangleSidedness.Clockwise; } InvalidateCollider(); m_transform.OnPositionChanged += OnPositionChanged; m_transform.OnRotationChanged += OnRotationChanged; }
protected override void InvalidateCollider() { if (MeshAsset != null && MeshAsset.GetAsset() != null) { if (MeshAsset.GetAsset().IsLoaded) { SetPhysicsFromLoadedMesh(); } else if (m_loadWaitUpdateScope == null) { m_loadWaitUpdateScope = World.UpdateScheduler.Connect(WaitMeshLoadUpdate, EUpdatePriority.Earliest); } } else { m_physicsMesh.Shape = PhysicsStatics.DummyInstancedMesh; } }