private void setTargeted(IWorldSelectableProvider provider, Selectable selectable) { if (lastTargetedProvider != null) { lastTargetedProvider.SetTargeted(null); } if (provider != null) { provider.SetTargeted(selectable); } lastTargetedProvider = provider; lastSelectable = selectable; }
public void UpdateTarget(Ray ray) { var closest = new RaycastResult(); var newResult = new RaycastResult(); IWorldSelectableProvider closestProvider = null; Selectable closestSelectable = null; foreach (var p in providers) { foreach (var s in p.GetSelectables()) { newResult = s.Intersects(ray); if (newResult.IsCloser(closest)) { newResult.CopyTo(closest); closestProvider = p; closestSelectable = s; } } } setTargeted(closestProvider, closestSelectable); }