Exemplo n.º 1
0
        /// <summary>
        /// Get the all the materials from the road network nodes
        /// </summary>
        /// <param name="baseobject">The parent object</param>
        /// <returns>The array of all the materials</returns>
        private List <Material> FindAllMaterials(GameObject baseobject)
        {
            List <Material> materials = new List <Material>();

            RoadBuilder rb = baseobject.GetComponent <RoadBuilder>();

            foreach (MaterialFrequency mf in rb.Details)
            {
                if (!materials.Contains(mf.Material))
                {
                    materials.Add(mf.Material);
                }
            }

            Transform[] allChildren = baseobject.GetComponentsInChildren <Transform>(true);
            foreach (Transform child in allChildren)
            {
                OverridableMaterialFrequency omf = child.GetComponent <OverridableMaterialFrequency>();
                if (omf != null)
                {
                    foreach (MaterialFrequency mf in omf.Details)
                    {
                        if (!materials.Contains(mf.Material))
                        {
                            materials.Add(mf.Material);
                        }
                    }
                }
            }

            return(materials);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Add the Material Frequency overridables
        /// </summary>
        public void AddOverridableMaterialsDetails()
        {
            gameObject.AddComponent <OverridableMaterialFrequency>();
            OverridableMaterialFrequency omf = gameObject.GetComponent <OverridableMaterialFrequency>();
            RoadNetworkLayout            rnl = gameObject.GetComponentInParent <RoadNetworkLayout>();

            omf.PopulateDefaultMaterials(rnl);
            Details.Modified = true;
        }
Exemplo n.º 3
0
 /// <summary>
 /// Add all of the materials from the children
 /// </summary>
 /// <param name="baseobject">The parent object</param>
 private void AddAllChildrenMaterials(GameObject baseobject)
 {
     Transform[] allChildren = baseobject.GetComponentsInChildren <Transform>(true);
     foreach (Transform child in allChildren)
     {
         OverridableMaterialFrequency omf = child.GetComponent <OverridableMaterialFrequency>();
         if (omf != null)
         {
             foreach (MaterialFrequency mf in omf.Details)
             {
                 if (!_meshMaterialsTriangles.ContainsKey(mf.Material.name))
                 {
                     _meshMaterialsTriangles.Add(mf.Material.name, new List <int>());
                 }
             }
         }
     }
 }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Do we have a Cross section override?
        /// </summary>
        /// <returns>Whether or not we have cross section details</returns>
        public bool HasOverridenMaterialDetails()
        {
            OverridableMaterialFrequency omf = gameObject.GetComponent <OverridableMaterialFrequency>();

            return(omf != null);
        }