protected void EndDrag() { selectionImage.enabled = false; RaycastHit hit = RaycastToGround(); dragEndPos = hit.point; if (dragStartPos != null && dragEndPos != null) { Vector3 midPoint = (dragStartPos + dragEndPos) / 2; Vector3 extents = new Vector3(Mathf.Abs((dragStartPos - midPoint).x), 100, Mathf.Abs((dragStartPos - midPoint).z)); Collider[] objectsHoveredOver = Physics.OverlapBox(midPoint, extents); foreach (Collider c in objectsHoveredOver) { SelectableComponent selectableComponent = c.GetComponent <SelectableComponent>(); if (selectableComponent != null) { selectedObjects.Add(selectableComponent); selectableComponent.GetComponent <MyObject>().OnGameObjectDisabled += Deselect; selectableComponent.Select(); } } } }
private void Highlight(SelectableComponent selectableComponent) { if (selectableComponent == null) { return; } var renderer = selectableComponent.GetComponent <Renderer>(); // selected object have a renderer - highlight it if (renderer != null) { // memorize original material for selected object _rendererOriginalMaterials[renderer] = renderer.material; renderer.material = _highlightMaterial; } }
private void UnHighlight(SelectableComponent selectableComponent) { if (selectableComponent == null) { return; } var renderer = selectableComponent.GetComponent <Renderer>(); // previously selected object have a renderer - unhighlight it if (renderer != null) { if (!_rendererOriginalMaterials.ContainsKey(renderer)) { return; } // restore original material on previously selected object var originalMaterial = _rendererOriginalMaterials[renderer]; _rendererOriginalMaterials.Remove(renderer); renderer.material = originalMaterial; } }