コード例 #1
0
    public void UpdateState()
    {
        if (Material != null)
        {
            FinalMaterial = Material;
        }
        else
        {
            if (Parent != null)
            {
                FinalMaterial = Parent.FinalMaterial;
            }
            else
            {
                FinalMaterial = Terrain.Material;
            }
        }

        if (ChildrenExist == true)
        {
            if (meshRenderer != null)
            {
                SgtHelper.SetEnabled(meshRenderer, false);
            }

            // Has colliders if it's the last depth
            UpdateCollider(Depth + 1 == Terrain.MaxColliderDepth);
        }
        else
        {
            if (Mesh == null)
            {
                Terrain.RebuildPatch(this);
            }

            if (meshRenderer == null)
            {
                meshRenderer = SgtHelper.GetOrAddComponent <MeshRenderer>(gameObject);
            }

            if (meshFilter == null)
            {
                meshFilter = SgtHelper.GetOrAddComponent <MeshFilter>(gameObject);
            }

            SgtHelper.SetEnabled(meshRenderer, true);

            if (meshFilter.sharedMesh != Mesh)
            {
                SgtHelper.BeginStealthSet(meshFilter);
                {
                    meshFilter.sharedMesh = Mesh;
                }
                SgtHelper.EndStealthSet();
            }

            UpdateMaterials();

            // Has colliders if it's under max depth
            UpdateCollider(Depth < Terrain.MaxColliderDepth);
        }
    }