예제 #1
0
            private NodeElementArchetype[] GetElementArchetypes(SurfaceParameter selected)
            {
                if (selected != null && selected.Type.Type != null)
                {
                    if (Prototypes != null && Prototypes.TryGetValue(selected.Type.Type, out var elements))
                    {
                        // Special case for Normal Maps
                        if (selected.Type.Type == typeof(Texture) && UseNormalMaps && selected.Value != null)
                        {
                            var asset = selected.Value as Texture;
                            if (asset == null && selected.Value is Guid id)
                            {
                                asset = FlaxEngine.Content.Load <Texture>(id);
                            }
                            if (asset != null && !asset.WaitForLoaded() && asset.IsNormalMap)
                            {
                                elements = _normalMapParameterElements;
                            }
                        }
                        return(elements);
                    }

                    return(new[]
                    {
                        NodeElementArchetype.Factory.Output(0, string.Empty, selected.Type, 0),
                    });
                }
                return(null);
            }
예제 #2
0
            /// <inheritdoc />
            public void OnParamDeleted(SurfaceParameter param)
            {
                // Deselect if that parameter is selected
                if ((Guid)Values[0] == param.ID)
                {
                    _combobox.SelectedIndex = -1;
                }

                UpdateCombo();
            }
예제 #3
0
            private void Add()
            {
                var param = SurfaceParameter.Create(Type);

                param.Name = Name;
                if (Type == ParameterType.NormalMap)
                {
                    // Use default normal map texture (don't load asset here, just lookup registry for id at path)
                    FlaxEngine.Content.GetAssetInfo(StringUtils.CombinePaths(Globals.EngineFolder, "Textures/NormalTexture.flax"), out _, out var id);
                    param.Value = id;
                }
                Window.Surface.Parameters.Insert(Index, param);
                Window.Surface.OnParamCreated(param);
                Window.OnParamAddUndo(this);
            }
예제 #4
0
            private SurfaceParameter GetSelected()
            {
                SurfaceParameter result = null;
                int index = 0;

                for (int i = 0; i < Surface.Parameters.Count; i++)
                {
                    var param = Surface.Parameters[i];
                    if (index == _combobox.SelectedIndex)
                    {
                        result = param;
                        break;
                    }
                    index++;
                }
                return(result);
            }
예제 #5
0
                /// <summary>
                /// Adds the parameter.
                /// </summary>
                /// <param name="type">The type.</param>
                private void AddParameter(ParameterType type)
                {
                    var win      = Values[0] as MaterialWindow;
                    var material = win?.Asset;

                    if (material == null || !material.IsLoaded)
                    {
                        return;
                    }

                    var param = SurfaceParameter.Create(type);

                    if (type == ParameterType.NormalMap)
                    {
                        // Use default normal map texture (don't load asset here, just lookup registry for id at path)
                        string typeName;
                        Guid   id;
                        FlaxEngine.Content.GetAssetInfo(StringUtils.CombinePaths(Globals.EngineFolder, "Textures/NormalTexture.flax"), out typeName, out id);
                        param.Value = id;
                    }
                    win.Surface.Parameters.Add(param);
                    win.Surface.OnParamCreated(param);
                }
예제 #6
0
 /// <inheritdoc />
 public void OnParamEdited(SurfaceParameter param)
 {
     UpdateUI();
 }
예제 #7
0
 /// <inheritdoc />
 public void OnParamRenamed(SurfaceParameter param)
 {
     UpdateCombo();
     UpdateUI();
 }
예제 #8
0
 /// <inheritdoc />
 public void OnParamCreated(SurfaceParameter param)
 {
     UpdateCombo();
 }
예제 #9
0
 /// <inheritdoc />
 public void OnParamRenamed(SurfaceParameter param)
 {
     // Update
     UpdateCombo();
     UpdateTitle();
 }