private void OnVolumeTriggerEnter(TriggerVolume triggerVolume, Collider collider) { BaseUnit targetBaseUnit = collider.gameObject.GetComponent <BaseUnit>(); LineRenderDisplay lineRenderDisplayClone = Instantiate(lineRenderDisplayPrefab); lineRenderDisplayClone.transform.parent = this.transform; lineRenderDisplayClone.transform.localPosition = Vector3.zero; lineRenderDisplayClone.transform.localRotation = Quaternion.identity; lineRenderDisplayClone.Inialize(this, targetBaseUnit); lineRenderDisplays.Add(lineRenderDisplayClone); if (!colorProportion.ContainsKey(targetBaseUnit.Color)) { colorProportion.Add(targetBaseUnit.Color, 0.0f); } colorProportion[targetBaseUnit.Color] += 1.0f; UpdateColor(); }
private LineRenderDisplay GetLineRenderOf(BaseUnit targetBaseUnit) { for (int i = 0; i < lineRenderDisplays.Count; i++) { LineRenderDisplay lineRender = lineRenderDisplays[i]; if (lineRender.BaseUnit == targetBaseUnit) { return(lineRender); } } return(null); }
private void OnVolumeTriggerExit(TriggerVolume triggerVolume, Collider collider) { BaseUnit targetBaseUnit = collider.gameObject.GetComponent <BaseUnit>(); LineRenderDisplay currentLineRenderDisplay = GetLineRenderOf(targetBaseUnit); lineRenderDisplays.Remove(currentLineRenderDisplay); Destroy(currentLineRenderDisplay.gameObject); colorProportion[targetBaseUnit.Color] -= 1.0f; if (colorProportion[targetBaseUnit.Color] <= 0.0f) { colorProportion.Remove(targetBaseUnit.Color); } UpdateColor(); }