//--------------------------------------------------------------------------- public Vector3 GetCenter(ECameraTargetGroup group = ECameraTargetGroup.None) { TransformComponent transform = GetComponent <TransformComponent>(); if (transform != null) { return(CalculateCenter(transform.Location, group)); } return(Vector3.Zero); }
//--------------------------------------------------------------------------- private Vector3 CalculateCenter(Vector3 location, ECameraTargetGroup group = ECameraTargetGroup.None) { Vector3 center = Vector3.Zero; List <Vector3> locations = new List <Vector3>(); foreach (CameraTarget target in m_Targets.Values) { if (group != ECameraTargetGroup.None && group != target.Group) { continue; } TransformComponent targetTransform = ComponentManager.Get().Find <TransformComponent>(target.Target); if (targetTransform != null) { if (target.Distance <= 0.0f || Vector2.Distance(targetTransform.Location.To2D(), location.To2D()) < target.Distance) { locations.Add(targetTransform.Location); center += targetTransform.Location; } } } center /= (float)locations.Count; return(center); }
//--------------------------------------------------------------------------- public CameraTarget(Guid target, ECameraTargetGroup group, float distance) { Target = target; Group = group; Distance = distance; }