Ejemplo n.º 1
0
 void ParseBuildInFunction(OperationCode opcode, int param_count)
 {
     GetToken();
     if (m_token_type != TokenType.LEFT_PAREN)
     {
         LogWrapper.LogError("Expression: ParseBuildInFunction, '(' expected");
     }
     if (param_count > 0)
     {
         GetToken();
         ParseExpression();
         --param_count;
         while (param_count > 0)
         {
             if (m_token_type != TokenType.COMMA)
             {
                 m_error_occurred = true;
                 LogWrapper.LogError("Expression: ParseBuildInFunction, ',' expected");
                 return;
             }
             GetToken();
             ParseExpression();
             --param_count;
         }
     }
     if (m_token_type != TokenType.RIGHT_PAREN)
     {
         m_error_occurred = true;
         LogWrapper.LogError("Expression: ParseBuildInFunction, ')' expected");
         return;
     }
     AppendOperation(opcode);
     GetToken();
 }
Ejemplo n.º 2
0
        public static void RegisterVariable(int variable_id, int component_type_id)
        {
#if UNITY_EDITOR
            if (m_variable2component.ContainsKey(variable_id))
            {
                LogWrapper.LogError("ComponentTypeRegistry, variable id(", (uint)variable_id, ") has already existed.");
            }
#endif
            m_variable2component[variable_id] = component_type_id;
        }
Ejemplo n.º 3
0
        public static void RegisterAttribute(AttributeData data)
        {
#if UNITY_EDITOR
            string existed_name;
            if (ms_all_ids.TryGetValue(data.m_attribute_id, out existed_name))
            {
                LogWrapper.LogError("AttributeSystem, attribute ", data.m_attribute_name, " has same crcid with existed attribute ", existed_name);
            }
#endif
            ms_all_ids[data.m_attribute_id] = data.m_attribute_name;
        }
Ejemplo n.º 4
0
        protected override void OnSceneWasLoaded()
        {
            GameObject camera_go = GameObject.Find("GameGlobal/GameMainCamera/Camera");

            if (camera_go == null)
            {
                LogWrapper.LogError("RenderWorld.LoadScene, GameGlobal/GameMainCamera/Camera");
            }
            else
            {
                m_camera_controller.SetCameraUnityObject(camera_go);
            }
        }
Ejemplo n.º 5
0
        void ParseTerm()
        {
            ParseFactor();
            while (true)
            {
                OperationCode op_code = OperationCode.END;
                switch (m_token_type)
                {
                case TokenType.STAR:
                    op_code = OperationCode.MULTIPLY;
                    break;

                case TokenType.SLASH:
                    op_code = OperationCode.DIVIDE;
                    break;

                case TokenType.AND:
                    op_code = OperationCode.AND;
                    break;

                case TokenType.AND_BITWISE:
                    op_code = OperationCode.AND_BITWISE;
                    break;

                default:
                    break;
                }
                if (op_code == OperationCode.END)
                {
                    break;
                }
                GetToken();
                ParseFactor();
                AppendOperation(op_code);
            }

            if (m_token_type == TokenType.QUESTION)
            {
                GetToken();
                ParseFactor();
                if (m_token_type != TokenType.SEMICOLON)
                {
                    LogWrapper.LogError("Expression: ParseTerm(), TokenType.SEMICOLON expected");
                }
                GetToken();
                ParseFactor();
                AppendOperation(OperationCode.CONDITIONAL_EXPRESSION);
            }
        }
Ejemplo n.º 6
0
        public void ExitAllAction()
        {
            var enumerator = m_previous_actions.GetEnumerator();

            while (enumerator.MoveNext())
            {
                enumerator.Current.ExitAction();
            }
            m_previous_actions.Clear();
            if (m_current_actions.Count > 0)
            {
                LogWrapper.LogError("BTActionBuffer::ExitAllAction(), m_current_actions isn't empty");
            }
            m_current_actions.Clear();
        }
Ejemplo n.º 7
0
 public bool UpdatePosition()
 {
     if (m_unity_go == null)
     {
         LogWrapper.LogError("ModelComponent.UpdatePosition, Object has already been destroyed!!!!!!!!!");
         return(false); //ZZWTODO
     }
     m_last_position = RenderWorld.Vector3FP_To_Vector3(m_position_component.CurrentPosition);
     if (m_predict_component != null)
     {
         m_predict_component.OnLogicUpdatePosition(m_last_position - m_bodyctrl_tr.localPosition);
     }
     m_bodyctrl_tr.localPosition = m_last_position;
     return(true);
 }
Ejemplo n.º 8
0
        public void Restore()
        {
            if (m_previous_actions.Count > 0)
            {
                LogWrapper.LogError("BTActionBuffer::Restore(), m_previous_actions isn't empty");
            }
            if (m_current_actions.Count > 0)
            {
                LogWrapper.LogError("BTActionBuffer::Restore(), m_current_actions isn't empty");
            }
            List <BTAction> temp = m_backup_previous_action;

            m_backup_previous_action = m_previous_actions;
            m_previous_actions       = temp;
        }
Ejemplo n.º 9
0
        public virtual void LoadScene(string scene_name)
        {
            Scene scene = SceneManager.GetSceneByPath(scene_name);

            if (scene == null)
            {
                LogWrapper.LogError("MyRenderWorld LoadScene(), ", scene_name);
                return;
            }
            m_loading_scenes.Add(scene_name);
            if (m_loading_scenes.Count == 1)
            {
                SceneManager.sceneLoaded += SceneLoadedCallback;
            }
            SceneManager.LoadScene(scene_name);
        }
Ejemplo n.º 10
0
        public static void Register(System.Type type)
        {
            int btnode_type_id = (int)CRC.Calculate(type.Name);

#if UNITY_EDITOR
            System.Type existed_type;
            if (m_btnodes_id2type.TryGetValue(btnode_type_id, out existed_type))
            {
                if (type.Name != existed_type.Name)
                {
                    LogWrapper.LogError("BehaviorTreeNodeTypeRegistry, BTNode ", type.FullName, " has same crcid with existed BTNode ", existed_type.FullName);
                }
            }
#endif
            m_btnodes_id2type[btnode_type_id] = type;
            m_btnodes_type2id[type]           = btnode_type_id;
        }
Ejemplo n.º 11
0
    void InitializeSyncModelTest()
    {
        string expression = "(2 > 3) ? (2 + 5) : (1 + 2)";

        Combat.ExpressionProgram program = new Combat.ExpressionProgram();
        program.Compile(expression);
        FixPoint result = program.Evaluate(null);

        LogWrapper.LogError(expression, ", EVALUATES ", result);

        if (m_combat_tester != null)
        {
            return;
        }
        //m_sync_tester = new Combat.SyncTester(this);
        //m_sync_tester.Init();
        m_combat_tester = new Combat.CombatTester();
        m_combat_tester.Initialize();
    }
Ejemplo n.º 12
0
        public static void Register(System.Type type, bool is_render_componet)
        {
            int component_type_id = (int)CRC.Calculate(type.Name);

#if UNITY_EDITOR
            System.Type existed_type;
            if (m_components_id2type.TryGetValue(component_type_id, out existed_type))
            {
                if (type.Name != existed_type.Name)
                {
                    LogWrapper.LogError("ComponentTypeRegistry, component ", type.FullName, " has same crcid with existed component ", existed_type.FullName);
                }
            }
#endif
            m_components_id2type[component_type_id] = type;
            m_components_type2id[type] = component_type_id;
            if (is_render_componet)
            {
                m_render_components_id.Add(component_type_id);
            }
        }
Ejemplo n.º 13
0
        BehaviorTreeCache GetPool(int bt_config_id, out bool is_new)
        {
            is_new = false;
            BehaviorTreeCache pool = null;

            if (!m_pools.TryGetValue(bt_config_id, out pool))
            {
                is_new = true;
                pool   = new BehaviorTreeCache();
                BehaviorTree instance = CreateBeahviorTreeFromConfig(bt_config_id);
                if (instance == null)
                {
                    LogWrapper.LogError("BehaviorTreeFactory, INVALID ID, ", bt_config_id);
                }
                else
                {
                    pool.m_proto = instance;
                    pool.m_cache.Add(instance);
                }
                m_pools[bt_config_id] = pool;
            }
            return(pool);
        }
Ejemplo n.º 14
0
        char SkipWhiteSpace()
        {
            while (!m_text_buffer.Eof())
            {
                char code = Tokenizer.GetCode(m_text_buffer.Char());
                switch (code)
                {
                case WhiteSpace:
                    break;

                case Error:
                    m_error = true;
                    LogWrapper.LogError("Expression: Tokenizer.SkipWhiteSpace(), illegal character in the buffer, index = ", m_text_buffer.CurrentIndex, ", char = ", m_text_buffer.Char());
                    return(code);

                default:
                    return(code);
                }
                m_text_buffer.NextChar();
            }
            RecyclableObject.Recycle(m_text_buffer);
            m_text_buffer = null;
            return(Eof);
        }
Ejemplo n.º 15
0
 void Print(string str)
 {
     LogWrapper.LogError(str);
 }
Ejemplo n.º 16
0
        void ConfirmEntityMove(EntityMoveCommand cmd, bool result)
        {
            switch (cmd.m_move_type)
            {
            case EntityMoveCommand.DirectionType:
            {
                uint crc = CalculateMoveCommandCRC(cmd);
                //LogWrapper.LogDebug("ConfirmEntityMove, DirectionType, time =", GetCurrentTime(), ", crc = ", crc);
                for (int i = 0; i < m_movement_predicts.Count;)
                {
                    MovementPredict predict = m_movement_predicts[i];
                    if (predict.m_command_crc != crc)
                    {
                        m_accumulated_offset += predict.m_offset;
                        if (predict.m_state != MovementPredict.EliminateOffsetState)
                        {
                            LogWrapper.LogError("REMOVE UNCONFIRMED PREDICT ", predict.m_command_crc, ", predict.m_offset = ", predict.m_offset.ToString());
                        }
                        ResetOffsetDirection();
                        RecyclableObject.Recycle(predict);
                        m_movement_predicts.RemoveAt(i);
                        continue;
                    }
                    else
                    {
                        if (predict.m_state == MovementPredict.AccumulateOffsetState)
                        {
                            predict.m_state = MovementPredict.FollowLogicState;
                            predict.m_task.ResetMaxPredictTime(GetRenderWorld().CurrentTime, m_follow_logic_predict_time);
                        }
                        break;
                    }
                }
            }
            break;

            case EntityMoveCommand.DestinationType:
            {
                if (m_copy_state == WaitCopy)
                {
                    m_copy_state = DoCopy;
                }
                if (!result && m_copy_state == DoCopy)
                {
                    StopMoveAnimation();
                }
                //下面这段代码和EntityMoveCommand.StopMoving差不多
                for (int i = 0; i < m_movement_predicts.Count;)
                {
                    MovementPredict predict = m_movement_predicts[i];
                    if (predict.m_state != MovementPredict.CopyLogicState)
                    {
                        m_accumulated_offset += predict.m_offset;
                        if (predict.m_state != MovementPredict.EliminateOffsetState)
                        {
                            LogWrapper.LogError("REMOVE UNCONFIRMED PREDICT ", predict.m_command_crc, ", predict.m_offset = ", predict.m_offset.ToString());
                        }
                        ResetOffsetDirection();
                        RecyclableObject.Recycle(predict);
                        m_movement_predicts.RemoveAt(i);
                        continue;
                    }
                    else
                    {
                        m_movement_predicts.RemoveAt(i);
                        break;
                    }
                }
                if (m_movement_predicts.Count == 0)
                {
                    //LogWrapper.LogDebug("ConfirmEntityMove, BEFOREE SET offset = ", m_accumulated_offset.ToString());
                    m_accumulated_offset = m_interpolation_tr.localPosition;
                    ResetOffsetDirection();
                    //LogWrapper.LogDebug("ConfirmEntityMove, all stoped, m_accumulated_offset = ", m_accumulated_offset.ToString());
                }
            }
            break;

            case EntityMoveCommand.StopMoving:
            {
                //LogWrapper.LogDebug("ConfirmEntityMove, STOP, time = ", GetCurrentTime());
                for (int i = 0; i < m_movement_predicts.Count;)
                {
                    MovementPredict predict = m_movement_predicts[i];
                    if (predict.m_state != MovementPredict.StopState)
                    {
                        m_accumulated_offset += predict.m_offset;
                        if (predict.m_state != MovementPredict.EliminateOffsetState)
                        {
                            LogWrapper.LogError("REMOVE UNCONFIRMED PREDICT ", predict.m_command_crc, ", predict.m_offset = ", predict.m_offset.ToString());
                        }
                        ResetOffsetDirection();
                        RecyclableObject.Recycle(predict);
                        m_movement_predicts.RemoveAt(i);
                        continue;
                    }
                    else
                    {
                        m_movement_predicts.RemoveAt(i);
                        break;
                    }
                }
                if (m_movement_predicts.Count == 0)
                {
                    //LogWrapper.LogDebug("ConfirmEntityMove, BEFOREE SET offset = ", m_accumulated_offset.ToString());
                    m_accumulated_offset = m_interpolation_tr.localPosition;
                    ResetOffsetDirection();
                    //LogWrapper.LogDebug("ConfirmEntityMove, all stoped, m_accumulated_offset = ", m_accumulated_offset.ToString());
                }
            }
            break;

            default:
                break;
            }
        }
Ejemplo n.º 17
0
        void ParseFactor()
        {
            switch (m_token_type)
            {
            case TokenType.NUMBER:
                AppendNumber(m_token.GetNumber());
                GetToken();
                break;

            case TokenType.LEFT_PAREN:
                GetToken();
                ParseExpression();
                if (m_token_type != TokenType.RIGHT_PAREN)
                {
                    m_error_occurred = true;
                    LogWrapper.LogError("Expression: ParseFactor(), ')' expected");
                    return;
                }
                GetToken();
                break;

            case TokenType.IDENTIFIER:
                m_raw_variable.Clear();
                m_raw_variable.Add(m_token.GetRawString());
                GetToken();
                while (m_token_type == TokenType.PERIOD)
                {
                    GetToken();
                    if (m_token_type != TokenType.IDENTIFIER)
                    {
                        m_error_occurred = true;
                        LogWrapper.LogError("Expression: ParseFactor(), TokenType.Identifier expected");
                        return;
                    }
                    m_raw_variable.Add(m_token.GetRawString());
                    GetToken();
                }
                AppendVariable(m_raw_variable);
                m_raw_variable.Clear();
                break;

            case TokenType.NOT:
                GetToken();
                ParseFactor();
                AppendOperation(OperationCode.NOT);
                break;

            case TokenType.SINE:
                ParseBuildInFunction(OperationCode.SIN, 1);
                break;

            case TokenType.COSINE:
                ParseBuildInFunction(OperationCode.COS, 1);
                break;

            case TokenType.TANGENT:
                ParseBuildInFunction(OperationCode.TAN, 1);
                break;

            case TokenType.SQUARE_ROOT:
                ParseBuildInFunction(OperationCode.SQRT, 1);
                break;

            case TokenType.MINIMUM:
                ParseBuildInFunction(OperationCode.MIN, 2);
                break;

            case TokenType.MAXIMUM:
                ParseBuildInFunction(OperationCode.MAX, 2);
                break;

            case TokenType.CLAMP:
                ParseBuildInFunction(OperationCode.CLAMP, 3);
                break;

            default:
                break;
            }
        }
Ejemplo n.º 18
0
        public override bool Get(TextBuffer text_buffer)
        {
            char ch = text_buffer.Char();

            switch (ch)
            {
            case '+':
                m_type = TokenType.PLUS;
                text_buffer.NextChar();
                break;

            case '-':
                m_type = TokenType.MINUS;
                text_buffer.NextChar();
                break;

            case '*':
                m_type = TokenType.STAR;
                text_buffer.NextChar();
                break;

            case '/':
                m_type = TokenType.SLASH;
                text_buffer.NextChar();
                break;

            case '(':
                m_type = TokenType.LEFT_PAREN;
                text_buffer.NextChar();
                break;

            case ')':
                m_type = TokenType.RIGHT_PAREN;
                text_buffer.NextChar();
                break;

            case '[':
                m_type = TokenType.LEFT_BRACKET;
                text_buffer.NextChar();
                break;

            case ']':
                m_type = TokenType.RIGHT_BRACKET;
                text_buffer.NextChar();
                break;

            case '.':
                m_type = TokenType.PERIOD;
                text_buffer.NextChar();
                break;

            case ',':
                m_type = TokenType.COMMA;
                text_buffer.NextChar();
                break;

            case '?':
                m_type = TokenType.QUESTION;
                text_buffer.NextChar();
                break;

            case ':':
                m_type = TokenType.SEMICOLON;
                text_buffer.NextChar();
                break;

            case '=':
                m_type = TokenType.EQUAL;
                ch     = text_buffer.NextChar();
                if (ch == '=')
                {
                    m_type = TokenType.EQUAL_EQUAL;
                    text_buffer.NextChar();
                }
                break;

            case '!':
                m_type = TokenType.NOT;
                ch     = text_buffer.NextChar();
                if (ch == '=')
                {
                    m_type = TokenType.NOT_EQUAL;
                    text_buffer.NextChar();
                }
                break;

            case '>':
                m_type = TokenType.GREATER;
                ch     = text_buffer.NextChar();
                if (ch == '=')
                {
                    m_type = TokenType.GREATER_EQUAL;
                    text_buffer.NextChar();
                }
                break;

            case '<':
                m_type = TokenType.LESS;
                ch     = text_buffer.NextChar();
                if (ch == '=')
                {
                    m_type = TokenType.LESS_EQUAL;
                    text_buffer.NextChar();
                }
                break;

            case '&':
                m_type = TokenType.AND_BITWISE;
                ch     = text_buffer.NextChar();
                if (ch == '&')
                {
                    m_type = TokenType.AND;
                    text_buffer.NextChar();
                }
                break;

            case '|':
                m_type = TokenType.OR_BITWISE;
                ch     = text_buffer.NextChar();
                if (ch == '|')
                {
                    m_type = TokenType.OR;
                    text_buffer.NextChar();
                }
                break;

            default:
                LogWrapper.LogError("Expression: SymbolToken.Get(), illegal symbol, index = ", text_buffer.CurrentIndex, ", char = ", text_buffer.Char());
                m_type = TokenType.ERROR;
                return(false);
            }
            return(true);
        }