コード例 #1
0
        public void test_selector_loop_5()
        {
            testAgent.btsetcurrent("node_test/selector_loop_ut_5");
            testAgent.resetProperties();
            testAgent.btexec();

            behaviac.EBTStatus s = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, s);
            Assert.AreEqual(1, testAgent.testVar_0);
        }
コード例 #2
0
        public void test_predicate_sequence_0()
        {
            testAgent.btsetcurrent("node_test/predicate_sequence_ut_0");
            testAgent.resetProperties();
            behaviac.EBTStatus status = testAgent.btexec();

            Assert.AreEqual(behaviac.EBTStatus.BT_FAILURE, status);
            Assert.AreEqual(0, testAgent.testVar_1);
            Assert.AreEqual(0, testAgent.testVar_0);
        }
コード例 #3
0
        public void test_predicate_action_1()
        {
            testAgent.btsetcurrent("node_test/predicate_action_ut_1");
            testAgent.resetProperties();
            behaviac.EBTStatus status = testAgent.btexec();

            Assert.AreEqual(0, testAgent.testVar_0);
            Assert.AreEqual(0, testAgent.testVar_1);
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
        }
コード例 #4
0
 public void test_decoration_log_0()
 {
     testAgent.btsetcurrent("node_test/decoration_log_ut_0");
     testAgent.resetProperties();
     behaviac.EBTStatus status = testAgent.btexec();
     Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);
     Assert.AreEqual(0, testAgent.testVar_0);
     Assert.AreEqual(1, testAgent.testVar_1);
     Assert.AreEqual(0.0f, testAgent.testVar_2);
 }
コード例 #5
0
        public void test_predicate_selector_3()
        {
            testAgent.btsetcurrent("node_test/predicate_selector_ut_3");
            testAgent.resetProperties();
            behaviac.EBTStatus status = testAgent.btexec();

            Assert.AreEqual(behaviac.EBTStatus.BT_FAILURE, status);
            Assert.AreEqual(0, testAgent.testVar_0);
            Assert.AreEqual(-1, testAgent.testVar_1);
            Assert.AreEqual(-1.0f, testAgent.testVar_2);
        }
コード例 #6
0
        protected override EBTStatus update_impl(behaviac.Agent pAgent, behaviac.EBTStatus childStatus)
        {
            behaviac.Agent pAgent_opl = behaviac.Utils.GetParentAgent(pAgent, "SecondAgentInstance");
            int            opl        = (int)AgentMetaVisitor.GetProperty(pAgent_opl, "p2");

            behaviac.Agent pAgent_opr = (SecondAgent)AgentMetaVisitor.GetProperty(pAgent, "pInstance");
            int            opr        = (int)AgentMetaVisitor.GetProperty(pAgent_opr, "p2");
            bool           op         = opl > opr;

            return(op ? EBTStatus.BT_SUCCESS : EBTStatus.BT_FAILURE);
        }
コード例 #7
0
ファイル: FirstAgent.cs プロジェクト: BanMing/BehaviacLearn
 void Update()
 {
     if (_status == behaviac.EBTStatus.BT_RUNNING)
     {
         behaviac.Debug.LogWarning("Update");
         behaviac.Workspace.Instance.FrameSinceStartup = behaviac.Workspace.Instance.FrameSinceStartup + 1;
         _status = this.btexec();
         // FireEvent("event_task", 2);
         // behaviac.Workspace.Instance.DebugUpdate();
     }
 }
コード例 #8
0
ファイル: FightAgent.cs プロジェクト: zenithght/MobaClient
    /// <summary>
    /// 驱动AI的协程
    /// </summary>
    /// <returns></returns>
    protected IEnumerator drive()
    {
        while (true)
        {
            if (_get_LifeStatus() != behaviac.EBTStatus.BT_FAILURE && _status == behaviac.EBTStatus.BT_RUNNING)
            {
                _status = this.btexec();
            }

            yield return(CoroutineObjs.waitForMiliSeconds_1000);
        }
    }
コード例 #9
0
        protected override EBTStatus update_impl(behaviac.Agent pAgent, behaviac.EBTStatus childStatus)
        {
            EBTStatus result = EBTStatus.BT_SUCCESS;
            int       opl    = ((FSM_Ctrl)pAgent).Status;
            int       opr2   = 2;
            bool      op     = (opl == opr2);

            if (!op)
            {
                result = EBTStatus.BT_FAILURE;
            }
            return(result);
        }
コード例 #10
0
        public void test_decoration_successuntil_0()
        {
            testAgent.btsetcurrent("node_test/decoration_successuntil_ut_0");
            testAgent.resetProperties();
            int loopCount = 0;

            while (loopCount < 1000)
            {
                behaviac.EBTStatus status = testAgent.btexec();
                Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
                ++loopCount;
            }
        }
コード例 #11
0
        protected override EBTStatus update_impl(behaviac.Agent pAgent, behaviac.EBTStatus childStatus)
        {
            EBTStatus result = EBTStatus.BT_SUCCESS;
            bool      opl    = ((Unit)pAgent).isEnmyFound;
            bool      opr2   = true;
            bool      op     = (opl == opr2);

            if (!op)
            {
                result = EBTStatus.BT_FAILURE;
            }
            return(result);
        }
コード例 #12
0
ファイル: NodeUnitTest.cs プロジェクト: zs9024/behaviac-1
        public void custom_property_reset()
        {
            testAgent.btsetcurrent("par_test/custom_property_reset");
            testAgent.resetProperties();
            behaviac.EBTStatus status = testAgent.btexec();

            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
            Assert.AreEqual(10, testAgent.testVar_1);

            status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
            Assert.AreEqual(20, testAgent.testVar_1);
        }
コード例 #13
0
    static void UpdateLoop()
    {
        Loger.Log("UpdateLoop");

        int frames = 0;

        while (status == behaviac.EBTStatus.BT_RUNNING)
        {
            Loger.LogFormat("frame: {0}", ++frames);
            status = firstAgent.btexec();
            Thread.Sleep(3000);
        }
    }
コード例 #14
0
        public void test_event_0()
        {
            testAgent.btsetcurrent("node_test/event_ut_0");
            testAgent.resetProperties();

            testAgent.FireEvent("event_test_void");
            behaviac.EBTStatus status = testAgent.btexec();

            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            testAgent.FireEvent("event_test_void");
            Assert.AreEqual(true, testAgent.event_test_var_bool);

            status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            testAgent.resetProperties();
            testAgent.FireEvent("event_test_int", 13);
            Assert.AreEqual(13, testAgent.event_test_var_int);

            status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            testAgent.resetProperties();
            testAgent.FireEvent("event_test_int_bool", 15, true);
            Assert.AreEqual(true, testAgent.event_test_var_bool);
            Assert.AreEqual(15, testAgent.event_test_var_int);

            status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            testAgent.resetProperties();
            testAgent.FireEvent("event_test_int_bool_float", 15, true, 27.3f);
            Assert.AreEqual(true, testAgent.event_test_var_bool);
            Assert.AreEqual(15, testAgent.event_test_var_int);
            Assert.AreEqual(27.3f, testAgent.event_test_var_float);

            status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            testAgent.resetProperties();
            testAgent.testVar_0 = 0;
            status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
            Assert.AreEqual(0, testAgent.testVar_1);

            testAgent.FireEvent("event_test_int_bool_float", 19, true, 11.9f);
            Assert.AreEqual(false, testAgent.event_test_var_bool);
            Assert.AreEqual(-1, testAgent.event_test_var_int);
            Assert.AreEqual(-1.0f, testAgent.event_test_var_float);
        }
コード例 #15
0
        public void test_predicate_action_3()
        {
            testAgent.btsetcurrent("node_test/predicate_action_ut_3");
            testAgent.resetProperties();
            behaviac.EBTStatus status = testAgent.btexec();

            Assert.AreEqual(0, testAgent.testVar_0);
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            status = testAgent.btexec();

            Assert.AreEqual(0, testAgent.testVar_0);
            Assert.AreEqual(behaviac.EBTStatus.BT_FAILURE, status);
        }
コード例 #16
0
ファイル: NodeUnitTest.cs プロジェクト: zs9024/behaviac-1
        public void test_wait_1()
        {
            behaviac.Workspace.Instance.DoubleValueSinceStartup = 0;
            testAgent.btsetcurrent("node_test/wait_ut_1");
            testAgent.resetProperties();
            behaviac.EBTStatus status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);
            Assert.AreEqual(1, testAgent.testVar_0);

            behaviac.Workspace.Instance.DoubleValueSinceStartup = 1001 * 1000;
            status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
            Assert.AreEqual(2, testAgent.testVar_0);
        }
コード例 #17
0
ファイル: EventUnitTest.cs プロジェクト: qipa/behaviac-1
        public void test_event_1()
        {
            testAgent.btsetcurrent("node_test/event_ut_1");
            testAgent.resetProperties();

            behaviac.EBTStatus status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            testAgent.FireEvent("event_test_int", 13);
            Assert.AreEqual(13, testAgent.event_test_var_int);

            status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);
        }
コード例 #18
0
ファイル: NodeUnitTest.cs プロジェクト: zs9024/behaviac-1
        public void node_test_selector_ut_5()
        {
            testAgent.btsetcurrent("node_test/selector_ut_5");
            testAgent.resetProperties();

            testAgent.testColor = EnumTest.EnumTest_One;
            behaviac.EBTStatus status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
            Assert.AreEqual(0, testAgent.testVar_0);

            testAgent.testColor = EnumTest.EnumTest_OneAfterOne;
            status = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
            Assert.AreEqual(1, testAgent.testVar_0);
        }
コード例 #19
0
ファイル: NodeUnitTest.cs プロジェクト: zs9024/behaviac-1
        public void test_action_waitforsignal_2()
        {
            testAgent.btsetcurrent("node_test/action_ut_waitforsignal_2");
            testAgent.resetProperties();
            behaviac.EBTStatus status = testAgent.btexec();

            Assert.AreEqual(-1.0f, testAgent.testVar_2);
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            testAgent.resetProperties();
            testAgent.testVar_2 = 0.0f;
            status = testAgent.btexec();
            Assert.AreEqual(2.3f, testAgent.testVar_2);
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
        }
コード例 #20
0
    static void UpdateLoop()
    {
        Loger.Log("UpdateLoop");

        int frames = 0;

        behaviac.EBTStatus status = behaviac.EBTStatus.BT_RUNNING;
        while (status == behaviac.EBTStatus.BT_RUNNING)
        {
            Loger.LogFormat("frame: {0}", ++frames);

            behaviac.Workspace.Instance.DebugUpdate();
            status = firstAgent.btexec();
        }
    }
コード例 #21
0
ファイル: tutorial_0.cs プロジェクト: qipa/behaviac-1
        static void UpdateLoop()
        {
            Console.WriteLine("UpdateLoop");

            int frames = 0;

            behaviac.EBTStatus status = behaviac.EBTStatus.BT_RUNNING;

            while (status == behaviac.EBTStatus.BT_RUNNING)
            {
                Console.WriteLine("frame {0}", ++frames);

                status = g_FirstAgent.btexec();
            }
        }
コード例 #22
0
        public void Tick()
        {
            foreach (FreeAIComponent component in _interestComponents)
            {
                if (null != component.Agent)
                {
                    behaviac.EBTStatus status = behaviac.EBTStatus.BT_RUNNING;

                    while (status == behaviac.EBTStatus.BT_RUNNING)
                    {
                        status = component.Agent.btexec();
                    }
                }
            }
        }
コード例 #23
0
    public behaviac.EBTStatus moveForward()
    {
        if (startNewStep)
        {
            newMoveTarget = transform.localPosition + moveStepDistance * transform.forward;
            startNewStep  = false;
        }

        behaviac.EBTStatus btStatus = moveAGrid(newMoveTarget);
        if (btStatus != behaviac.EBTStatus.BT_RUNNING)
        {
            startNewStep = true;
        }

        return(btStatus);
    }
コード例 #24
0
ファイル: tutorial_12.cs プロジェクト: P79N6A/behaviac3.6
        static void UpdateLoop()
        {
            Console.WriteLine("UpdateLoop");

            behaviac.Workspace.Instance.FrameSinceStartup = 0;

            behaviac.EBTStatus status = behaviac.EBTStatus.BT_RUNNING;

            while (status == behaviac.EBTStatus.BT_RUNNING)
            {
                behaviac.Workspace.Instance.FrameSinceStartup++;

                Console.WriteLine("frame {0}", behaviac.Workspace.Instance.FrameSinceStartup);

                status = g_FirstAgent.btexec();
            }
        }
コード例 #25
0
 public override void OnSyncedUpdate()
 {
     if (_status == behaviac.EBTStatus.BT_RUNNING)
     {
         if (ShowLog)
         {
             Debug.LogWarning("Update===============================================");
         }
         _status = this.btexec();
     }
     AllTSTransform.OnUpdate();
     RotateTSTransform.OnUpdate();
     if (mActorAttr.IsDeath)
     {
         TrueSyncManager.SyncedDestroy(gameObject);
     }
 }
コード例 #26
0
ファイル: EventUnitTest.cs プロジェクト: qipa/behaviac-1
        public void test_event_2()
        {
            testChild.resetProperties();

            const string treePath = "node_test/event_ut_2";

            testChild.btload(treePath);
            testChild.btsetcurrent(treePath);

            behaviac.EBTStatus status = testChild.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            testChild.FireEvent("event_test_int_bool", 15, true);
            Assert.AreEqual(true, testChild.event_test_var_bool);
            Assert.AreEqual(15, testChild.event_test_var_int);

            status = testChild.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
        }
コード例 #27
0
        public void test_decoration_successuntil_1()
        {
            testAgent.btsetcurrent("node_test/decoration_successuntil_ut_1");
            testAgent.resetProperties();
            int loopCount = 0;

            while (loopCount < 5)
            {
                behaviac.EBTStatus status = testAgent.btexec();
                if (loopCount < 4)
                {
                    Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
                }
                else
                {
                    Assert.AreEqual(behaviac.EBTStatus.BT_FAILURE, status);
                }
                ++loopCount;
            }
        }
コード例 #28
0
        // Update is called once per frame
        void Update()
        {
            if (!CoreEntry.GameStart)
            {
                return;
            }

            //执行行为树
            if (m_btLoadResult)
            {
                behaviac.EBTStatus ret = btexec();

                if (ret != behaviac.EBTStatus.BT_RUNNING)
                {
                    //结束了
                    btunload(m_behaviorTree);
                    m_btLoadResult = false;
                }
            }
        }
コード例 #29
0
ファイル: NodeUnitTest.cs プロジェクト: zs9024/behaviac-1
        public void test_selector_loop_6()
        {
            testAgent.btsetcurrent("node_test/selector_loop_ut_6");
            testAgent.resetProperties();

            testAgent.m_bCanSee = false;
            const int kCount = 5;

            for (int i = 0; i < kCount; ++i)
            {
                behaviac.EBTStatus status = testAgent.btexec();
                Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);
                Assert.AreEqual(2, testAgent.testVar_0);
            }

            testAgent.m_bCanSee = true;

            behaviac.EBTStatus s = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, s);
            Assert.AreEqual(1, testAgent.testVar_0);

            s = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, s);
            Assert.AreEqual(1, testAgent.testVar_0);

            testAgent.m_bCanSee = false;

            s = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, s);
            Assert.AreEqual(2, testAgent.testVar_0);

            s = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, s);
            Assert.AreEqual(2, testAgent.testVar_0);

            testAgent.m_bCanSee = true;

            s = testAgent.btexec();
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, s);
            Assert.AreEqual(1, testAgent.testVar_0);
        }
コード例 #30
0
        public void local_out_scope()
        {
            testAgent.btsetcurrent("par_test/local_out_scope");
            testAgent.resetProperties();
            behaviac.EBTStatus status = testAgent.btexec();

            Assert.AreEqual(behaviac.EBTStatus.BT_RUNNING, status);

            bool c_Bool = testAgent.GetVariable <bool>("c_Bool");

            Assert.AreEqual(true, c_Bool);
            List <int> intArray = testAgent.GetVariable <List <int> >("c_IntArray") as List <int>;

            Assert.AreEqual(2, intArray.Count);
            Assert.AreEqual(1, intArray[0]);
            Assert.AreEqual(2, intArray[1]);

            string c_StaticString = testAgent.GetVariable <string>("c_StaticString");

            Assert.AreEqual("test string", c_StaticString);
            TNS.NE.NAT.eColor color = testAgent.GetVariable <TNS.NE.NAT.eColor>("c_Enum");
            Assert.AreEqual(TNS.NE.NAT.eColor.GREEN, color);

            //l_Int defined as local in custom_property_as_left_value_and_param, not defined in local_out_scope
            object l_Int = testAgent.GetVariable <object>("l_Int");

            Assert.AreEqual(null, l_Int);

            List <int> l_IntArray = testAgent.GetVariable <List <int> >("l_IntArray");

            Assert.AreEqual(2, l_IntArray.Count);
            Assert.AreEqual(2, l_IntArray[0]);
            Assert.AreEqual(3, l_IntArray[1]);

            status = testAgent.btexec();

            //bt succeeded, so the l_IntArray is out of scope
            Assert.AreEqual(behaviac.EBTStatus.BT_SUCCESS, status);
            l_IntArray = testAgent.GetVariable <List <int> >("l_IntArray");
            Assert.AreEqual(null, l_IntArray);
        }