Пример #1
0
		public Vector3[] GenerateWaypoints(ITerrain terrain, Vector3 lastPos, int min, int max, float minDist, float maxDist)
		{
			if (min < 1 || max < min || maxDist < minDist)
			{
				throw new ArgumentException("Invalid arguments");
			}

			var count = Utility.Random(min, max);
			var wps = new Vector3[count];
			for (var i = 0; i < count; i++)
			{
				var direction = Utility.Random(0, MathUtil.TwoPI);
				var dist = Utility.Random(minDist, maxDist);
				lastPos.GetPointYX(direction, dist, out lastPos);
				lastPos.Z = terrain.QueryWorldHeight(lastPos);
				wps[i] = lastPos;
			}
			return wps;
		}
Пример #2
0
        public static Vector3[] GenerateWaypoints(ITerrain terrain, Vector3 lastPos, float minDist, float maxDist, int count)
        {
            if (maxDist < minDist)
            {
                throw new ArgumentException(@"The maximum waypoint distance must be greater than the minimum", "maxDist");
            }

            var wps = new Vector3[count];
            for (var i = 0; i < count; i++)
            {
                var direction = Utility.Random(0, MathUtil.TwoPI);
                var dist = Utility.Random(minDist, maxDist);
                var z = lastPos.Z;
                lastPos.GetPointYX(direction, dist, out lastPos);
                lastPos.Z = z;
                //consider flying units
                lastPos.Z = terrain.GetGroundHeightUnderneath(lastPos);
                wps[i] = lastPos;
            }
            return wps;
        }