protected virtual void Update() { if (Thruster != null) { if (Application.isPlaying == true) { FlickerOffset += FlickerSpeed * Time.deltaTime; } if (points == null) { points = new float[128]; for (var i = points.Length - 1; i >= 0; i--) { points[i] = Random.value; } } var noise = Mathf.Repeat(FlickerOffset, points.Length); var index = (int)noise; var frac = noise % 1.0f; var pointA = points[index]; var pointB = points[(index + 1) % points.Length]; var pointC = points[(index + 2) % points.Length]; var pointD = points[(index + 3) % points.Length]; var f = 1.0f - SgtHelper.CubicInterpolate(pointA, pointB, pointC, pointD, frac) * Flicker; throttle = SgtHelper.Dampen(throttle, Thruster.Throttle, Dampening, Time.deltaTime); transform.localScale = BaseScale + ThrottleScale * throttle * f; } }
protected virtual void LateUpdate() { var floatingCamera = default(SgtFloatingCamera); var targetAlpha = 0.0f; if (SgtFloatingCamera.TryGetCamera(1, ref floatingCamera) == true) { if (CurrentTarget != null) { var localPosition = floatingCamera.CalculatePosition(ref CurrentTarget.CachedPoint.Position); var screenPoint = floatingCamera.CachedCamera.WorldToScreenPoint(localPosition); if (screenPoint.z >= 0.0f) { var anchoredPosition = default(Vector2); if (RectTransformUtility.ScreenPointToLocalPointInRectangle(Parent, screenPoint, null, out anchoredPosition) == true) { Rect.anchoredPosition = anchoredPosition; } targetAlpha = 1.0f; if (HideIfTooClose == true) { if (SgtPosition.SqrDistance(ref SgtFloatingOrigin.CurrentPoint.Position, ref CurrentTarget.CachedPoint.Position) <= CurrentTarget.WarpDistance * CurrentTarget.WarpDistance) { targetAlpha = 0.0f; } } } else { Alpha = 0.0f; } Title.text = CurrentTarget.WarpName; } } Alpha = SgtHelper.Dampen(Alpha, targetAlpha, 10.0f, Time.deltaTime); Group.alpha = Alpha; Group.blocksRaycasts = targetAlpha > 0.0f; }
protected virtual void Update() { if (Target == null) { ClearDebris(); return; } var followerPosition = Target.position; var followerDensity = GetDensity(followerPosition); if (followerDensity > 0.0f) { var debrisCount = Debris != null ? Debris.Count : 0; if (debrisCount < SpawnLimit) { spawnCooldown -= Time.deltaTime; while (spawnCooldown <= 0.0f) { spawnCooldown += Random.Range(SpawnRateMin, SpawnRateMax); SpawnDebris(false); debrisCount += 1; if (debrisCount >= SpawnLimit) { break; } } } } if (Debris != null) { var distanceRange = HideDistance - ShowDistance; for (var i = Debris.Count - 1; i >= 0; i--) { var debris = Debris[i]; if (debris != null) { var targetScale = default(float); var distance = Vector3.Distance(followerPosition, debris.transform.position); // Fade its size in debris.Show = SgtHelper.Dampen(debris.Show, 1.0f, ShowSpeed, Time.deltaTime, 0.1f); if (distance < ShowDistance) { targetScale = 1.0f; } else if (distance > HideDistance) { targetScale = 0.0f; } else { targetScale = 1.0f - SgtHelper.Divide(distance - ShowDistance, distanceRange); } debris.transform.localScale = debris.Scale * debris.Show * Mathf.Max(minScale, targetScale); if (targetScale <= 0.0f) { Despawn(debris, i); } } else { Debris.RemoveAt(i); } } } }