Ejemplo n.º 1
0
        public void Init(MyObjectBuilder_ScriptSM ob, long?ownerId = null)
        {
            m_objectBuilder = ob;
            Name            = ob.Name;

            if (ob.Nodes != null)
            {
                foreach (var nodeData in ob.Nodes)
                {
                    MyStateMachineNode stateNode;

                    if (nodeData is MyObjectBuilder_ScriptSMFinalNode)
                    {
                        stateNode = new MyVSStateMachineFinalNode(nodeData.Name);
                    }
                    else if (nodeData is MyObjectBuilder_ScriptSMSpreadNode)
                    {
                        stateNode = new MyVSStateMachineSpreadNode(nodeData.Name);
                    }
                    else if (nodeData is MyObjectBuilder_ScriptSMBarrierNode)
                    {
                        stateNode = new MyVSStateMachineBarrierNode(nodeData.Name);
                    }
                    else
                    {
                        var scriptType  = MyVSAssemblyProvider.GetType("VisualScripting.CustomScripts." + nodeData.ScriptClassName);
                        var missionNode = new MyVSStateMachineNode(nodeData.Name, scriptType);
                        if (missionNode.ScriptInstance != null)
                        {
                            if (ownerId == null)
                            {
                                missionNode.ScriptInstance.OwnerId = ob.OwnerId;
                            }
                            else
                            {
                                missionNode.ScriptInstance.OwnerId = ownerId.Value;
                            }
                        }

                        stateNode = missionNode;
                    }

                    AddNode(stateNode);
                }
            }

            if (ob.Transitions != null)
            {
                foreach (var transitionData in ob.Transitions)
                {
                    AddTransition(transitionData.From, transitionData.To, name: transitionData.Name);
                }
            }

            if (ob.Cursors != null)
            {
                foreach (var cursorData in ob.Cursors)
                {
                    CreateCursor(cursorData.NodeName);
                }
            }
        }