/// <summary> /// 默认放一个位置 /// </summary> /// <returns></returns> public static RayClickPos GetFirstPos(MapUtil.SetType setType) { RayClickPos ret = new RayClickPos(); ret.pos = Vector3.zero; ret.wallType = Enum_Wall.Wall; Vector3 pos = new Vector3(Screen.width / 2, Screen.height / 2, 0f); if (setType == SetType.Floor) { pos.y = Screen.height / 4; } Ray ray = Camera.main.ScreenPointToRay(pos); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, 100, JerryUtil.MakeLayerMask(JerryUtil.MakeLayerMask(false), GetWallLayerNames(setType)))) { if (hitInfo.collider != null && hitInfo.collider.gameObject != null) { ret.pos = hitInfo.point; ret.wallType = WallLayer2WallEnum(hitInfo.collider.gameObject.layer); } } else { Debug.LogError("first error"); } return(ret); }
/// <summary> /// 创建房子 /// </summary> /// <param name="houseNodeIdx">节点索引</param> /// <param name="floor">层数,第一层是0</param> private void CreateHouse(int houseNodeIdx, int floor) { curHouseNodeIdx = houseNodeIdx; curFloor = floor; //GridMgr.Inst.RefreshPos(); MeshDraw.Inst.RefreshPos(); MapUtil.ResetMapStartPosY(); //回到上一次的房子 if (houses[curHouseNodeIdx] != null && houses[curHouseNodeIdx].floor == curFloor) { //Debug.LogWarning(curFloor); return; } MapUtil.ResetMapFlag(); //新房子 houses[curHouseNodeIdx] = JerryUtil.CloneGo <House>(new JerryUtil.CloneGoData() { parant = houseNode[curHouseNodeIdx], prefab = housePrefab.gameObject, active = true, clean = true, }); houseNode[curHouseNodeIdx].position = new Vector3(0, GetHouseYOffset, 0); houses[curHouseNodeIdx].Init(curFloor); }
public void OnDrag(UnityEngine.EventSystems.PointerEventData eventData) { if (m_Canvas != null) { this.transform.localPosition = JerryUtil.PosScreen2Canvas(m_Canvas, JerryUtil.GetClickPos(), this.transform); } }
private void UpdateCtr() { if (m_Selected && Input.GetKeyDown(KeyCode.N)) { Flag.Inst.Set2Pos(JerryUtil.GetClickPos() - m_Offset); } }
void Awake() { grid = this.transform.FindChild("Grid"); prefab = this.transform.FindChild("Prefab"); prefab.gameObject.SetActive(false); grids = new Grid[Width, Height]; for (int j = 0; j < Height; j++) { for (int i = 0; i < Width; i++) { grids[i, j] = JerryUtil.CloneGo <Grid>(new JerryUtil.CloneGoData() { parant = grid, prefab = prefab.gameObject, clean = false, active = true, name = string.Format("{0}_{1}", j, i), }); grids[i, j].Init(new Grid.GridData() { x = i, y = j, state = GetState(i, j), }); } } }
private void TryWork() { rectTran = this.transform as RectTransform; switch (config.dir) { case GridLayoutGroup.Axis.Horizontal: { (rectTran.parent as RectTransform).pivot = new Vector2(0, 0.5f); rectTran.anchorMin = new Vector2(0, 0.5f); rectTran.anchorMax = new Vector2(0, 0.5f); } break; case GridLayoutGroup.Axis.Vertical: { (rectTran.parent as RectTransform).pivot = new Vector2(0.5f, 1.0f); rectTran.anchorMin = new Vector2(0.5f, 1.0f); rectTran.anchorMax = new Vector2(0.5f, 1.0f); } break; } rectTran.pivot = new Vector2(0, 1); JerryUtil.DestroyAllChildren(this.transform, true); ResetPos(); ResetDelta(); }
private void CalOffset() { Vector3 pos = MapUtil.GetMap(m_InitData.m_CurWall).Adjust2Wall(this.transform.position); //Debug.LogWarning("calOffset " + pos + " wall=" + m_InitData.m_CurWall + " " + MapUtil.Vector3String(this.transform.position)); m_Offset = JerryUtil.GetClickPos() - Camera.main.WorldToScreenPoint(pos); //第一步,先记录一下位置,不给走 m_LastDragingPos = JerryUtil.GetClickPos() - m_Offset; }
private void OnCameraDown(bool usefull) { this.StopCoroutine("IE_AdjustCamera"); m_DragUsefull = usefull; if (!usefull) { return; } m_LastPos = JerryUtil.GetClickPos(); }
private void DoAdjustPos() { if (MapUtil.m_SelectFurn == null) { return; } Vector3 wordPos = MapUtil.m_SelectFurn.transform.position; Vector3 screenPos = Camera.main.WorldToScreenPoint(wordPos); screenPos.z = 0; this.transform.localPosition = JerryUtil.PosScreen2Canvas(m_Canvas, screenPos, this.transform); }
private void JudgeDrag() { m_Offset = JerryUtil.GetClickPos() - m_LastPos; if (Mathf.Abs(m_Offset.x) < 3f) { return; } m_LastPos = JerryUtil.GetClickPos(); m_LastOffset = m_Offset; m_LastOffsetTime = Time.realtimeSinceStartup; DoDrag(-m_Offset.x); }
public static Furniture LoadFurnitureByType(FurnitureType type, Transform parent) { GameObject obj = Resources.Load <GameObject>("Prefabs/Furnitures/" + type.ToString()); Furniture t = JerryUtil.CloneGo <Furniture>(new JerryUtil.CloneGoData() { active = true, clean = false, parant = parent, prefab = obj, }); return(t); }
private void DoClean() { if (m_Center) { iTween.Stop(m_ContentRect.gameObject); this.StopCoroutine("DoCenter"); } m_ScrollRect.onValueChanged.RemoveListener(OnScrollChange); JerryUtil.DestroyAllChildren(m_ContentRect); m_Child.Clear(); m_ScrollRect.enabled = false; }
private bool JudgePosOutScreen() { if (JerryUtil.GetClickPos().x < GameApp.Inst.m_OutScreenJudgeFactor) { CameraCtr.Inst.DoDrag(-GameApp.Inst.m_OutScreenDragFactor); return(true); } else if (Screen.width - JerryUtil.GetClickPos().x < GameApp.Inst.m_OutScreenJudgeFactor) { CameraCtr.Inst.DoDrag(GameApp.Inst.m_OutScreenDragFactor); return(true); } return(false); }
private void UpdatePC() { if (Input.GetMouseButtonDown(0)) { m_TouchStarted = true; m_TouchStartPos = JerryUtil.GetClickPos(); } else if (Input.GetMouseButtonUp(0)) { if (m_TouchStarted) { Judge(); m_TouchStarted = false; } } }
/// <summary> /// 静态化可以其他地方复用 /// </summary> /// <returns></returns> public static RayClickInfo DoRayClick() { clickInfo.Init(); ray = Camera.main.ScreenPointToRay(JerryUtil.GetClickPos()); if (Physics.Raycast(ray, out hitInfo, 100)) { if (hitInfo.collider != null) { clickInfo.pos = hitInfo.point; clickInfo.col = hitInfo.collider; clickInfo.time = Time.realtimeSinceStartup; clickInfo.screenPos = JerryUtil.GetClickPos(); } } return(clickInfo); }
public void DoModify() { if (Application.isPlaying) { return; } TryWork(); if (config.prefab == null) { return; } for (int i = 0; i < editorCreateCnt; i++) { GameObject go = JerryUtil.CloneGo(new JerryUtil.CloneGoData() { name = i.ToString(), parant = this.transform, prefab = config.prefab.gameObject, active = true, }); switch (config.dir) { case GridLayoutGroup.Axis.Horizontal: { (go.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (go.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); } break; case GridLayoutGroup.Axis.Vertical: { (go.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (go.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); } break; } (go.transform as RectTransform).pivot = new Vector2(0, 1); (go.transform as RectTransform).sizeDelta = config.cellSize; go.transform.localPosition = Idx2LocalPos(i); } }
void Awake() { m_Canvas = this.transform.parent.GetComponent <Canvas>(); UGUIEventListener.Get(this.gameObject).onDown += (go) => { m_LastDownPos = JerryUtil.GetClickPos(); }; UGUIEventListener.Get(this.gameObject).onUp += (go) => { Vector3 pos = JerryUtil.GetClickPos(); if ((pos - m_LastDownPos).sqrMagnitude > 0.01f) { return; } DoClick(); }; }
private void TryWork() { if (!awaked || !inited) { return; } rectTran = this.transform as RectTransform; switch (config.dir) { case GridLayoutGroup.Axis.Horizontal: { (rectTran.parent as RectTransform).pivot = new Vector2(0, 0.5f); rectTran.anchorMin = new Vector2(0, 0.5f); rectTran.anchorMax = new Vector2(0, 0.5f); fiexdDirViewCountF = config.dirViewLen / (config.cellSize.x + config.spacing.x); } break; case GridLayoutGroup.Axis.Vertical: { (rectTran.parent as RectTransform).pivot = new Vector2(0.5f, 1.0f); rectTran.anchorMin = new Vector2(0.5f, 1.0f); rectTran.anchorMax = new Vector2(0.5f, 1.0f); fiexdDirViewCountF = config.dirViewLen / (config.cellSize.y + config.spacing.y); } break; } rectTran.pivot = new Vector2(0, 1); fiexdDirViewCount = Mathf.CeilToInt(fiexdDirViewCountF); config.progress = Mathf.Clamp01(config.progress); itemList.Clear(); JerryUtil.DestroyAllChildren(this.transform, false); curFirstIdx = -1; ResetPos(); ResetDelta(); ready = true; }
private void AddOneCtr(object[] args) { if (!m_Inited) { return; } if (args == null || args.Length != 1) { return; } CtrConfig ctr = (CtrConfig)args[0]; CtrBtnItem ctrItem = JerryUtil.CloneGo <CtrBtnItem>(new JerryUtil.CloneGoData() { parant = m_Content, prefab = m_BtnPrefab.gameObject, active = true, }); ctrItem.Init(ctr); }
private void Judge() { Vector3 start = m_TouchStartPos; Vector3 end = JerryUtil.GetClickPos(); float dis = Vector2.Distance(start, end); if (dis < m_MinSwipeDistancePixels) { return; } float angle = Mathf.Rad2Deg * Mathf.Atan2(end.y - start.y, end.x - start.x); angle = (360 + angle) % 360; int iAngle = (int)((angle + m_PartAngle * 0.5f) % 360); //Debug.LogWarning("i:" + iAngle + " " + angle); JudgeDir(iAngle / m_PartAngle); }
private void TryFillData() { if (!_awaked || !isDataDirty) { return; } isDataDirty = false; curData = dataChange.Diff(curData, newData); if (dataChange.headChanged) { JerryUtil.CloneGo(new JerryUtil.CloneGoData() { active = true, clean = true, parant = head, prefab = Resources.Load <GameObject>(curData.head), }); } id.text = curData.id.ToString(); num.text = curData.num.ToString(); }
private int GetDataNum() { return(JerryUtil.String2TArray <int>(dataNum.text)[0]); }
private void TestV() { layoutSpacing.text = "0"; layoutV = layoutVContent.gameObject.AddComponent <SampleLayout>(); RefreshDataNum(0); List <SampleItem.ItemData> datas = new List <SampleItem.ItemData>(); sortData.onClick.AddListener(() => { if (datas.Count <= 0) { return; } if (sortFlag) { datas.Sort((x, y) => - x.id.CompareTo(y.id)); } else { datas.Sort((x, y) => x.id.CompareTo(y.id)); } sortFlag = !sortFlag; layoutV.RefreshDatas(); }); genData.onClick.AddListener(() => { datas = GenDatas(GetDataNum()); if (!layoutV.Inited) { layoutV.DoInit(new LayoutConfig() { progress = layoutProgress.value, bufHalfCnt = 1, cellSize = new Vector2(190, 190), dir = GridLayoutGroup.Axis.Vertical, dirViewLen = 500f, prefab = prefab.transform, spacing = new Vector2(JerryUtil.String2TArray <float>(layoutSpacing.text)[0], JerryUtil.String2TArray <float>(layoutSpacing.text)[0]), dirCellWidth = 3, frameWorkCnt = 3, }, datas); } else { layoutV.RefreshDatas(datas, new ModifyConfig() { progress = layoutProgress.value, spacing = new Vector2(JerryUtil.String2TArray <float>(layoutSpacing.text)[0], JerryUtil.String2TArray <float>(layoutSpacing.text)[0]), }); } }); addData.onClick.AddListener(() => { if (GetDataNum() > 100000) { return; } RefreshDataNum(GetDataNum() == 0 ? 1 : GetDataNum() * 2); }); minusData.onClick.AddListener(() => { RefreshDataNum(GetDataNum() / 2); }); }
public void Set2Pos(Vector3 pos) { this.transform.localPosition = JerryUtil.PosScreen2Canvas(m_Canvas, pos, this.transform); m_Img.enabled = true; Debug.LogWarning("Flag=========================="); }
private IEnumerator IE_DoDrag() { Camera camera = Camera.main; if (camera == null) { yield break; } CalOffset(); while (m_InDraging) { if (Util.Vector3Equal(JerryUtil.GetClickPos() - m_Offset, m_LastDragingPos, 2) && !JudgePosOutScreen()) //移动屏幕的时候,相对位置永远不变,这样物体不会更随 { yield return(new WaitForEndOfFrame()); yield return(new WaitForEndOfFrame());//等两帧,减小频率 continue; } m_LastDragingPos = JerryUtil.GetClickPos() - m_Offset; m_Ray = Camera.main.ScreenPointToRay(m_LastDragingPos); if (Physics.Raycast(m_Ray, out m_HitInfo, 100, JerryUtil.MakeLayerMask(JerryUtil.MakeLayerMask(false), MapUtil.GetWallLayerNames(m_Config.setType)))) { if (m_HitInfo.collider != null && m_HitInfo.collider.gameObject != null) { RayClickPos fp = new RayClickPos(); fp.pos = m_HitInfo.point; fp.wallType = MapUtil.WallLayer2WallEnum(m_HitInfo.collider.gameObject.layer); //Debug.LogWarning(fp.wallType + " xxx " + m_InitData.m_CurWall); if (fp.wallType != m_InitData.m_CurWall || !Util.Vector3Equal(fp.pos, m_LastPos)) { m_LastPos = fp.pos; if (fp.wallType == m_InitData.m_CurWall) { UI_Ctr.Inst.HideCtr(); //Debug.LogWarning("bbbb================ " + MapUtil.Vector3String(fp.pos)); if (Place2Pos(fp.pos, true)) { CalOffset(); //yield break; } } else { if (fp.wallType != Enum_Wall.Floor && m_Config.setType != MapUtil.SetType.Floor) { //Debug.LogWarning("aaaa================"); UI_Ctr.Inst.HideCtr(); SelectChange2Wall(m_InitData.m_CurWall, fp.wallType, fp.pos); //yield return new WaitForEndOfFrame(); CalOffset(); //yield break; } } } } } yield return(new WaitForEndOfFrame()); yield return(new WaitForEndOfFrame());//等两帧,减小频率 } if (m_Selected) { UI_Ctr.Inst.ShowCtr(); //Debug.LogWarning("Click ShowCtr"); } }
private void RefreshData(bool forceUpdate = false) { updateWork = 0; updateDirty = false; curLastIdx = curFirstIdx + (fiexdDirViewCount + config.bufHalfCnt * 2) * config.dirCellWidth - 1; if (curLastIdx >= TotalCount) { curLastIdx = TotalCount - 1; } foreach (T item in itemList) { if (!forceUpdate && item.GetGridIdx() >= curFirstIdx && item.GetGridIdx() <= curLastIdx) { item.SetGridState(true); } else { item.SetGridState(false); } } for (int i = curFirstIdx; i <= curLastIdx; i++) { if (!forceUpdate && itemList.Exists((x) => x.GetGridIdx() == i)) { continue; } //还有新的任务 if (!forceUpdate && config.frameWorkCnt > 0 && updateWork > config.frameWorkCnt) { updateDirty = true; break; } tmpLayoutItem = itemList.Find((x) => x.GetGridState() == false); if (tmpLayoutItem == null) { tmpLayoutItem = JerryUtil.CloneGo <T>(new JerryUtil.CloneGoData() { name = i.ToString(), parant = this.transform, prefab = config.prefab.gameObject, active = true, }); switch (config.dir) { case GridLayoutGroup.Axis.Horizontal: { (tmpLayoutItem.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (tmpLayoutItem.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); } break; case GridLayoutGroup.Axis.Vertical: { (tmpLayoutItem.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (tmpLayoutItem.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); } break; } (tmpLayoutItem.transform as RectTransform).pivot = new Vector2(0, 1); (tmpLayoutItem.transform as RectTransform).sizeDelta = config.cellSize; itemList.Add(tmpLayoutItem); } tmpLayoutItem.SetGridState(true); tmpLayoutItem.SetGridIdx(i, Idx2LocalPos(i), datas[i]); updateWork++; } if (!updateDirty) { for (int i = 0, imax = itemList.Count; i < imax; i++) { if (itemList[i].GetGridState() == false) { itemList[i].SetGridHide(); } } } }
public override void Init() { base.Init(); m_LogContent = this.transform.FindChild("Log/Viewport/Content"); layout = m_LogContent.gameObject.AddComponent <LogLayout>(); m_LogPrefab = this.transform.FindChild("Log/LogPrefab"); m_LogPrefab.gameObject.SetActive(false); m_FilterInput = this.transform.FindChild("BaseCtr/InputField").GetComponent <InputField>(); m_FilterInput.onEndEdit.AddListener((str) => { filterStrs = JerryUtil.String2TArray <string>(str, ';'); RefreshList(); }); m_TypeDropdown = this.transform.FindChild("BaseCtr/TypeDropdown").GetComponent <Dropdown>(); m_TypeDropdown.options.Clear(); m_TypeDropdown.options.AddRange(new List <Dropdown.OptionData>() { new Dropdown.OptionData() { text = Enum_LogType.All.ToString() }, new Dropdown.OptionData() { text = Enum_LogType.Inf.ToString() }, new Dropdown.OptionData() { text = Enum_LogType.War.ToString() }, new Dropdown.OptionData() { text = Enum_LogType.Err.ToString() }, }); m_TypeDropdown.onValueChanged.AddListener((val) => { filterType = (Enum_LogType)val; RefreshList(); }); m_TagDropdown = this.transform.FindChild("BaseCtr/TagDropdown").GetComponent <Dropdown>(); m_TagDropdown.options.Clear(); m_TagDropdown.options.AddRange(new List <Dropdown.OptionData>() { new Dropdown.OptionData() { text = Enum_LogTag.All.ToString() }, new Dropdown.OptionData() { text = Enum_LogTag.Tag0.ToString() }, new Dropdown.OptionData() { text = Enum_LogTag.Tag1.ToString() }, new Dropdown.OptionData() { text = Enum_LogTag.Tag2.ToString() }, }); m_TagDropdown.onValueChanged.AddListener((val) => { filterTag = (Enum_LogTag)val; RefreshList(); }); JerryDebugUGUI.Inst.AddCtr(new CtrConfig() { m_Name = "Clear", m_Color = Color.red, m_Callback = (x) => { CleanAllLog(); }, }); CleanAllLog(); JerryEventMgr.AddEvent(Enum_Event.AddLog2Screen.ToString(), AddLog2Screen); JerryEventMgr.AddEvent(Enum_Event.Change2Bottom.ToString(), EventChange2Bottom); }