示例#1
0
    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);
    }
示例#2
0
    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]);
    }
示例#3
0
    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;
            }
        }
    }
示例#4
0
    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);
    }