Esempio n. 1
0
        /// <summary>
        /// Creates shot
        /// </summary>
        /// <param name="holeIndex"></param>
        public static void CreateShot(int holeIndex)
        {
            int orderIndex = FreePlantIndex(Shots, holeIndex);

            ShotBase shot = (ShotBase) new GameObject(GetShotName(holeIndex, orderIndex)).AddComponent(Types.GetType("PerfectParallel.CourseForge.Shot", "Assembly-CSharp"));

            shot.Position   = CameraTerrainHit.Value.point;
            shot.HoleIndex  = holeIndex;
            shot.OrderIndex = orderIndex;

            if (PlatformBase.IO.IsEditor)
            {
                PlatformBase.Editor.RegisterCreatedObjectUndo(shot.gameObject, "Plant tool Creation");
                shot.gameObject.hideFlags = HideFlags.HideInHierarchy;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Get the aim point from this position (i.e. next shot or pin)
        /// </summary>
        /// <param name="position"></param>
        /// <param name="tee"></param>
        /// <param name="shots"></param>
        /// <param name="pin"></param>
        /// <returns></returns>
        public static Vector3 AimPoint(Vector3 position, TeeBase tee, List <ShotBase> shots, PinBase pin)
        {
            if (shots.Count == 0)
            {
                return(pin.Position);
            }
            if (Vector3.Distance(position, pin.Position) < 245)
            {
                return(pin.Position);
            }
            Vector3 aimPoint = Vector3.zero;

            for (int i = 0; i < shots.Count; ++i)
            {
                ShotBase shot = shots[i];
                if ((shot.Position - position).magnitude < 50.0f)
                {
                    continue;
                }

                if (aimPoint == Vector3.zero && (position - shot.Position).magnitude < (position - pin.Position).magnitude && (shot.Position - pin.Position).magnitude < (position - pin.Position).magnitude)
                {
                    aimPoint = shot.Position;
                }
                else if (aimPoint != Vector3.zero && (position - shot.Position).magnitude < (position - aimPoint).magnitude && (shot.Position - pin.Position).magnitude < (aimPoint - pin.Position).magnitude)
                {
                    aimPoint = shot.Position;
                }
            }

            if (aimPoint != Vector3.zero)
            {
                return(aimPoint);
            }
            else
            {
                return(pin.Position);
            }
        }