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); } } }
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); }