private void CheckDestruction() { if (!destroyed && integrity <= 0) { Profiler.BeginSample("IntegrityOnWillDestroy"); var destructInfo = new DestructionInfo(lastDamageType, this); OnWillDestroyServer.Invoke(destructInfo); Profiler.EndSample(); if (onFire) { //ensure we stop burning SyncOnFire(onFire, false); } if (destructInfo.DamageType == DamageType.Burn) { if (OnBurnUpServer != null) { OnBurnUpServer(destructInfo); } else { DefaultBurnUp(destructInfo); } } else { DefaultDestroy(destructInfo); } destroyed = true; } }
private void CheckDestruction() { if (!destroyed && integrity <= 0) { var destructInfo = new DestructionInfo(lastDamageType); OnWillDestroyServer.Invoke(destructInfo); if (onFire) { //ensure we stop burning SyncOnFire(false); } if (destructInfo.DamageType == DamageType.Burn) { if (OnBurnUpServer != null) { OnBurnUpServer(destructInfo); } else { DefaultBurnUp(destructInfo); } } else { DefaultDestroy(destructInfo); } destroyed = true; } }
public void HitBoat() { Hits++; if (Hits == Length) { IsDestroyed = true; DestructionEvent?.Invoke(Id); } }
private void CheckDestruction(bool explodeOnDestroy = false) { if (!destroyed && integrity <= 0) { Profiler.BeginSample("IntegrityOnWillDestroy"); var destructInfo = new DestructionInfo(lastDamageType, this); OnWillDestroyServer.Invoke(destructInfo); Profiler.EndSample(); if (onFire) { //ensure we stop burning SyncOnFire(onFire, false); } if (explodeOnDestroy) { Explosion.StartExplosion(registerTile.WorldPositionServer, ExplosionsDamage); } if (destructInfo.DamageType == DamageType.Burn) { if (OnBurnUpServer != null) { OnBurnUpServer(destructInfo); } else { DefaultBurnUp(destructInfo); } } else { DefaultDestroy(destructInfo); } destroyed = true; } }