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(); } } }