public void HttpAisResultDelegate(bool isError, Dictionary <string, ShipData> datas, string errorMsg) { if (isError) { _errorText.text = errorMsg; _alertAnimator.SetTrigger("SetAlertAction"); return; } _errorText.text = ""; lock (_lockObj) { //삭제 List <string> newRemoveKeys = new List <string>(); foreach (string userID_a in _shipObjs.Keys) { foreach (string userID_b in datas.Keys) { if (userID_a.Equals(userID_b)) { //있으면 일루 들어와짐. 삭제 예정해주고, 통신시간 틀리면 데이터 정보만 바꿔주는걸로. newRemoveKeys.Add(userID_a); ShipObjectScript shipSC = _shipObjs[userID_a].GetComponent <ShipObjectScript>(); if (!shipSC.GetShipData().regDate.Equals(datas[userID_b].regDate)) { shipSC.SetChangeMoveCoroutineAction(datas[userID_b]); //이동 정보 수정해주고. } break; } } } foreach (string str in newRemoveKeys) { datas.Remove(str); } //추가 foreach (string userID in datas.Keys) { AddShipObject(userID, datas[userID]); } } if (_loadingView.activeSelf) { _loadingView.SetActive(false); _data5GView.SetActive(true); } }
public void SetShipMap(GameObject obj) { ShipObjectScript sc = obj.GetComponent <ShipObjectScript>(); //Vector2 tempPs = new Vector2(obj.transform.position.x, obj.transform.position.z); //Vector2 newShipPs = GetObjectPosition(tempPs, obj.transform.rotation.y, sc._distance); //Vector2 newPs = MapPosition(newShipPs.x, newShipPs.y); Vector2 newPs = MapPosition(obj.transform.position.x, obj.transform.position.z); GameObject copyPrefab = Instantiate <GameObject>(_shipPrefab); copyPrefab.transform.parent = _map.transform; copyPrefab.GetComponent <RectTransform>().localPosition = new Vector2(newPs.x, newPs.y); //copyPrefab.transform.SetParent(_map.transform, true); _shipMapList.Add(sc._userKey, copyPrefab); }
// Update is called once per frame void Update() { // _errorText.text = "x- " + Camera.main.transform.position.x + ",\n" + "y- " + Camera.main.transform.position.y + ",\n" + "z- " + Camera.main.transform.position.z; if (Input.touchCount == 1 && _userState == SystemState.kNone) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Input.GetTouch(0).phase == TouchPhase.Began) { if (Physics.Raycast(ray, out hit)) { ShipObjectScript sc = hit.transform.gameObject.GetComponent <ShipObjectScript>(); OpenShipInfoViewAction(sc._userKey, sc.GetShipData(), sc._distance); //sc._shipSc._userKey //sc._shipSc._shipData } } } }
private void AddShipObject(string key, ShipData value) { if (!value.messageID.Equals("0")) { return; //**원래라면 여기서 장애물 선별해야함. } ARLocation.Location newLocation = new ARLocation.Location() { Latitude = double.Parse(value.latitude), Longitude = double.Parse(value.longitude), Altitude = 0, AltitudeMode = ARLocation.AltitudeMode.GroundRelative }; //new object GameObject copyPrefab = Instantiate <GameObject>(_shipObjPrefab); ShipObjectScript objSc = copyPrefab.GetComponent <ShipObjectScript>(); objSc._mapVC = _mapVC; ARLocation.PlaceAtLocation.PlaceAtOptions opts = new ARLocation.PlaceAtLocation.PlaceAtOptions() { HideObjectUntilItIsPlaced = true, MaxNumberOfLocationUpdates = 1, //** 업데이트 횟 수 관리 MovementSmoothing = 0, UseMovingAverage = true }; objSc._mainSceneController = this; objSc._userKey = key; objSc.SetShipData(value); objSc._placeAtLocationScript = ARLocation.PlaceAtLocation.AddPlaceAtComponentCustom(objSc._placeAtLocationScript, newLocation, opts); objSc._placeAtLocationScript.ObjectLocationUpdated.AddListener(ObjectUpdatedEvent); //이벤트 등록 (델리게이트) _shipObjs.Add(key, copyPrefab); }