public static void Postfix(VisRangeIndicator __instance) { Mod.Log.Trace?.Write("VRI:I - invoked!"); Transform projectorTransform = __instance.gameObject.transform.Find("VisRangeProjector"); if (projectorTransform != null) { VisRangeState.VisRangeProjector = projectorTransform.gameObject; } else { Mod.Log.Warn?.Write("FAILED TO FIND VisRangeProjector transform!"); } }
// Records actor selected events to allow id of the last player unit a player selected public static void OnActorSelectedMessage(MessageCenterMessage message) { ActorSelectedMessage actorSelectedMessage = message as ActorSelectedMessage; AbstractActor actor = Combat.FindActorByGUID(actorSelectedMessage.affectedObjectGuid); if (actor.team.IsLocalPlayer) { Mod.Log.Info?.Write($"Updating last activated actor to: ({CombatantUtils.Label(actor)})"); ModState.LastPlayerActorActivated = actor; EWState actorState = new EWState(actor); if (actorState.HasNightVision() && ModState.GetMapConfig().isDark) { Mod.Log.Info?.Write($"Enabling night vision mode."); VfxHelper.EnableNightVisionEffect(actor); } else { if (ModState.IsNightVisionMode) { VfxHelper.DisableNightVisionEffect(); } } // Refresh the unit's vision VfxHelper.RedrawFogOfWar(actor); actor.VisibilityCache.RebuildCache(actor.Combat.GetAllImporantCombatants()); CombatHUDHelper.ForceNameRefresh(actor.Combat); // Hack - turn on Vision indicator? VisRangeIndicator visRangeIndicator = VisRangeIndicator.Instance; visRangeIndicator.SetState(VisRangeIndicator.VisRangeIndicatorState.On); // Refresh any CombatHUDMarkDisplays foreach (CombatHUDMarkDisplay chudMD in ModState.MarkContainerRefs.Keys) { chudMD.RefreshInfo(); } } }
public static void Postfix(VisRangeIndicator __instance) { Mod.Log.Trace?.Write("VRI:OD - invoked!"); VisRangeState.VisRangeProjector = null; }
public static void Postfix(VisRangeIndicator __instance, bool visible) { Mod.Log.Trace?.Write("VRI:SDV - invoked!"); VisRangeState.VisRangeProjector.SetActive(visible); }