Esempio n. 1
0
        public AntlerNode(AntlerNode parent, int depth, int numBranchesAllowed)
        {
            int numChildren = Random.Range(1, 4);

            if (depth > 3)
            {
                numChildren = Random.Range(0, 3);
            }
            if (depth > 7)
            {
                numChildren = 0;
            }

            if (depth == 0)
            {
                numChildren = 1;
            }
            numChildren = Mathf.Max(0, Mathf.Min(numChildren, numBranchesAllowed));
            if (parent != null && parent.children.Length > 1 && numChildren > 1)
            {
                numChildren = 1;
            }
            children = new AntlerNode[numChildren];
            for (int i = 0; i < numChildren; i++)
            {
                children[i] = new AntlerNode(this, depth + 1, numBranchesAllowed - numChildren - 1);
            }
        }
Esempio n. 2
0
    // Update is called once per frame
    void Update()
    {
        if (regen)
        {
            regen = false;

            AntlerNode antlers    = new AntlerNode(null, 0, numBranchesAllowed);
            Mesh       antlerMesh = antlers.CreateMesh(new Vector3(0, 0, 0), Vector3.up, width, widthBranch, lengthSingle, lengthBranch);
            GetComponent <MeshFilter>().mesh = antlerMesh;
        }
    }