Ejemplo n.º 1
0
    public static StartStepNode Create(Rect NodeRect)
    {
        StartStepNode node = ScriptableObject.CreateInstance <StartStepNode>();

        node.name = "Start Step";
        node.rect = NodeRect;

        NodeLinker.Create(node, "Link To", (int)Node.LinkType.To);
        NodeLinker.Create(node, "Link From", (int)Node.LinkType.From);


        node.Init();

        if (node.LinkSaveId >= 0)
        {
            foreach (Node n in Node_Editor.editor.nodeCanvas.nodes)
            {
                if (n.ID == node.LinkSaveId)
                {
                    node.LinkSave = n.Linkers[(int)Node.LinkType.From].connection;
                }
            }
        }
        return(node);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Context Click selection. Here you'll need to register your own using a string identifier
    /// </summary>
    public void ContextCallback(object obj)
    {
        switch (obj.ToString())
        {
        case "AI_actionNode":
            AI_ActionNode actionNode = AI_ActionNode.Create(new Rect(mousePos.x, mousePos.y, 100, 50));
            break;

        case "Controller_actionNode":
            Controller_ActionNode.Create(new Rect(mousePos.x, mousePos.y, 100, 50));
            break;

        case "AI_conditionNode":
            AI_ConditionNode conditionNode = AI_ConditionNode.Create(new Rect(mousePos.x, mousePos.y, 100, 50));
            break;

        case "Controller_conditionNode":
            Controller_ConditionNode.Create(new Rect(mousePos.x, mousePos.y, 100, 50));
            break;

        case "Start_StepNode":
            StartStepNode.Create(new Rect(mousePos.x, mousePos.y, 100, 50));
            break;

        case "End_StepNode":
            EndStepNode.Create(new Rect(mousePos.x, mousePos.y, 100, 50));
            break;

        case "deleteLinkTo":
            Node n = NodeAtPosition(mousePos);

            n.Linkers[(int)Node.LinkType.To].connection   = null;
            n.Linkers[(int)Node.LinkType.To].connectionID = -1;
            break;

        case "deleteLinkToOK":
            Node n1 = NodeAtPosition(mousePos);

            n1.Linkers[(int)Node.LinkType.ToOK].connection   = null;
            n1.Linkers[(int)Node.LinkType.ToOK].connectionID = -1;
            break;

        case "deleteLinkToKO":
            Node n2 = NodeAtPosition(mousePos);

            n2.Linkers[(int)Node.LinkType.ToKO].connection   = null;
            n2.Linkers[(int)Node.LinkType.ToKO].connectionID = -1;
            break;

        case "deleteNode":
            Node node = NodeAtPosition(mousePos);
            if (node != null && (node.name != "Root" && node.name != "End"))
            {
                nodeCanvas.nodes.Remove(node);
                node.OnDelete();
            }
            break;
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Loads the a node canvas from an asset
    /// </summary>
    public void LoadNodeCanvas(string path)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(Node_Canvas_Object));

        StreamReader lecteur = new StreamReader(path);

        nodeCanvas = (Node_Canvas_Object)serializer.Deserialize(lecteur);

        foreach (Node n1 in nodeCanvas.nodes)
        {
            StartStepNode stepNode = n1 as StartStepNode;
            if (stepNode)
            {
                stepNode.InitCustom();
            }

            if (n1.Linkers[0])
            {
                n1.Linkers[0].body = n1;
            }
            for (int i = 1; i < 4; ++i)
            {
                if (n1.Linkers[i])
                {
                    n1.Linkers[i].body = n1;
                    foreach (Node n2 in nodeCanvas.nodes)
                    {
                        if (n1.Linkers[i].connectionID == n2.ID)
                        {
                            n1.Linkers[i].connection = n2.Linkers[(int)Node.LinkType.From];
                            n2.Linkers[(int)Node.LinkType.From].connection = n1.Linkers[i];
                        }
                    }
                }
            }
        }

        lecteur.Close();
        Repaint();
    }