public void ExecuteValueChanged() { if (field != null && element != null) //start method was executed { StartCoroutine(FlexPanel.DelayAction(0f, () => field.onValueChanged.Invoke(field.text))); //sic! without a coroutine Viewport`s RectTransform.rect is not updated in time. } }
public void Exit() { deathCanvas.SetParent(null); var canvases = GetComponentsInChildren <Canvas>(); foreach (var item in canvases) { item.gameObject.SetActive(false); } deathCanvas.gameObject.SetActive(true); var b = deathCanvas.gameObject.AddComponent <DummyBehaviour>(); float startTime = Time.time; OnApplicationQuit(); b.StartCoroutine(FlexPanel.DelayActionWhile(() => { UnityEngine.SceneManagement.SceneManager.LoadScene(sceneMenu); }, () => { return(Time.time < startTime + 2f || !Input.anyKey); })); }
void ISelectHandler.OnSelect(BaseEventData eventData) { StartCoroutine(FlexPanel.DelayAction(0f, () => { field.caretPosition = field.selectionFocusPosition = field.selectionAnchorPosition = lastCaretPosition; })); selected = true; field.caretColor = caretColor; OnSelectField.Invoke(); }
protected void Start() { tank = GetComponent <Tank>(); logger = userLogger; tank.StartScripting(logger); StaticStart(); StartCoroutine(FlexPanel.DelayAction(0.1f, FillInScriptTemplate)); }
private void ApplyFire() { heat -= stats.coolingRate * Time.fixedDeltaTime; if (heat < 0f) { heat = 0f; } if (heat > 1f || actions.fireShots <= 0f || Time.time < nextTimeToFire) { return; } actions.fireShots--; nextTimeToFire = Time.time + stats.firePeriod; heat += stats.heatPerShot; if (heat >= 1f) { heat += stats.overheatFine; } if (muzzleFlash.isPlaying) { muzzleFlash.Stop(); } muzzleFlash.Play(); RaycastHit rhi; Ray ray = new Ray(muzzleFlash.transform.position, muzzleFlash.transform.forward); if (Physics.Raycast(ray, out rhi, float.PositiveInfinity, Physics.DefaultRaycastLayers, QueryTriggerInteraction.Ignore)) { var impact = Instantiate(impactPrefab); impact.transform.SetPositionAndRotation(rhi.point, muzzleFlash.transform.rotation); var ips = impact.GetComponent <ParticleSystem>(); impacts.Add(ips); StartCoroutine(FlexPanel.DelayActionWhile(() => { impacts.Remove(ips); Destroy(impact); }, () => { return(ips.isPaused || ips.isPlaying); })); var hc = rhi.collider.gameObject.GetComponent <HealthCare>(); if (hc != null) { var d = new Damage() { ammount = stats.damage.ammount, direction = muzzleFlash.transform.forward }; hc.ReceiveDamage(d); } } }
private void SceneManager_activeSceneChanged(Scene arg0, Scene arg1) { StartCoroutine(FlexPanel.DelayAction(0.05f, () => { var spawners = (from s in arg1.GetRootGameObjects() where s.GetComponent <TankSpawner>() != null select s.GetComponent <TankSpawner>()).ToArray(); if (spawners.Length > 0) { spawners[0].SpawnFromBattle(battle); } Destroy(gameObject); })); SceneManager.activeSceneChanged -= SceneManager_activeSceneChanged; }
public GameObject Spawn(int side, string code = "") { var tank = Instantiate(tankPrefab); tank.transform.SetParent(null); var point = spawnpoints.Find((p) => { return(p.sideId == side); }); if (point == null) { point = spawnpoints[0]; } var rnd = Random.insideUnitCircle * point.radius; tank.transform.SetPositionAndRotation(point.center.position + new Vector3(rnd.x, 0f, rnd.y), point.center.rotation); var rnds = tank.GetComponentsInChildren <MeshRenderer>(); foreach (var item in rnds) { List <Material> lst = new List <Material>(); for (int i = 0; i < item.materials.Length; i++) { lst.Add(point.sideMaterial); } item.materials = lst.ToArray(); } var tankScript = tank.GetComponent <Tank>(); tankScript.sideIdentifier = side; if (string.IsNullOrEmpty(code)) { tankScript.code = point.defaultCode; } else { tankScript.code = code; } if (!timeFlows) { tankScript.StartCoroutine(FlexPanel.DelayAction(0.2f, tankScript.Pause)); } centres[point].group.Add(tank); return(tank); }
// Use this for initialization void Start() { element = gameObject.GetComponent <LayoutElement>(); if (element == null) { element = gameObject.AddComponent <LayoutElement>(); } field = GetComponent <InputField>(); int prevLength = field.text.Length; int maxWidth = 0, c = 0, linesCount = 1; int maxAdvance = 0; foreach (var inf in field.textComponent.font.characterInfo) { if (inf.advance > maxAdvance) { maxAdvance = inf.advance; } } RectTransform viewportRT = field.transform.parent.parent.GetComponent <RectTransform>(); field.onValueChanged.AddListener((strParam) => { var s = field.text; //just in case var editDistance = System.Math.Abs(s.Length - prevLength); if (s.Length == 0) { maxWidth = c = 0; linesCount = 1; } else if (editDistance > 1 || editDistance == 0) { if (editDistance > 3) { field.text = ClearCR(field.text); s = field.text; } //full check maxWidth = c = 0; linesCount = 1; for (int i = 0; i < s.Length; i++, c++) { if (s[i] == '\n') { if (c > maxWidth) { maxWidth = c; } c = 0; linesCount++; } } } else if (field.caretPosition > 0) { //last symbol check var chr = s[field.caretPosition - 1]; if (chr == '\n') { linesCount++; } c = 1; for (int i = field.caretPosition - 1; i >= 0; i--, c++) { if (s[i] == '\n') { break; } } if (maxWidth < c) { maxWidth = c; } } prevLength = field.text.Length; element.preferredWidth = System.Math.Max(maxAdvance * maxWidth + 20 + 2 * padding, viewportRT.rect.width); element.preferredHeight = Mathf.Max(1.2f * field.textComponent.fontSize * (linesCount + 2) + 2 * padding, viewportRT.rect.height); }); StartCoroutine(FlexPanel.DelayAction(0f, ExecuteValueChanged)); }
void IFlexPanel.SetIsHidden(UIElement child, bool value) { FlexPanel.SetIsHidden(child, value); }
bool IFlexPanel.GetIsHidden(UIElement child) { return(FlexPanel.GetIsHidden(child)); }