示例#1
0
 /// <summary>
 /// Create road helper position
 /// </summary>
 /// <param name="setStartNum">Set start number</param>
 /// <param name="setEndNum">Set end number</param>
 public RoadHelperPosition(TrackData.RoadHelper.HelperType setType,
                           int setStartNum, int setEndNum)
 {
     type     = setType;
     startNum = setStartNum;
     endNum   = setEndNum;
 }
            /// <summary>
            /// Create road helper position
            /// </summary>
            /// <param name="setStartNum">Set start number</param>
            /// <param name="setEndNum">Set end number</param>
            public RoadHelperPosition(TrackData.RoadHelper.HelperType setType,
				int setStartNum, int setEndNum)
            {
                type = setType;
                startNum = setStartNum;
                endNum = setEndNum;
            }
示例#3
0
        private void GenerateTunnelsAndLandscapeObjects(
            List <TrackData.RoadHelper> roadHelpers,
            List <TrackData.NeutralObject> neutralObjects,
            Landscape landscape)
        {
            #region Find out where the tunnels are
            // Go through all tunnel helpers along the road,
            // everything close enough (<25) is interessting for us.
            int helperStartedNum = -1;
            TrackData.RoadHelper.HelperType remType =
                TrackData.RoadHelper.HelperType.Reset;
            for (int num = 0; num < points.Count; num++)
            {
                Vector3 pos = points[num].pos;
                foreach (TrackData.RoadHelper roadHelper in roadHelpers)
                {
                    float dist = Vector3.Distance(roadHelper.pos, pos);
                    if (dist < 25.0f)
                    {
                        if (helperStartedNum >= 0)
                        {
                            helperPositions.Add(new RoadHelperPosition(
                                                    remType, helperStartedNum, num));
                            // Reset?
                            if (roadHelper.type == TrackData.RoadHelper.HelperType.Reset)
                            {
                                helperStartedNum = -1;
                            }
                            else
                            {
                                // Start new part
                                helperStartedNum = num;
                                remType          = roadHelper.type;
                            }
                        }
                        else
                        {
                            helperStartedNum = num;
                            remType          = roadHelper.type;
                        }

                        // Remove this roadHelper (don't use it again)!
                        roadHelpers.Remove(roadHelper);
                        break;
                    }
                }
            }

            // Still a helper open? Then close it close before the end!
            if (helperStartedNum > 0)
            {
                helperPositions.Add(new RoadHelperPosition(
                                        remType, helperStartedNum, points.Count - 3));
            }
            #endregion

            #region Copy over neutral objects for landscape rendering
            if (landscape != null)
            {
                for (int num = 0; num < neutralObjects.Count; num++)
                {
                    TrackData.NeutralObject obj = neutralObjects[num];
                    landscape.AddObjectToRender(obj.modelName, obj.matrix, false);
                }
            }
            #endregion
        }