Esempio n. 1
0
        public void BuildLocatorObj(SERoomDataTree dataTree)
        {
            m_roomObj  = dataTree.mOutRoomObj;
            m_roomData = dataTree.mRoomData;
            RoomCfg roomCfg = m_roomObj.AddComponent <RoomCfg>();

            roomCfg.GUID      = m_GUID;
            roomCfg.roomObjID = m_roomObjID;
            m_roomObj.transform.localPosition = new Vector3(m_roomObj.transform.localPosition.x, -0.1f, m_roomObj.transform.localPosition.z);
            m_locatorObj   = m_roomObj.transform.Find("Locator").gameObject;
            m_RTLocatorObj = m_roomObj.transform.Find("LocatorRT").gameObject;
//             for (int i = 0; i < m_gateList.Count; i++ )
//             {
//                 if (!m_gateList[i].isGateOpen)
//                 {
//                     Transform childTrans = m_roomObj.transform.Find("GateLocate_" + strGatesPrefix[i]);
//                     if (null != childTrans)
//                     {
//                         childTrans.gameObject.SetActive(false);
//                     }
//                     continue;
//                 }
//
//                 Transform childTrans1 = m_roomObj.transform.Find("RemovableGate_" + strGatesPrefix[i]);
//                 if (null != childTrans1)
//                 {
//                     childTrans1.gameObject.SetActive(false);
//                 }
//                 //重新生成障碍相关的二维表数据
//                 ConfigObstacleArray((ENGateDirection)i);
//                 //房间门位置相关信息生成
//                 childTrans1 = m_roomObj.transform.Find("GateLocate_" + strGatesPrefix[i]);
//                 if (null != childTrans1)
//                 {
//                     childTrans1.gameObject.SetActive(false);
//                     SceneGateInfo gateInfo = GameTable.SceneGateTableAsset.Lookup(m_gateList[i].gateObjId);
//                     if (null != gateInfo)
//                     {
//                         GameResPackage.AsyncLoadObjectData data = new GameResPackage.AsyncLoadObjectData();
//                         IEnumerator e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(gateInfo.prefabName), data);
//                         while (true)
//                         {
//                             e.MoveNext();
//                             if (data.m_isFinish)
//                             {
//                                 break;
//                             }
//                             yield return e.Current;
//                         }
//                         if (data.m_obj != null)
//                         {
//                             GameObject obj = data.m_obj as GameObject;
//                             obj.transform.parent = childTrans1.parent;
//                             obj.transform.position = new Vector3(childTrans1.position.x, 0f, childTrans1.position.z);
//                             obj.transform.rotation = childTrans1.rotation;
//                             GateCfg gatecfg = obj.AddComponent<GateCfg>();
//                             gatecfg.OpenConditionType = m_gateList[i].gateOpenCondId;
//                             gatecfg.OpenCondParamList = m_gateList[i].gateOpenCondParam;
//                             gatecfg.OpenCondCountList = m_gateList[i].gateOpenCondCount;
//                             obj.SetActive(true);
//                             m_gateList[i].OutGateObject = obj;
//                         }
//                     }
//                 }
//                 if (null != m_gateList[i].BridgeData)
//                 {
//                     GameResPackage.AsyncLoadPackageData loadData2 = new GameResPackage.AsyncLoadPackageData();
//                     IEnumerator e2 = m_gateList[i].BridgeData.nextRoomNode.BuildLocatorObj(dataTree.mGateData[i].mNextRoomNode, loadData2);
//                     while (true)
//                     {
//                         e2.MoveNext();
//                         if (loadData2.m_isFinish)
//                         {
//                             break;
//                         }
//                         yield return e2.Current;
//                     }
//                     m_gateList[i].GateToRoomObjID = m_gateList[i].BridgeData.nextRoomNode.m_GUID;
//                     m_gateList[i].GateOpenAnim(false);
//                 }
//                 else
//                 {
//                     m_gateList[i].GateOpenAnim(true);
//                 }
//             }
//            loadData.m_isFinish = true;
        }
Esempio n. 2
0
        // 生成场景资源数据
        public IEnumerator BuildSceneResObj(SERoomDataTree sce, GameResPackage.AsyncLoadPackageData loadData, int gateIndex = -1)
        {
            string obstacleFileName = "Prefabs/" + m_RoomPrefabName + "-bytes.bytes";

            GameResPackage.AsyncLoadObjectData loadData2 = new GameResPackage.AsyncLoadObjectData();
            IEnumerator e = PoolManager.Singleton.Coroutine_Load(obstacleFileName, loadData2, false, false);

            while (true)
            {
                e.MoveNext();
                if (loadData2.m_isFinish)
                {
                    break;
                }
                yield return(e.Current);
            }
            if (loadData2.m_obj != null)
            {
                TextAsset asset = loadData2.m_obj as TextAsset;
                if (asset == null)
                {
                    Debug.Log("obstacleFileName=" + obstacleFileName);
                }
                else
                {
                    m_obstacleData = new SceneObstacleData();
                    m_obstacleData.Load(asset.bytes);
                }
            }
            loadData2 = new GameResPackage.AsyncLoadObjectData();
            e         = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(m_RoomPrefabName), loadData2, false, false);
            while (true)
            {
                e.MoveNext();
                if (loadData2.m_isFinish)
                {
                    break;
                }
                yield return(e.Current);
            }
            if (loadData2.m_obj != null)
            {
                sce.mRoomObj = loadData2.m_obj as GameObject;
            }
            string roomDataName = m_RoomPrefabName + "-data";

            loadData2 = new GameResPackage.AsyncLoadObjectData();
            e         = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(roomDataName), loadData2, false, false);
            while (true)
            {
                e.MoveNext();
                if (loadData2.m_isFinish)
                {
                    break;
                }
                yield return(e.Current);
            }
            if (loadData2.m_obj != null)
            {
                sce.mRoomData = loadData2.m_obj as GameObject;
            }
            sce.mRoomInfoTree = this;
//             for (int i = 0; i < m_gateList.Count; i++)
//             {
//                 sce.mGateData[i] = new SEGateData();
//                 if (null != m_gateList[i].BridgeData)
//                 {
//                     SceneBridgeInfo bridgeInfo = GameTable.SceneBridgeTableAsset.Lookup(m_gateList[i].BridgeData.bridgeObjId);
//                     if (null != bridgeInfo)
//                     {
//                         loadData2 = new GameResPackage.AsyncLoadObjectData();
//                         e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(bridgeInfo.bridgeHeadPrefab), loadData2, false, false);
//                         while (true)
//                         {
//                             e.MoveNext();
//                             if (loadData2.m_isFinish)
//                             {
//                                 break;
//                             }
//                             yield return e.Current;
//                         }
//                         if (loadData2.m_obj != null)
//                         {
//                             sce.mGateData[i].mBridgeHeadObj = loadData2.m_obj as GameObject;
//                         }
//                         loadData2 = new GameResPackage.AsyncLoadObjectData();
//                         e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(bridgeInfo.bridgeBodyPrefab), loadData2, false, false);
//                         while (true)
//                         {
//                             e.MoveNext();
//                             if (loadData2.m_isFinish)
//                             {
//                                 break;
//                             }
//                             yield return e.Current;
//                         }
//                         if (loadData2.m_obj != null)
//                         {
//                             sce.mGateData[i].mBridgeBodyObj = loadData2.m_obj as GameObject;
//                         }
//                         loadData2 = new GameResPackage.AsyncLoadObjectData();
//                         e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(bridgeInfo.bridgeTailPrefab), loadData2, false, false);
//                         while (true)
//                         {
//                             e.MoveNext();
//                             if (loadData2.m_isFinish)
//                             {
//                                 break;
//                             }
//                             yield return e.Current;
//                         }
//                         if (loadData2.m_obj != null)
//                         {
//                             sce.mGateData[i].mBridgeTailObj = loadData2.m_obj as GameObject;
//                         }
//                         //sce.mGateData[i].mBridgeHeadObj = GameData.LoadPrefab<GameObject>(bridgeInfo.bridgeHeadPrefab);
//                         //sce.mGateData[i].mBridgeBodyObj = GameData.LoadPrefab<GameObject>(bridgeInfo.bridgeBodyPrefab);
//                     }
//                     sce.mGateData[i].mIsHaveTunnel = true;
//                     sce.mGateData[i].mBridgeCenterLength = m_gateList[i].BridgeData.bridgeCenterLength;
//                     sce.mGateData[i].mNextRoomNode = new SERoomDataTree();
//                     m_gateList[i].isGateOpen = true;
//                     GameResPackage.AsyncLoadPackageData loadData3 = new GameResPackage.AsyncLoadPackageData();
//                     IEnumerator e6 = m_gateList[i].BridgeData.nextRoomNode.BuildSceneResObj(sce.mGateData[i].mNextRoomNode, loadData3, (i + 2) % 4);//一共四个门0对应2,1对应3。0+2%4= 2,1+2%4=3,2+2%4=0,3+2%4=1。·
//                     while (true)
//                     {
//                         e6.MoveNext();
//                         if (loadData3.m_isFinish)
//                         {
//                             break;
//                         }
//                         yield return e6.Current;
//                     }
//                 }
//                 else
//                 {//当该房间的这个门是没有联通出去的路的,但是这个门是另外房间进来的门那这个门要有意义。否则无意义
//                     if (gateIndex == i)
//                     {
//                         m_gateList[i].isGateOpen = true;
//                         m_gateList[i].gateOpenCondId = ENGateOpenCondType.enNone;
//                     }
//                     else
//                     {
//                         m_gateList[i].isGateOpen = false;
//                     }
//                 }
//             }
            loadData.m_isFinish = true;
        }