public void UsePart() { try { MyPartUsedHook result = MyHookSystem.executeHook <MyPartUsedHook>(new MyPartUsedHook(this)); if (result.isCanceled()) { return; } } catch (Exception e) { ModLoader.mainConsole.logError(e); } if (this.useEvent) { this.onPartUsed.Invoke(); } for (int i = 0; i < this.modules.Length; i++) { this.modules[i].OnPartUsed(); } }
public void DestroyPart(bool createExplosion, bool disablePartToPartDamage) { MyPartUsedHook hook = new MyPartUsedHook(this); hook = MyHookSystem.executeHook <MyPartUsedHook>(hook); if (hook.isCanceled()) { return; } while (this.joints.Count > 0) { Part.DestroyJoint(this.joints[0], disablePartToPartDamage); } this.vessel.partsManager.parts.Remove(this); base.gameObject.SetActive(false); this.vessel.partsManager.UpdatePartsGruping(disablePartToPartDamage, this.vessel); if (createExplosion) { Transform transform = UnityEngine.Object.Instantiate <Transform>(Ref.controller.explosionParticle, base.transform.TransformPoint(this.centerOfMass), Quaternion.identity); transform.localScale = Vector3.one * (this.mass * 1.8f + 0.5f); UnityEngine.Object.Destroy(transform.gameObject, 8f); } UnityEngine.Object.Destroy(base.gameObject); }