private void continueSelectPipelineLayerInput() { if (layerInput != null) { layerInput.GetComponent <TerrainInputPanel>().FillInputValues(); layerInput.GetComponent <TerrainInputPanel>().DestroyChildren(); Destroy(layerInput); } UnityEngine.Object terrainInputPrefab = Resources.Load("Prefabs/TerrainInputPanel", typeof(GameObject)); layerInput = (GameObject)Instantiate(terrainInputPrefab); layerInput.transform.SetParent(ContentPanel.transform, false); List <TerrainInput> terrainInputs = null; List <TerrainOutput> terrainOutputs = null; TerrainPipelineLayer terrainPipelineLayer = layerButtonToContinue.GetComponent <LayerButton>().TerrainPipelineLayer; if (terrainProject.TerrainInputs.ContainsKey(terrainPipelineLayer)) { terrainInputs = terrainProject.TerrainInputs[terrainPipelineLayer]; } if (terrainProject.TerrainOutputs.ContainsKey(terrainPipelineLayer)) { terrainOutputs = terrainProject.TerrainOutputs[terrainPipelineLayer]; } layerInput.GetComponent <TerrainInputPanel>().Init(layerButtonToContinue, terrainInputs, terrainOutputs); WaitPassive.SetActive(false); }
public GameObject RefreshAvailableLayers(GameObject layerButton) { int idx = configurationTerrainPipelineLayer.IndexOf(layerButton.GetComponent <LayerButton>().TerrainPipelineLayer); TerrainPipelineLayer currentTerrainPipelineLayer = configurationTerrainPipelineLayer[idx]; List <TerrainPipelineLayer> layerTypesToRemove = new List <TerrainPipelineLayer>(); List <LayerType> terrainPipelineLayerTypes = new List <LayerType>(); foreach (LayerType terrainPipelineLayerType in Enum.GetValues(typeof(LayerType))) { terrainPipelineLayerTypes.Add(terrainPipelineLayerType); } int i = 0; foreach (TerrainPipelineLayer terrainPipelineLayer in configurationTerrainPipelineLayer) { if (i != idx) { foreach (LayerType terrainPipelineLayerType in currentTerrainPipelineLayer.LayerTypes) { if (terrainPipelineLayer.LayerTypes.Contains(terrainPipelineLayerType)) { terrainPipelineLayer.LayerCode = (byte)(terrainPipelineLayer.LayerCode & (~(byte)terrainPipelineLayerType)); } } if (terrainPipelineLayer.LayerTypes.Count == 0) { layerTypesToRemove.Add(terrainPipelineLayer); } } terrainPipelineLayerTypes.RemoveAll(tt => terrainPipelineLayer.LayerTypes.Contains(tt)); i++; } foreach (TerrainPipelineLayer terrainPipelineLayer in layerTypesToRemove) { configurationTerrainPipelineLayer.Remove(terrainPipelineLayer); } foreach (LayerType terrainPipelineLayer in terrainPipelineLayerTypes) { TerrainPipelineLayer newTerrainPipelineLayer = new TerrainPipelineLayer(); newTerrainPipelineLayer.LayerCode = (byte)terrainPipelineLayer; configurationTerrainPipelineLayer.Add(newTerrainPipelineLayer); } refreshLayers(configurationTerrainPipelineLayer, true); idx = configurationTerrainPipelineLayer.IndexOf(currentTerrainPipelineLayer); return(layerButtons[idx]); }
public static void checkRestrictions(GameObject pluginOption, TerrainPluginInfo terrainPluginInfo, List <TerrainPipelineLayer> configurationTerrainPipelineLayer, TerrainPipelineLayer currentPipelineLayer) { PluginOption pluginOptionScript = pluginOption.GetComponent <PluginOption>(); if (currentPipelineLayer.LayerTypes.Count != terrainPluginInfo.Out.Count) { pluginOptionScript.InvalidateOut(); } else { foreach (LayerType terrainPipelineLayerType in terrainPluginInfo.Out) { if (!currentPipelineLayer.LayerTypes.Contains(terrainPipelineLayerType)) { pluginOptionScript.InvalidateOut(); break; } } } List <LayerType> previousPipelineLayerTypes = new List <LayerType>(); foreach (TerrainPipelineLayer terrainPipelineLayer in configurationTerrainPipelineLayer) { if (terrainPipelineLayer.LayerCode.Equals(currentPipelineLayer.LayerCode)) { break; } previousPipelineLayerTypes.AddRange(terrainPipelineLayer.LayerTypes); } foreach (LayerType terrainPipelineLayerType in terrainPluginInfo.In) { if (!previousPipelineLayerTypes.Contains(terrainPipelineLayerType)) { pluginOptionScript.InvalidateIn(); break; } } foreach (LayerType terrainPipelineLayerType in terrainPluginInfo.Not) { if (previousPipelineLayerTypes.Contains(terrainPipelineLayerType)) { pluginOptionScript.InvalidateNot(); break; } } }
public static bool ArePluginRestrictionsMet(TerrainPluginInfo terrainPluginInfo, List <TerrainPipelineLayer> configurationTerrainPipelineLayer, TerrainPipelineLayer currentTerrainPipelineLayer) { UnityEngine.Object layerOptionPrefab = Resources.Load("Prefabs/PluginOption", typeof(GameObject)); GameObject layerOption = ((GameObject)Instantiate(layerOptionPrefab)); checkRestrictions(layerOption, terrainPluginInfo, configurationTerrainPipelineLayer, currentTerrainPipelineLayer); if (layerOption.GetComponent <PluginOption>().Valid) { return(true); } return(false); }