public void InitBasicGraph(VSGraphModel graphModel)
        {
            var dotsStencil = (DotsStencil)graphModel.Stencil;

            dotsStencil.Type = m_GraphType;
            if (dotsStencil.CompiledScriptingGraphAsset == null)
            {
                CreateDotsCompiledScriptingGraphAsset(graphModel);
            }

            if (m_AttachToGameObject)
            {
                var graphAssetModel = graphModel.AssetModel;
                var graphHolder     = ObjectFactory.CreateGameObject(graphAssetModel.Name);
                Place(graphHolder, m_GraphHolderParent);

                AddScriptingGraphToObject((VSGraphAssetModel)graphModel.AssetModel, graphHolder);

                var authoringComponent = graphHolder.GetComponent <ScriptingGraphAuthoring>();

                if (m_GameObjects != null)
                {
                    Vector2 position = new Vector2(10, 10);
                    DotsStencil.CreateVariablesFromGameObjects(graphModel, authoringComponent, m_GameObjects, position, false);
                }
            }
        }
示例#2
0
        static State CreateObjectReference(State prevState, CreateObjectReferenceAction action)
        {
            var graph = action.GraphModel as VSGraphModel;

            if (action.Type == CreateObjectReferenceAction.ReferenceType.Subgraph)
            {
                DotsStencil.CreateSubGraphReference(graph, action.Objects.OfType <VSGraphAssetModel>(),
                                                    action.GraphSpacePosition);
            }
            else
            {
                if (prevState.EditorDataModel.BoundObject == null)
                {
                    Debug.LogError(
                        "Cannot create object references when a graph is opened in asset mode. Select a game object referencing this graph to do that.");
                    return(prevState);
                }

                var authoringComponent = (prevState.EditorDataModel.BoundObject as GameObject)
                                         ?.GetComponent <ScriptingGraphAuthoring>();
                Assert.IsNotNull(authoringComponent,
                                 "The currently bound object has no ScriptingGraphAuthoring component. This is impossible.");
                DotsStencil.CreateVariablesFromGameObjects(graph, authoringComponent,
                                                           action.Objects.OfType <GameObject>(), action.GraphSpacePosition,
                                                           action.Type == CreateObjectReferenceAction.ReferenceType.ObjectGraph);
            }

            prevState.MarkForUpdate(UpdateFlags.GraphTopology);
            return(prevState);
        }