protected virtual void Update() { // Get the main camera? if (mainCamera == null) { mainCamera = Camera.main; } // Begin dragging if (Input.GetKey(Requires) == true && down == false) { down = true; startMousePosition = Input.mousePosition; } // End dragging if (Input.GetKey(Requires) == false && down == true) { down = false; // Slice all Destructibles? if (mainCamera != null) { var endMousePosition = Input.mousePosition; var startPos = mainCamera.ScreenToWorldPoint(startMousePosition); var endPos = mainCamera.ScreenToWorldPoint(endMousePosition); D2dDestructible.SliceAll(startPos, endPos, Thickness, StampTex, Hardness); } } // Update indicator? if (down == true && mainCamera != null && IndicatorPrefab != null) { if (indicatorInstance == null) { indicatorInstance = Instantiate(IndicatorPrefab); } var startPos = mainCamera.ScreenToWorldPoint(startMousePosition); var currentPos = mainCamera.ScreenToWorldPoint(Input.mousePosition); var scale = Vector3.Distance(currentPos, startPos); var angle = D2dHelper.Atan2(currentPos - startPos) * Mathf.Rad2Deg; // Transform the indicator so it lines up with the slice indicatorInstance.transform.position = new Vector3(startPos.x, startPos.y, indicatorInstance.transform.position.z); indicatorInstance.transform.rotation = Quaternion.Euler(0.0f, 0.0f, -angle); indicatorInstance.transform.localScale = new Vector3(Thickness, scale, scale); } // Destroy indicator? else if (indicatorInstance != null) { Destroy(indicatorInstance.gameObject); } }