// Slice collider by blade void Slice(GameObject targetObject, Vector3[] slicePlane) { // Check tag if (tagFilter != "Untagged" && !targetObject.CompareTag(tagFilter)) { return; } // Check layer if (LayerCheck(targetObject.layer) == false) { return; } // Get RayFire script RayfireRigid rfScr = targetObject.GetComponent <RayfireRigid>(); // targetObject.GetComponentInParent<RayfireRigid>(); // No Rayfire Rigid script if (rfScr == null) { return; } // No demolition allowed if (rfScr.demolitionType == DemolitionType.None) { return; } // Object can't be cut if (rfScr.limitations.sliceByBlade == false) { return; } // Global demolition state check if (rfScr.State() == false) { return; } // Slice object rfScr.AddSlicePlane(slicePlane); // Event sliceEvent.InvokeLocalEvent(this); RFSliceEvent.InvokeGlobalEvent(this); }