예제 #1
0
 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();
     }
 }
예제 #2
0
    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);
    }