private void onloaded(object obj) { SimpleOutterLoader loader = obj as SimpleOutterLoader; if (loader.state == SimpleLoadedState.Failed) { //Debug.LogError(loader.uri); return; } string json = loader.loadedData.ToString(); object jsonData = MyJsonTool.FromJson(json); MsgFromIOS.InfoFromIOS info = loader.bringData as MsgFromIOS.InfoFromIOS; OriginalProjectData data = new OriginalProjectData(); Dictionary <string, object> dic = jsonData as Dictionary <string, object>; ///在线端数据 if (dic.ContainsKey("products")) { //data.DeSerialize(dic); } ///移动端新数据 else if (dic.ContainsKey("version")) { data.DeSerialize(dic); } ///移动端旧数据 或 错误数据 else { data.DeSerialize(dic); } switch (info.enterType) { case "4": case "5": data.isTemplate = true; data.isNew = true; data.templateId = info.projectId; data.id = ""; data.tempId = jsonCacheManager.GetNewSchemeTempId(); break; default: data.id = info.projectId; data.tempId = info.tempId; data.isNew = false; break; } //data.templateId = info.templateId; data.tempEffectMetas.Clear(); List <object> matelist = info.msg as List <object>; for (int i = 0; i < matelist.Count; i++) { data.tempEffectMetas.Add(matelist[i].ToString()); } //放到队列加载后 //undoHelper.SetCurrentData(data); switch (info.enterType) { case "3": case "5": mainpageMachine.setState(ToThreeDState.Name); break; default: mainpageMachine.setState(ToTwoDState.Name); break; } float minX = 0; float maxX = 0; float minY = 0; float maxY = 0; for (int i = 0; i < data.data.pointList.Count; i++) { Vector2 v2 = data.data.pointList[i].pos; if (v2.x < minX) { minX = v2.x; } if (v2.x > maxX) { maxX = v2.x; } if (v2.y < minY) { minY = v2.y; } if (v2.y > maxY) { maxY = v2.y; } } Vector2 pos = Vector2.zero; pos.x = (minX + maxX) / 2; pos.y = (minY + maxY) / 2; CameraControler.Instance.ResetAllCamera(pos); QueueSimpleLoader queueloader = new QueueSimpleLoader(data); for (int i = 0; i < data.data.productList.Count; i++) { Product product = data.data.productList[i]; if (product.assetBundlePath.IndexOf("http://") == -1) { continue; //if (string.IsNullOrEmpty(product.model3d)) continue; } SimpleOutterLoader outLoader = LoaderPool.WaitOutterLoad(product.assetBundlePath, SimpleLoadDataType.prefabAssetBundle, null, product, onloadedBforClone); queueloader.AddQueueItem(outLoader); } if (queueloader.getCount != 0) { queueloader.addEventListener(LoadEvent.QueueProgress, OnAllProductProgress); queueloader.addEventListener(LoadEvent.QueueComplete, OnLoadedAllProduct); } else { undoHelper.SetCurrentData(data); } }
public override void enter() { base.enter(); if (viewTarget == null) { target = viewData as ProductData; targetWall = target.targetWall; targetProduct = mainpagedata.getProduct(target.seekId); targetSize = targetProduct.size; targetVO = mainpagedata.getGoods(target.seekId); optionsController.selectMachine = selectGoods3DMachine; GameObject go; if (selectEmtyObj == null) { go = GameObject.CreatePrimitive(PrimitiveType.Cube); selectEmtyObj = new GameObject("selectEmtyObj"); go.transform.parent = selectEmtyObj.transform; } else { go = selectEmtyObj.transform.GetChild(0).gameObject; } selectEmtyObj.gameObject.SetActive(true); Vector3 size = targetProduct.size; go.transform.localScale = size; go.transform.localPosition = size.y / 2 * Vector3.up; targetObj = selectEmtyObj; Vector3 v3 = target.position; v3.y = target.height; switch (targetVO.type) { case 3: //吊顶 { v3.y = target.height - targetSize.y; } break; case 4: //地毯 { v3.y = -0.001f + target.height; } break; case 5: //天花板 { v3.y = target.height - 0.001f; } break; default: break; } targetObj.transform.position = v3; string outUrl = targetVO.modelUri; loader = LoaderPool.WaitOutterLoad(outUrl, SimpleLoadDataType.prefabAssetBundle, onloaded, null); //在3D刷新时移除 3D自己刷新会去加载拥有的模型 若不加入 加载过程中被刷新会在加载完成时候出现多余项 view3D.loaders.Add(loader); return; } target = (viewTarget as Goods3DView).data; targetWall = target.targetWall; targetVO = mainpagedata.getGoods(target.seekId); targetProduct = mainpagedata.getProduct(target.seekId); targetSize = targetProduct.size; optionsController.selectMachine = selectGoods3DMachine; targetObj = viewTarget.gameObject; RefreshRotateAndMoveHeight(true); selectGoods3DMachine.setState(EditTypeOnSelect.Free); cameraMachion.addEventListener(CameraEvent.ViewChange, OnViewChange); }