public void DeleteSelected() { if (_selected == null) { return; } Destroy(_selected.gameObject); _selected = null; }
protected void ChangeSelected(EnergyNode selected) { if (_selected != null) { _selected.halo.enabled = false; } _selected = selected; if (_selected != null) { _selected.halo.enabled = true; } selectionUpdated = true; }
protected virtual void Update() { if (!UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject() && Input.GetMouseButtonDown(0)) { if (_selectedType == NodeType.NONE) { if (!selectionUpdated) { selected = null; } scroll = true; lastMousePosition = GetTargetedPoint(Input.mousePosition); selectionUpdated = false; return; } lastPaused = paused; paused = true; EnergyNode node = Instantiate(Resources.Load <GameObject>(ENERGY_NODE_PREFAB), GetTargetedPoint(Input.mousePosition), Quaternion.identity).GetComponent <EnergyNode>(); node.transform.parent = transform; node.GetComponent <Renderer>().material = GetMaterial(_selectedType); node.GetComponent <RelativeRigidbody>().lockPosition = _lockCreated; created = node; } else if (Input.GetMouseButtonUp(0)) { if (created != null) { paused = lastPaused; switch (selectedType) { case NodeType.GRAVITY_POSITIVE: created.gravity = 1 / created.radius; break; case NodeType.GRAVITY_NEGATIVE: created.gravity = -1 / created.radius; break; case NodeType.CHARGE_POSITIVE: created.charge = 1 / created.radius; break; case NodeType.CHARGE_NEGATIVE: created.charge = -1 / created.radius; break; case NodeType.TIME_POSITIVE: created.time = 1 / created.radius; break; case NodeType.TIME_NEGATIVE: created.time = -1 / created.radius; break; } created = null; } else if (scroll) { scroll = false; } } else if (Input.GetMouseButton(0)) { if (created != null) { created.radius = Math.Max(1, (created.transform.position - GetTargetedPoint(Input.mousePosition)).magnitude); } else if (scroll) { Vector3 current = GetTargetedPoint(Input.mousePosition); Camera.main.transform.position -= current - lastMousePosition; } } selectionUpdated = false; HandleInput(); }