private void Awake() { if (m_SelfData == null) { m_SelfData = new ModelInfoData(); } }
/// <summary> /// 根据传值设置属性值 /// </summary> public void SetItemInfo(ModelInfoData infodata) { m_SelfData = infodata; transform.position = new Vector3(float.Parse(infodata.mapX), float.Parse(infodata.mapY), float.Parse(infodata.mapZ)); transform.eulerAngles = new Vector3(float.Parse(infodata.rotateX), float.Parse(infodata.rotateY), float.Parse(infodata.rotateZ)); transform.localScale = new Vector3(float.Parse(infodata.scaleX), float.Parse(infodata.scaleY), float.Parse(infodata.scaleZ)); }
void DoLoadResource(IInfoData iData, GameObject loadObj, object fun, object param) { ModelInfoData infoData = iData as ModelInfoData; if (infoData == null) { return; } Debug.Log("DoLoadResource:" + infoData.name); ClientCha clientCha = param as ClientCha; if (clientCha == null) { return; } GameObject newModelObj = GameObject.Instantiate(loadObj, clientCha.transform) as GameObject; if (newModelObj == null) { return; } }
public void LoadConfigObjects() { RecvJsonClass recvData = JsonMapper.ToObject <RecvJsonClass>(m_RecvJsonStr); ModelInfoData infodata = new ModelInfoData(); #region 原有的数值 infodata.modelid = recvData.modelid; infodata.isNew = recvData.isNew; infodata.isAdd = recvData.isAdd; infodata.cameraX = recvData.cameraX.ToString(); infodata.cameraY = recvData.cameraY.ToString(); infodata.cameraZ = recvData.cameraZ.ToString(); infodata.cameraRotateX = recvData.cameraRotateX.ToString(); infodata.cameraRotateY = recvData.cameraRotateY.ToString(); infodata.cameraRotateZ = recvData.cameraRotateZ.ToString(); infodata.colliderCenterX = recvData.colliderCenterX.ToString(); infodata.colliderCenterY = recvData.colliderCenterY.ToString(); infodata.colliderCenterZ = recvData.colliderCenterZ.ToString(); infodata.colliderSizeX = recvData.colliderCenterX.ToString(); infodata.colliderSizeY = recvData.colliderCenterY.ToString(); infodata.colliderSizeZ = recvData.colliderCenterZ.ToString(); if (infodata.isNew == 0) { MessageManager.Instance.SendMessageEventNow("LoadConfigObject", infodata); return; } infodata.type = recvData.type; infodata.mapX = recvData.mapX.ToString(); infodata.mapY = recvData.mapY.ToString(); infodata.mapZ = recvData.mapZ.ToString(); infodata.rotateX = recvData.rotateX.ToString(); infodata.rotateY = recvData.rotateY.ToString(); infodata.rotateZ = recvData.rotateZ.ToString(); infodata.scaleX = recvData.scaleX.ToString(); infodata.scaleY = recvData.scaleY.ToString(); infodata.scaleZ = recvData.scaleZ.ToString(); infodata.originalColor = recvData.originalColor; infodata.selectedColor = recvData.selectedColor; infodata.alarmColor = recvData.alarmColor; infodata.cmd = recvData.cmd; infodata.devName = recvData.devName; infodata.nodeList = new List <ModelInfoData.CanvasInfo>(); for (int i = 0; i < recvData.nodeList.Count; i++) { ModelInfoData.CanvasInfo canvasinfo = new ModelInfoData.CanvasInfo(); canvasinfo.nodeName = recvData.nodeList[i].nodeName; canvasinfo.unit = recvData.nodeList[i].unit; canvasinfo.value = recvData.nodeList[i].value; infodata.nodeList.Add(canvasinfo); } MessageManager.Instance.SendMessageEventNow("LoadConfigObject", infodata); #endregion }
/// <summary> /// 加载模型完成回调 /// </summary> private void LoadModelCallback(ModelInfoData infodata, ResourceInfo info, GameObject go) { m_ModelPool.PushControlObject(infodata.type, go); GameObject newModel = m_ModelPool.GetPoolsObject(infodata.type); if (newModel == null) { Debug.LogError("无法取到对象池模型!"); } SetModeInfo(infodata, newModel); }
/// <summary> /// 加载之前保存的所有模型 /// </summary> private void LoadConfigObject(string key, params object[] parms) { ModelInfoData realdata = parms[0] as ModelInfoData; if (realdata.isNew == 0)//旧模型加Collider { Debug.Log("旧模型加Collider"); if (GenerateTreeNeed.Instance.AllGameObjectDic.ContainsKey(realdata.modelid)) { GameObject oldobj = GenerateTreeNeed.Instance.AllGameObjectDic[realdata.modelid]; oldobj.tag = "Device"; BoxCollider bc = oldobj.GetComponent <BoxCollider>(); if (!bc) { bc = oldobj.AddComponent <BoxCollider>(); Vector3 center = new Vector3(float.Parse(realdata.colliderCenterX), float.Parse(realdata.colliderCenterY), float.Parse(realdata.colliderCenterZ)); bc.center = center; Vector3 size = new Vector3(float.Parse(realdata.colliderSizeX), float.Parse(realdata.colliderSizeY), float.Parse(realdata.colliderSizeZ)); bc.size = size; } ModelInfo info = oldobj.GetComponent <ModelInfo>(); if (!info) { info = oldobj.AddComponent <ModelInfo>(); info.SelfData.cameraX = realdata.cameraX; info.SelfData.cameraY = realdata.cameraY; info.SelfData.cameraZ = realdata.cameraZ; info.SelfData.cameraRotateX = realdata.cameraRotateX; info.SelfData.cameraRotateY = realdata.cameraRotateY; info.SelfData.cameraRotateZ = realdata.cameraRotateZ; info.SelfData.isAdd = realdata.isAdd; info.SelfData.isNew = realdata.isNew; } } } else { Debug.Log("加载之前保存的模型"); GameObject go = m_ModelPool.GetPoolsObject(realdata.type); if (go != null) { SetModeInfo(realdata, go); } else { ResourceLoadCallbacak cb = new ResourceLoadCallbacak(realdata, LoadModelCallback); ResourceManager.Instance.LoadResource(realdata.type.ToString(), ResourceType.Device, cb); } } }
public void LoadResource(ModelInfoData infoData, OnLoadResourceDelegate delOpenUI = null, object param = null) { GameObject clientObj = CreateClientChaRoot(); if (clientObj == null) { return; } ClientCha clientCha = clientObj.GetComponent <ClientCha>(); if (clientCha == null) { clientCha = clientObj.AddComponent <ClientCha>(); } CreateNPCMdjInitProperty(clientCha, infoData); }
/// <summary> /// 编辑结束 /// </summary> private void EndEdit(string key, params object[] parms) { string id = parms[0].ToString(); Debug.Log(id + " " + GameTools.Instance.GenerateMD5(m_CurSelectObj.name) + "是否一致"); DrawCollider dc = m_CurSelectObj.GetComponent <DrawCollider>(); if (dc) { dc.enabled = false; } BoxCollider bc = m_CurSelectObj.GetComponent <BoxCollider>(); if (bc) { Transform cam = Camera.main.transform; ModelInfoData data = new ModelInfoData(); data.cmd = (int)U3DSENGTOJSMSG.SENDOBJECTDATA; data.modelid = id; data.colliderCenterX = bc.center.x.ToString(); data.colliderCenterY = bc.center.y.ToString(); data.colliderCenterZ = bc.center.z.ToString(); data.colliderSizeX = bc.size.x.ToString(); data.colliderSizeY = bc.size.y.ToString(); data.colliderSizeZ = bc.size.z.ToString(); data.cameraX = cam.position.x.ToString(); data.cameraY = cam.position.y.ToString(); data.cameraZ = cam.position.z.ToString(); data.cameraRotateX = cam.eulerAngles.x.ToString(); data.cameraRotateY = cam.eulerAngles.y.ToString(); data.cameraRotateZ = cam.eulerAngles.z.ToString(); data.originalColor = ""; data.selectedColor = GameTools.Instance.ColorToHex(Color.yellow); data.alarmColor = GameTools.Instance.ColorToHex(Color.red); JsonData jd = JsonMapper.ToJson(data); string strJSon = jd.ToString(); ReadJavaInterface.Hello(strJSon); } else { Debug.Log(m_CurSelectObj + "没有collider,10011没有返回"); } }
/// <summary> /// 添加新模型,处理 /// 对象池存储的唯一ID,是类型type字段 /// </summary> private void AddANewModel(string key, params object[] arms) { int type = (int)arms[0]; ModelInfoData infodata = new ModelInfoData(); infodata.cmd = 10009; infodata.type = type; GameObject go = m_ModelPool.GetPoolsObject(type); if (go != null) { SetModeInfo(infodata, go); } else { ResourceLoadCallbacak cb = new ResourceLoadCallbacak(infodata, LoadModelCallback); ResourceManager.Instance.LoadResource(infodata.type.ToString(), ResourceType.Device, cb); } }
/// <summary> /// 根据JS从数据库读取的数据动态加载模型 /// </summary> public void LoadConfigObject(string test) { JsonData m_RecvJsonData = JsonMapper.ToObject(test); ModelInfoData infodata = new ModelInfoData(); infodata.modelid = m_RecvJsonData["modelid"].ToString(); infodata.isNew = (int)m_RecvJsonData["isNew"]; infodata.isAdd = (int)m_RecvJsonData["isAdd"]; infodata.cameraX = m_RecvJsonData["cameraX"].ToString(); infodata.cameraY = m_RecvJsonData["cameraY"].ToString(); infodata.cameraZ = m_RecvJsonData["cameraZ"].ToString(); infodata.cameraRotateX = m_RecvJsonData["cameraRotateX"].ToString(); infodata.cameraRotateY = m_RecvJsonData["cameraRotateY"].ToString(); infodata.cameraRotateZ = m_RecvJsonData["cameraRotateZ"].ToString(); infodata.colliderCenterX = m_RecvJsonData["colliderCenterX"].ToString(); infodata.colliderCenterY = m_RecvJsonData["colliderCenterY"].ToString(); infodata.colliderCenterZ = m_RecvJsonData["colliderCenterZ"].ToString(); infodata.colliderSizeX = m_RecvJsonData["colliderSizeX"].ToString(); infodata.colliderSizeY = m_RecvJsonData["colliderSizeY"].ToString(); infodata.colliderSizeZ = m_RecvJsonData["colliderSizeZ"].ToString(); if (infodata.isNew == 0) { MessageManager.Instance.SendMessageEventNow("LoadConfigObject", infodata); return; } infodata.type = (int)m_RecvJsonData["type"]; infodata.mapX = m_RecvJsonData["mapX"].ToString(); infodata.mapY = m_RecvJsonData["mapY"].ToString(); infodata.mapZ = m_RecvJsonData["mapZ"].ToString(); infodata.rotateX = m_RecvJsonData["rotateX"].ToString(); infodata.rotateY = m_RecvJsonData["rotateY"].ToString(); infodata.rotateZ = m_RecvJsonData["rotateZ"].ToString(); infodata.scaleX = m_RecvJsonData["scaleX"].ToString(); infodata.scaleY = m_RecvJsonData["scaleY"].ToString(); infodata.scaleZ = m_RecvJsonData["scaleZ"].ToString(); infodata.originalColor = m_RecvJsonData["originalColor"].ToString(); infodata.selectedColor = m_RecvJsonData["selectedColor"].ToString(); infodata.alarmColor = m_RecvJsonData["alarmColor"].ToString(); MessageManager.Instance.SendMessageEventNow("LoadConfigObject", infodata); }
void OnGUI() { if (GUILayout.Button("showUI")) { UIManager.Instance().ShowUI(UIInfo.CubeItem); } if (GUILayout.Button("closeUI")) { UIManager.Instance().CloseUI(UIInfo.CubeItem); } if (GUILayout.Button("show Item UI")) { UIManager.Instance().LoadItem(UIInfo.CubeItem, OnLoadUIItemDelegate); } if (GUILayout.Button("show Model")) { ModelInfoData infoData = new ModelInfoData("Model", "Ethan"); SceneResourceManager.Instance().LoadResource(infoData); } }
/// <summary> /// 处理传感器上面的布告牌 /// 设置信息 /// </summary> private void DealBoard(ModelInfoData infodata, GameObject go) { Transform zuobiao = go.transform.Find("zuobiao"); zuobiao.SetParent(go.transform.parent); zuobiao.transform.localPosition = go.transform.localPosition + new Vector3(0, 2, 0); //zuobiao.transform.localPosition = new Vector3(zuobiao.transform.localPosition.x, 10, zuobiao.transform.localPosition.z); zuobiao.transform.localScale = Vector3.one * 5; zuobiao.eulerAngles = new Vector3(-90, 0, 0); Text canvastext = zuobiao.Find("Canvas").GetComponentInChildren <Text>(); //canvastext.text = infodata.devName + "\n"; for (int i = 0; i < infodata.nodeList.Count; i++) { canvastext.text += infodata.nodeList[i].nodeName + ":" + infodata.nodeList[i].value + infodata.nodeList[i].unit + "\n"; if (i == infodata.nodeList.Count) { canvastext.text = canvastext.text.Replace("\n", ""); } } zuobiao.SetParent(go.transform); zuobiao.gameObject.SetActive(true); }
/// <summary> /// 更新数据 /// </summary> public void UpdateModelInfo(ModelInfoData value) { SelfData = new ModelInfoData(); Camera cam = Camera.main; SelfData.type = value.type; SelfData.modelid = GameTools.Instance.GenerateMD5(transform.name); SelfData.mapX = transform.position.x.ToString(); SelfData.mapY = transform.position.y.ToString(); SelfData.mapZ = transform.position.z.ToString(); SelfData.rotateX = transform.eulerAngles.x.ToString(); SelfData.rotateY = transform.eulerAngles.y.ToString(); SelfData.rotateZ = transform.eulerAngles.z.ToString(); SelfData.scaleX = transform.localScale.x.ToString(); SelfData.scaleY = transform.localScale.y.ToString(); SelfData.scaleZ = transform.localScale.z.ToString(); SelfData.cameraX = cam.transform.position.x.ToString(); SelfData.cameraY = cam.transform.position.y.ToString(); SelfData.cameraZ = cam.transform.position.z.ToString(); SelfData.cameraRotateX = cam.transform.eulerAngles.x.ToString(); SelfData.cameraRotateY = cam.transform.eulerAngles.y.ToString(); SelfData.cameraRotateZ = cam.transform.eulerAngles.z.ToString(); SelfData.originalColor = GameTools.Instance.ColorToHex(transform.GetComponentInChildren <MeshRenderer>().material.color); Highlighter h = transform.GetComponent <Highlighter>(); if (h) { SelfData.selectedColor = GameTools.Instance.ColorToHex(h.constantColor); } else { SelfData.selectedColor = GameTools.Instance.ColorToHex(Color.yellow); } SelfData.alarmColor = GameTools.Instance.ColorToHex(Color.red); }
public void CreateNPCMdjInitProperty(ClientCha npcCha, ModelInfoData infoData, OnLoadResourceDelegate delOpenUI = null, object param = null) { StartCoroutine(BundleManager.Instance.LoadSceneResource(infoData, DoLoadResource, delOpenUI, npcCha)); }
/// <summary> /// 设置添加模型的信息 /// </summary> private void SetModeInfo(ModelInfoData infodata, GameObject go) { if (!m_SensorParent.ContainsKey(infodata.type)) { GameObject tran = new GameObject(infodata.type.ToString()); tran.transform.SetParent(m_NewModelParent); go.transform.SetParent(tran.transform); m_SensorParent.Add(infodata.type, tran.transform); } else { go.transform.SetParent(m_SensorParent[infodata.type]); } ModelInfo info = go.GetComponent <ModelInfo>(); if (!info) { info = go.AddComponent <ModelInfo>(); } if (info == null) { Debug.LogError("出现错误"); return; } GenerateTreeNeed.SumCount++; go.name = GenerateTreeNeed.SumCount.ToString(); string id = Guid.NewGuid().ToString("N"); Debug.Log("随机成成的:" + id); string md5id = GameTools.Instance.GenerateMD5(go.name); if (!GenerateTreeNeed.Instance.AllGameObjectDic.ContainsKey(md5id)) { GenerateTreeNeed.Instance.AllGameObjectDic.Add(md5id, go); } else { Debug.LogError("数据出错!"); } if (!m_NewModelDic.ContainsKey(md5id)) { m_NewModelDic.Add(md5id, info); } else { Debug.LogError("数据错误!"); } m_CurAddGameObject = go; if (infodata.cmd == 10009) { go.transform.position = Vector3.zero + m_Offset; go.transform.localScale = Vector3.one; info.UpdateModelInfo(infodata); MessageManager.Instance.SendMessageEventNow("RecvLocateGameObject", md5id, true, Vector3.zero, Vector3.one, 0, false); } else { info.SetItemInfo(infodata); } SGizmoBehavior sb = go.GetComponent <SGizmoBehavior>(); if (!sb) { if (infodata.isAdd == 0) { sb = go.AddComponent <SGizmoBehavior>(); } else if (infodata.isAdd == 1) { DealBoard(infodata, go); } } go.SetActive(true); }
/// <summary> /// 清空数据 /// </summary> public void ClearData() { m_SelfData = null; }
public ResourceLoadCallbacak(ModelInfoData data, Action <ModelInfoData, ResourceInfo, GameObject> fun) { m_CallBackFun = fun; m_Target = data; }
void Start() { _environmentColorButton.onClick.AddListener(() => { GameObject colorPanel = ResourceManager.Instance.LoadUIPrefab(transform, "ColorPanel"); colorPanel.transform.localScale = Vector3.one * 2; }); _house.onClick.AddListener(() => { EventCenter.Instance.PostEvent(EventName.CreateModel, "House"); }); _paint.onClick.AddListener(() => { //EventCenter.Instance.PostEvent(EventName.CreateModel, "hang_paint"); ModelInfoData modelInfoData = _paint.GetComponent <ModelInfoData>(); string[] info = new string[4] { modelInfoData.Category, modelInfoData.name, modelInfoData.ImageLocalPos, modelInfoData.ModelLocalPos }; EventCenter.Instance.PostEvent(EventName.CreateTempObj, "TempObj", info); }); _chair.onClick.AddListener(() => { EventCenter.Instance.PostEvent(EventName.CreateModel, "furniture_chair"); }); _cup.onClick.AddListener(() => { EventCenter.Instance.PostEvent(EventName.CreateModel, "furniture_cup"); }); _loadModel.onClick.AddListener(() => { GetModelPath.OpenFileDialog(); }); _loadChandelier.onClick.AddListener(() => { EventCenter.Instance.PostEvent(EventName.CreateModel, "chandelier_light"); }); _loadWallPaper.onClick.AddListener(() => { EventCenter.Instance.PostEvent(EventName.CreateModel, "hang_wallPaper"); }); //record the scene model _record.onClick.AddListener(() => { EventCenter.Instance.PostEvent(EventName.RecordScene); }); //recover the scene model _recover.onClick.AddListener(() => { EventCenter.Instance.PostEvent(EventName.RecoverScene); }); //右旋转按下 UGUIEventListener.Get(_rightRotation.gameObject).onPointDown = (body) => { Transform touchObject = RayEvent.Instance.clickObjectOfLeftButton; if (null != touchObject && touchObject.GetComponent <ModelCategory>()) { touchObject.GetComponent <ModelCategory>().RightRotation(true); } }; //右旋转松开 UGUIEventListener.Get(_rightRotation.gameObject).onPointUp = (body) => { Transform touchObject = RayEvent.Instance.clickObjectOfLeftButton; if (null != touchObject && touchObject.GetComponent <ModelCategory>()) { touchObject.GetComponent <ModelCategory>().RightRotation(false); } }; //左旋转按下 UGUIEventListener.Get(_leftRotation.gameObject).onPointDown = (body) => { Transform touchObject = RayEvent.Instance.clickObjectOfLeftButton; if (null != touchObject && touchObject.GetComponent <ModelCategory>()) { touchObject.GetComponent <ModelCategory>().LeftRotation(true); } }; //左旋转松开 UGUIEventListener.Get(_leftRotation.gameObject).onPointUp = (body) => { Transform touchObject = RayEvent.Instance.clickObjectOfLeftButton; if (null != touchObject && touchObject.GetComponent <ModelCategory>()) { touchObject.GetComponent <ModelCategory>().LeftRotation(false); } }; //删除模型 _deleteModel.onClick.AddListener(() => { Transform TouchObject = RayEvent.Instance.clickObjectOfLeftButton; if (null != TouchObject && TouchObject.GetComponent <ModelCategory>()) { ModelCategory modelCategory = TouchObject.GetComponent <ModelCategory>(); bool canDelete = modelCategory.CanDelete(); if (canDelete) { Transform tools = modelCategory.toolNode; if (tools.childCount > 0) { Transform dragVectorTool = tools.Find("DragVector"); if (null != dragVectorTool) { ControlObjMove.Instance.SetParentNull(); } } if (TouchObject) { EventCenter.Instance.PostEvent(EventName.DeleteModel, TouchObject); } } } }); //首先点击了就可以知道图片和模型名字了跟路径信息了,传到生产的物体里,然后直接判断点击的地方是否满足 }