示例#1
0
    public void ChangeSkin(GameObjectRef prefab)
    {
        bool flag = lastGrade != grade;

        lastGrade = grade;
        if (flag)
        {
            if (currentSkin == null)
            {
                UpdatePlaceholder(false);
            }
            else
            {
                DestroySkin();
            }
            GameObject gameObject = base.gameManager.CreatePrefab(prefab.resourcePath, base.transform);
            currentSkin = gameObject.GetComponent <ConstructionSkin>();
            Model component = currentSkin.GetComponent <Model>();
            SetModel(component);
            Assert.IsTrue(model == component, "Didn't manage to set model successfully!");
        }
        if (base.isServer)
        {
            modelState = currentSkin.DetermineConditionalModelState(this);
        }
        bool flag2 = lastModelState != modelState;

        lastModelState = modelState;
        if (flag || flag2 || forceSkinRefresh)
        {
            currentSkin.Refresh(this);
            forceSkinRefresh = false;
        }
        if (base.isServer)
        {
            if (flag)
            {
                RefreshNeighbours(true);
            }
            if (flag2)
            {
                SendNetworkUpdate();
            }
        }
    }