Пример #1
0
    public static AI_ConditionNode Create(Rect NodeRect)
    {
        AI_ConditionNode node = ScriptableObject.CreateInstance <AI_ConditionNode>();

        node.name = "Condition";
        node.rect = NodeRect;

        node.AI_ConditionsDico.Add("EnemyInFrontFireArcAtLessThanDist");
        node.AI_ConditionsDico.Add("EnemyInFrontFireArcAtMoreThanDist");
        node.AI_ConditionsDico.Add("EnemyInRangeOfBioWeapons");
        node.AI_ConditionsDico.Add("EnemyInRearFireArc");
        node.AI_ConditionsDico.Add("NormalMovementDangerous");
        node.AI_ConditionsDico.Add("OrdnancesNeedReloading");

        var type = System.Type.GetType(node.AI_ConditionsDico[(int)node.Condition]);

        node.ConditionFunction = (ConditionNodeFunctions)System.Activator.CreateInstance(type);
        node.oldCondition      = node.Condition;

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

        node.Init();

        return(node);
    }
Пример #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;
        }
    }