コード例 #1
0
ファイル: CameraComponent.cs プロジェクト: Amoel/Evershock
        //---------------------------------------------------------------------------

        public Vector3 GetCenter(ECameraTargetGroup group = ECameraTargetGroup.None)
        {
            TransformComponent transform = GetComponent <TransformComponent>();

            if (transform != null)
            {
                return(CalculateCenter(transform.Location, group));
            }
            return(Vector3.Zero);
        }
コード例 #2
0
ファイル: CameraComponent.cs プロジェクト: Amoel/Evershock
        //---------------------------------------------------------------------------

        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);
        }
コード例 #3
0
        //---------------------------------------------------------------------------

        public CameraTarget(Guid target, ECameraTargetGroup group, float distance)
        {
            Target   = target;
            Group    = group;
            Distance = distance;
        }