private IEnumerator VisUpdater() { conduitMgr.StashVisualGrids(); if (path.Count == 1) { PathNode node = path[0]; path[0] = CreateVisualizer(node); } ApplyPathToConduitSystem(); for (int i = 0; i < path.Count; i++) { PathNode pathNode = path[i]; pathNode = CreateVisualizer(pathNode); path[i] = pathNode; string text = conduitMgr.GetVisualizerString(pathNode.cell) + "_place"; KBatchedAnimController component = pathNode.visualizer.GetComponent <KBatchedAnimController>(); if (component.HasAnimation(text)) { pathNode.Play(text); } else { pathNode.Play(conduitMgr.GetVisualizerString(pathNode.cell)); } component.TintColour = ((!def.IsValidBuildLocation(null, pathNode.cell, Orientation.Neutral, out string _)) ? Color.red : Color.white); TileVisualizer.RefreshCell(pathNode.cell, def.TileLayer, def.ReplacementLayer); } conduitMgr.UnstashVisualGrids(); yield return((object)null); /*Error: Unable to find new state assignment for yield return*/; }
public UtilityVisual(BuildingConfig buildingConfig, int cell) { Offset = buildingConfig.Offset; this.buildingConfig = buildingConfig; this.cell = cell; Vector3 positionCBC = Grid.CellToPosCBC(cell, buildingConfig.BuildingDef.SceneLayer); Visualizer = GameUtil.KInstantiate(buildingConfig.BuildingDef.BuildingPreview, positionCBC, Grid.SceneLayer.Ore, "BlueprintModUtilityVisualizer", LayerMask.NameToLayer("Place")); Visualizer.transform.SetPosition(positionCBC); Visualizer.SetActive(true); if (Visualizer.GetComponent <Rotatable>() != null) { Visualizer.GetComponent <Rotatable>().SetOrientation(buildingConfig.Orientation); } KBatchedAnimController batchedAnimController = Visualizer.GetComponent <KBatchedAnimController>(); if (batchedAnimController != null) { IUtilityNetworkMgr utilityNetworkManager = buildingConfig.BuildingDef.BuildingComplete.GetComponent <IHaveUtilityNetworkMgr>().GetNetworkManager(); if (utilityNetworkManager != null) { string animation = utilityNetworkManager.GetVisualizerString((UtilityConnections)buildingConfig.Flags) + "_place"; if (batchedAnimController.HasAnimation(animation)) { batchedAnimController.Play(animation); } } batchedAnimController.visibilityType = KAnimControllerBase.VisibilityType.Always; batchedAnimController.isMovable = true; batchedAnimController.Offset = buildingConfig.BuildingDef.GetVisualizerOffset() + buildingConfig.BuildingDef.placementPivot; batchedAnimController.TintColour = GetVisualizerColor(cell); batchedAnimController.SetLayer(LayerMask.NameToLayer("Place")); } else { Visualizer.SetLayerRecursively(LayerMask.NameToLayer("Place")); } VisualsUtilities.SetVisualizerColor(cell, GetVisualizerColor(cell), Visualizer, buildingConfig); }
public void Refresh() { if (connectionManager != null && !skipRefresh) { int cell = Grid.PosToCell(base.transform.GetPosition()); Connections = connectionManager.GetConnections(cell, isPhysicalBuilding); KBatchedAnimController component = GetComponent <KBatchedAnimController>(); if ((UnityEngine.Object)component != (UnityEngine.Object)null) { string text = connectionManager.GetVisualizerString(cell); BuildingUnderConstruction component2 = GetComponent <BuildingUnderConstruction>(); if ((UnityEngine.Object)component2 != (UnityEngine.Object)null && component.HasAnimation(text + "_place")) { text += "_place"; } if (text != null && text != string.Empty) { component.Play(text, KAnim.PlayMode.Once, 1f, 0f); } } } }