private void DrawFlareOverlay(bool useStrong) { ticksSinceFlare = 0; var overlay = useStrong ? Resources.Graphics.FlareOverlayStrong : Resources.Graphics.FlareOverlayNormal; RemoteTechUtility.DrawFlareOverlay(overlay, DrawPos, BlinkerData); }
public override void Draw() { base.Draw(); if (compPower == null || !compPower.PowerOn) { return; } // limit the number of possible alpha levels to avoid leaking materials var props = BlinkerData; var alpha = Mathf.Round(Mathf.Max(0f, Mathf.Sin(((Find.TickManager.TicksGame + thingIDNumber * 1000) * Mathf.PI) / Mathf.Max(.1f, props.blinkerIntervalNormal))) * FlareAlphaLevels) / FlareAlphaLevels; if (alpha > 0) { RemoteTechUtility.DrawFlareOverlay(Resources.Graphics.FlareOverlayGreen, DrawPos, props, alpha); } }
public override void PostDraw() { base.PostDraw(); if (blinker != null && Enabled) { var currentTick = GenTicks.TicksGame; RefreshCurrentTargetPosition(false); if (nextBlinkTick <= currentTick) { nextBlinkTick = currentTick + Mathf.Round(Rand.Range(BlinkMaxInterval / 2f, BlinkMaxInterval)).SecondsToTicks(); blinkAnim.StartInterpolation(0f, BlinkAnimDuration / 2f, CurveType.CubicInOut); blinkAnim.SetFinishedCallback((interpolator, value, duration, curve) => interpolator.StartInterpolation(1f, duration, curve).SetFinishedCallback(null) ); } if (blinkSquintAnim.finished) { // squint if target is a dirty humanlike var isHumanlike = currentTarget is Pawn p && p.RaceProps != null && p.RaceProps.Humanlike; var targetSquint = isHumanlike ? .5f : 1f; if (!blinkSquintAnim.value.ApproximatelyEquals(targetSquint)) { blinkSquintAnim.StartInterpolation(targetSquint, SquintAnimDuration, CurveType.CubicInOut); } } if (currentTarget != null && targetExpirationTick <= GenTicks.TicksGame) { SetLookTarget(null, false); } blinkAnim.UpdateIfUnpaused(); blinkSquintAnim.UpdateIfUnpaused(); offsetXAnim.UpdateIfUnpaused(); offsetZAnim.UpdateIfUnpaused(); RemoteTechUtility.DrawFlareOverlay(Resources.Graphics.FlareOverlayNormal, parent.DrawPos + new Vector3(offsetXAnim.value, 0, offsetZAnim.value) + Altitudes.AltIncVect, blinker, 1f, blinkAnim.value * blinkSquintAnim.value); } }