public bool OnCommodityPlaced(Commodity _commodity, bool force = false) { if (owner != null && (/*(!force && !owner.available) || */ !owner.CheckCanLoad(_commodity))) { return(false); } UITarget otherTarget = _commodity.target; if (otherTarget != null) { otherTarget.UnloadCommodity(); } if (loadedCommodity != null) { Commodity lastLoadedCommodity = loadedCommodity; UnloadCommodity(); if (!force && otherTarget != null) { otherTarget.OnCommodityPlaced(lastLoadedCommodity); } } if (_commodity.lastTarget == null || stockID != _commodity.target.stockID) { _commodity.lastTarget = otherTarget; } _commodity.target = this; loadedCommodity = _commodity; onCommodityPlaced?.Invoke(loadedCommodity); CommoditiesService.instance.RegisterCommodityPlacement(); return(true); }
private void FixedUpdate() { pointerEventData = new PointerEventData(eventSystem); pointerEventData.position = Input.mousePosition; List <RaycastResult> results = new List <RaycastResult>(); UIService.instance.graphicRaycatser.Raycast(pointerEventData, results); foreach (RaycastResult result in results) { if (result.gameObject.CompareTag("Target")) { UITarget target = result.gameObject.GetComponent <UITarget>(); if (highlightedTarget != target) { if (highlightedTarget != null) { highlightedTarget.SetHighlight(false); } highlightedTarget = target; } target.SetHighlight(true); return; } } if (highlightedTarget != null) { highlightedTarget.SetHighlight(false); highlightedTarget = null; } }
public void GetDistributedTo(UITarget _target) { startDistance = Vector2.Distance(_target.rect.position, commodity.rect.position); startSize = commodity.rect.sizeDelta; commodity.target = _target; commodity.StartLerp(); selfDestructPending = true; }
/// <summary> /// 发送终止信号并等待所有任务完成后向窗体发送关闭信号,返回值为窗体的Closing事件参数的Cancel应该发送的值,以确保在所有UI线程完成后再关闭本窗体。 /// </summary> /// <returns>窗体的Closing事件参数的Cancel应该发送的值</returns> public bool SingalAllStopAndWaitForClose() { Task.Factory.StartNew(() => { this.SingalAllStopAndWait(); canClose = true; this.DoSafeUIWork(() => UITarget.Close()); }); return(!canClose); }
void UpdateGuideAlpha(UITarget target) { Vector3 targetDir = target.targetTransform.position - mainCamera.transform.position; float angle = Mathf.Abs(Vector3.SignedAngle(targetDir, mainCamera.transform.forward, Vector3.up)); Color colour = target.guideTransform.GetComponent <Renderer>().material.color; colour.a = Mathf.Clamp((1f / 180f) * angle, 0.02f, 1.0f); target.guideTransform.GetComponent <Renderer>().material.color = colour; }
void UpdateGuideTransform(UITarget target) { //scale float scale = Vector3.Distance(target.targetTransform.position, mainCamera.transform.position); target.guideTransform.localScale = new Vector3(ScaleMultiplier * scale, ScaleMultiplier / 5f, ScaleMultiplier * scale); //position Vector3 pos = mainCamera.transform.position; pos.y = target.targetTransform.position.y; target.guideTransform.position = pos; //Rotation target.guideTransform.rotation = Quaternion.identity; }
void Start() { Canvasx = Parent.GetComponent <RectTransform>().rect.width; Canvasy = Parent.GetComponent <RectTransform>().rect.height; GameObject[] Enemies = GameObject.FindGameObjectsWithTag("Enemy"); foreach (GameObject enemy in Enemies) { EnemiesList.Add(enemy); } foreach (GameObject enemy in EnemiesList) { OnCameraPosition = cam.WorldToViewportPoint(enemy.transform.position); Vector3 OnCanvasPosition = new Vector3(OnCameraPosition.x, OnCameraPosition.y, 0); if (OnCameraPosition.x >= 0 && OnCameraPosition.x <= 1 && OnCameraPosition.y >= 0 && OnCameraPosition.y <= 1) { counter++; currentMarker = (Instantiate(uIMarker, Parent.transform, false)); currentMarker.GetComponent <UiMarkersController>().Identifier = counter; UITarget currentUITarget = new UITarget(); currentUITarget.isActive = true; currentUITarget.standardSprite = normal; currentUITarget.uimarker = currentMarker; currentUITarget.empty = emptySprite; currentUITarget.red = redSprite; currentUITarget.Target = enemy; currentUITarget.cam = cam; currentUITarget.classCanvasx = Canvasx; currentUITarget.classCanvasy = Canvasy; currentUITarget.classIdentifier = counter; uIMarkers.Add(currentUITarget); currentRectTransform = currentMarker.gameObject.GetComponent <RectTransform>(); currentRectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, OnCanvasPosition.x * Canvasx - 25, 50); currentRectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, OnCanvasPosition.y * Canvasy - 25, 50); currentRectTransform.localEulerAngles = new Vector3(0, 0, 0); } } DataHandling.forIdentifing = uIMarkers; }
public GameObject RegisterFollowUI(Renderer targetRend, GameObject followerUIObj, Transform targetTrans, float vOffset = 0f) { var go = Instantiate(followerUIObj) as GameObject; var t = go.GetComponent <RectTransform>(); var obj = new UITarget() { followerObj = go, followerTrans = t, followTargetRend = targetRend, followTargetTrans = targetTrans, vertOffset = vOffset, }; t.SetParent(canvasRectT); t.localScale = Vector3.one; uiTargets.Add(obj); return(go); }
public static UITarget GetGazeEnemy() { float bAngle = float.MaxValue; UITarget ret = null; foreach (UITarget target in targets) { if (target.type == UITarget.TargetType.Enemy) { Vector3 vTo = target.transform.position - Camera.main.transform.position; float angle = Quaternion.Angle(Quaternion.LookRotation(Camera.main.transform.forward), Quaternion.LookRotation(vTo)); if (angle < bAngle) { bAngle = angle; ret = target; } } } return(ret); }
public void OnEndDrag(PointerEventData pointerEventData) { if (!draggable) { return; } List <RaycastResult> results = new List <RaycastResult>(); UIService.instance.graphicRaycatser.Raycast(pointerEventData, results); foreach (RaycastResult result in results) { if (result.gameObject.CompareTag("Target")) { UITarget targetScript = result.gameObject.GetComponent <UITarget>(); Stock stockCast = targetScript.owner as Stock; Stock currentStockCast = target.owner as Stock; if ((!ScenarioService.instance.inProductionPhase && //No direct movement from one base stock to another base stock ((targetScript.stockID != target.stockID && stockCast != null && currentStockCast != null) || //No direct movement from left to right or from right to left Mathf.Sign(target.stockID) != Mathf.Sign(targetScript.stockID) || //No direct movement from trade stock to a base stock from which the commodity doesn't orginate (currentStockCast == null && stockCast != null && targetScript.stockID != lastTarget.stockID) || //No direct movement from base stock to trade stock if another base stock //already has at least one commodity of its own inside (currentStockCast != null && stockCast == null && target.stockID >= 0 && target.stockID != ExchangeService.instance.otherStockIndex && ExchangeService.instance.otherStockIndex != -1)))) { break; } if (targetScript.OnCommodityPlaced(this)) { break; } } } StartLerp(); }
void Start() { currentRectTransform = GetComponent <RectTransform>(); currentMarker = gameObject.GetComponent <Image>(); markerImage = currentMarker.sprite; currentUISprite = markerImage; foreach (UITarget enemy in DataHandling.forIdentifing) { if (enemy.classIdentifier == Identifier) { markerImage = enemy.standardSprite; currentMarker.sprite = markerImage; currentUISprite = markerImage; forRelist = enemy; Enemy = enemy.Target; cam = enemy.cam; Canvasx = enemy.classCanvasx; Canvasy = enemy.classCanvasy; emptyUISprite = enemy.empty; redUISprite = enemy.red; } } }