public virtual void Initializa(long local_player_pstid, CombatStartInfo combat_start_info) { //真正的local_player_pstid在局外,传进来就好;combat_start_info是给所有玩家、观战者、以及录像回放时,都一致的消息 m_local_player_pstid = local_player_pstid; m_level_data = GetConfigProvider().GetLevelData(combat_start_info.m_level_id); m_state = CombatClientState.Loading; m_state_frame_cnt = 0; m_state_start_time = -1; m_last_update_time = -1; m_waiting_cnt = 0; #if UNITY_EDITOR m_is_first_frame = true; #endif AttributeSystem.Instance.InitializeAllDefinition(m_combat_factory.GetConfigProvider()); ComponentTypeRegistry.RegisterDefaultComponents(); BehaviorTreeNodeTypeRegistry.RegisterDefaultNodes(); DamageModifier.RegisterDefaultModifiers(); m_combat_factory.RegisterCommands(); BehaviorTreeFactory.Instance.SetConfigProvider(m_combat_factory.GetConfigProvider()); m_logic_world = m_combat_factory.CreateLogicWorld(); m_logic_world.Initialize(this, combat_start_info.m_world_seed, true); m_render_world = m_combat_factory.CreateRenderWorld(); m_render_world.Initialize(this, m_logic_world); m_logic_world.SetIRenderWorld(m_render_world); m_sync_client = m_combat_factory.CreateSyncClient(); m_sync_client.Init(m_logic_world); BuildLogicWorld(combat_start_info); BuildRenderWorld(m_level_data); }
BTNode CreateBTNode(BehaviorTreeNodeData node_data) { BTNode btnode = BehaviorTreeNodeTypeRegistry.CreateBTNode(node_data.m_node_type); if (btnode == null) { return(null); } if (node_data.m_node_variables != null) { btnode.InitializeVariable(node_data.m_node_variables); } if (node_data.m_sub_nodes != null) { for (int i = 0; i < node_data.m_sub_nodes.Count; ++i) { BTNode sub_btnode = CreateBTNode(node_data.m_sub_nodes[i]); if (sub_btnode != null) { btnode.AddChild(sub_btnode); } } } return(btnode); }