コード例 #1
0
 public void MarkForUpdate(UpdateFlags flag, IGTFGraphElementModel model = null)
 {
     EditorDataModel?.SetUpdateFlag(flag);
     if (model != null)
     {
         EditorDataModel?.AddModelToUpdate(model);
     }
 }
コード例 #2
0
        public void Setup(IGTFGraphElementModel portModel, IStore store, GraphView graphView)
        {
            PortModel = portModel as IGTFPortModel;
            Store     = store;
            GraphView = graphView;

            BuildUI();
            UpdateFromModel();
        }
コード例 #3
0
        public static T CreateUI <T>(GraphView graphView, IStore store, IGTFGraphElementModel model) where T : class, IGraphElement
        {
            if (model == null)
            {
                Debug.LogError("GraphElementFactory could not create element because model is null.");
                return(null);
            }

            if (graphView == null)
            {
                Debug.LogError("GraphElementFactory could not create element because graphView is null.");
                return(null);
            }

            var ext = ExtensionMethodCache <ElementBuilder> .GetExtensionMethod(
                model.GetType(),
                ElementBuilder.FilterMethods,
                ElementBuilder.KeySelector
                );

            T newElem = null;

            if (ext != null)
            {
                var nodeBuilder = new ElementBuilder {
                    GraphView = graphView
                };
                newElem = ext.Invoke(null, new object[] { nodeBuilder, store, model }) as T;
            }

            if (newElem == null)
            {
                Debug.LogError($"GraphElementFactory doesn't know how to create a UI for element of type: {model.GetType()}");
                return(null);
            }

            s_UIForModel[new ValueTuple <GraphView, IGTFGraphElementModel>(graphView, model)] = newElem;

            return(newElem);
        }
コード例 #4
0
 public static T CreateUI <T>(this IGTFGraphElementModel model, GraphView graphView, IStore store) where T : class, IGraphElement
 {
     return(CreateUI <T>(graphView, store, model));
 }
コード例 #5
0
 public static T GetUI <T>(this IGTFGraphElementModel model, GraphView graphView) where T : class, IGraphElement
 {
     return(s_UIForModel.TryGetValue(new ValueTuple <GraphView, IGTFGraphElementModel>(graphView, model), out var ui) ? ui as T : null);
 }