Process() public méthode

public Process ( bool makeNice = false ) : void
makeNice bool
Résultat void
Exemple #1
0
    public void BuildFacades()
    {
        if (facadePrefabs == null) return;

        Random.seed = System.Guid.NewGuid().GetHashCode();

        facades = new List<BuildingFacade>();
        facadePrefabScripts = new List<BuildingFacade>();

        graph = GetComponent<Graph>();

        List<Primitive> minimalCycles = graph.mainPrimitives.FindAll(p => p.type == Primitive.PrimitiveType.MinimalCycle);
        if (minimalCycles == null || minimalCycles.Count == 0)
        {
            Debug.Log("FacadeBuildet::Build() - No minimal cycles found!");
            return;
        }

        //GameObject facadeStretchObj = Instantiate(facadeStretchPrefab);
        //facadeStretch = facadeStretchObj.GetComponentInChildren<BuildingFacade>();
        //DestroyImmediate(facadeStretchObj);

        for (int i = 0; i < facadePrefabs.Count; i++)
        {
            GameObject facadeObj = Instantiate(facadePrefabs[i]);
            facadePrefabScripts.Add(facadeObj.GetComponentInChildren<BuildingFacade>());
            DestroyImmediate(facadeObj);
        }

        UtilityTools.Helper.DestroyChildren(transform);

        for (int i = 0; i < minimalCycles.Count; i++)
        {
            //noiseCurrent = Random.Range(0f, 100f);
            noiseY = Random.Range(0f, 100f);
            noiseCurrent = 0f;

            Primitive primitiveCopy = new Primitive(minimalCycles[i]);
            if (inSet > 0f)
            {
                primitiveCopy.edges.ForEach((e) => e.Width += inSet);
                primitiveCopy.Process();
            }

            List<Node> _nodes = primitiveCopy.nodes;

            nodes = new List<Node>();

            foreach (var n in _nodes)
            {
                nodes.Add(new Node(n));
            }

            primitiveCopy = new Primitive(minimalCycles[i]);
            primitiveCopy.edges.ForEach((e) => e.Width = roofAccentWidth + inSet);
            primitiveCopy.Process(false);

            _nodes = primitiveCopy.nodes;

            roofNodes = new List<Node>();

            foreach (var n in _nodes)
            {
                roofNodes.Add(new Node(n));
            }

            buildings = new List<Building>();

            facadeParent = new GameObject("Facades" + (i + 1).ToString());
            facadeParent.transform.SetParent(transform);
            facadeParent.transform.localPosition = Vector3.zero;

            facadeCounter = 0;

            for (int j = 0; j < nodes.Count; j++)
            {
                if (j == nodes.Count - 1)
                    BuildFromToNode(nodes[j], nodes[0]);
                else
                    BuildFromToNode(nodes[j], nodes[j + 1]);
            }

            GroupFacadesToBuildings();
        }
    }