Example #1
0
        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;
        }
Example #3
0
        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);
                    }
                }
            }
        }