/// <summary>
        /// Create the a starting node
        /// </summary>
        /// <returns>The newly created road section</returns>
        public GameObject StartNewRoad()
        {
            GameObject rnnA = RoadNetworkNodeHelper.CreateBasicNode(new Vector3(0, 5, 0), "R_0000", this.gameObject);

            rnnA.transform.parent = this.gameObject.transform;

            return(rnnA);
        }
Exemple #2
0
        /// <summary>
        /// Insect a new node between the two nodes
        /// </summary>
        /// <param name="nodes">The list of selected node</param>
        /// <returns>The newly inserted node</returns>
        public GameObject InsertNewNode(List <RoadNetworkNode> nodes)
        {
            Vector3    pos    = (nodes[0].transform.position + nodes[1].transform.position) / 2;
            GameObject rnnNew = RoadNetworkNodeHelper.CreateBasicNode(pos, RoadConstructorHelper.GetUniqueRoadName(this.gameObject), this.gameObject);

            RoadNetworkNodeHelper.RemoveRoadAFromB(nodes[0], nodes[1]);
            RoadNetworkNodeHelper.RemoveRoadAFromB(nodes[1], nodes[0]);

            RoadNetworkLayout.AddRoadToNode(nodes[0], rnnNew.GetComponent <RoadNetworkNode>());
            RoadNetworkLayout.AddRoadToNode(rnnNew.GetComponent <RoadNetworkNode>(), nodes[0]);

            RoadNetworkLayout.AddRoadToNode(nodes[1], rnnNew.GetComponent <RoadNetworkNode>());
            RoadNetworkLayout.AddRoadToNode(rnnNew.GetComponent <RoadNetworkNode>(), nodes[1]);

            return(rnnNew);
        }
Exemple #3
0
        /// <summary>
        /// Extrude the road out, by creating a new node
        /// </summary>
        /// <returns>The newly created road section</returns>
        public GameObject ExtrudeRoad()
        {
            Details.CompressRoads();
            Details.Modified = true;

            float roadAngle = GetCurrentAngle() + (float)(Math.PI / 2);

            if (Details.Union != UNION_TYPE.END)
            {
                roadAngle += (float)(Math.PI / 2);
            }

            Vector3    pos     = MathsHelper.OffSetVector(transform.position, roadAngle, 100);
            GameObject newNode = RoadNetworkNodeHelper.CreateBasicNode(pos, RoadConstructorHelper.GetUniqueRoadName(gameObject), gameObject);

            GameObject rnnB = gameObject;

            RoadNetworkLayout.AddRoadToNode(newNode.GetComponent <RoadNetworkNode>(), rnnB.GetComponent <RoadNetworkNode>());
            RoadNetworkLayout.AddRoadToNode(rnnB.GetComponent <RoadNetworkNode>(), newNode.GetComponent <RoadNetworkNode>());

            ICrossSection sc = gameObject.GetComponent <ICrossSection>();

            if (sc != null)
            {
                newNode.AddComponent <OverridableCrossSection>();
                OverridableCrossSection ocs = newNode.GetComponent <OverridableCrossSection>();
                ocs.Copy(sc);
            }

            IMaterialFrequency fm = gameObject.GetComponent <IMaterialFrequency>();

            if (fm != null)
            {
                newNode.AddComponent <OverridableMaterialFrequency>();
                OverridableMaterialFrequency ocs = newNode.GetComponent <OverridableMaterialFrequency>();
                ocs.Copy(fm);
            }

            return(newNode);
        }
 /// <summary>
 /// Create the mesh for this Union and streets
 /// </summary>
 /// <param name="roadBuilderObject">The object to update the mesh for</param>
 public void CreateMesh(IRoadBuildData roadBuilderObject)
 {
     _meshSection.CreateMesh(roadBuilderObject);
     RoadNetworkNodeHelper.MeshStreets(roadBuilderObject, _streetNames);
 }
 /// <summary>
 /// Update the layout for all the streets
 /// </summary>
 /// <param name="roadBuilderObject"></param>
 public void CreateStreetLayout(RoadBuilder roadBuilderObject)
 {
     RoadNetworkNodeHelper.CreateAllStreets(_roadNetworkNode);
 }