public void HandleRendererAttach(UnitRenderer attachedRenderer) { if (attachedRenderer.Unit == circledUnit) { Attach(attachedRenderer); } }
public void HandleRendererDetach(UnitRenderer detachedRenderer) { if (circledRenderer == detachedRenderer) { Detach(); } }
private bool CanHaveNameplate(UnitRenderer unitRenderer) { bool withinRange = rendering.Player.ExactDistanceSqrTo(unitRenderer.Unit) < settings.MaxDistanceSqr; bool isTransparent = unitRenderer.Unit.VisualEffects.HasTargetFlag(UnitVisualEffectFlags.AnyTransparency); return(withinRange && !isTransparent); }
public void HandleRendererDetach(UnitRenderer unitRenderer) { foreach (var projectile in activeProjectiles) { projectile.HandleRendererDetach(unitRenderer); } }
private void Detach() { circleProjector.gameObject.SetActive(false); circleProjector.transform.SetParent(null, false); circledRenderer = null; circledUnit = null; }
public void HandleRendererDetach(UnitRenderer targetRenderer) { if (TargetRenderer == targetRenderer) { lastKnownTargetPosition = TargetRenderer.TagContainer.FindTag(DefaultTargetTag); TargetRenderer = null; } }
public void SpawnMissText(UnitRenderer targetRenderer, SpellMissType missType) { FloatingText damageText = GameObjectPool.Take(floatingTextPrototype, targetRenderer.transform.position, targetRenderer.transform.rotation); targetRenderer.TagContainer.ApplyPositioning(damageText); damageText.SetMissText(missType); activeTexts.Add(damageText); }
public void SpawnHealingText(UnitRenderer targetRenderer, int healingAmount, bool isCrit) { FloatingText healingText = GameObjectPool.Take(floatingTextPrototype, targetRenderer.transform.position, targetRenderer.transform.rotation); targetRenderer.TagContainer.ApplyPositioning(healingText); healingText.SetHealing(healingAmount, isCrit); activeTexts.Add(healingText); }
public void Dispose() { GameObjectPool.Return(circleProjector, false); circledRenderer = null; circledUnit = null; circleProjector = null; }
public void SpawnDamageText(UnitRenderer targetRenderer, int damageAmount, HitType hitType) { FloatingText damageText = GameObjectPool.Take(floatingTextPrototype, targetRenderer.transform.position, targetRenderer.transform.rotation); targetRenderer.TagContainer.ApplyPositioning(damageText); damageText.SetDamage(damageAmount, hitType); activeTexts.Add(damageText); }
public SpellVisualProjectile(UnitRenderer target, EffectSpellSettings settings, int serverLaunchFrame, int delay) { Delay = delay; ServerLaunchFrame = serverLaunchFrame; TargetRenderer = target; Settings = settings; ExpectedDelayFrames = (int)(Delay / BoltNetwork.FrameDeltaTime / 1000.0f); }
public void HandleUnitRendererDetach(UnitRenderer detachedRenderer) { unplatedRenderers.Remove(detachedRenderer); if (activeNameplateByRenderers.TryGetValue(detachedRenderer, out Nameplate nameplate)) { DespawnNameplate(nameplate); } }
private void Deinitialize() { EventHandler.UnregisterEvent(UnitRenderer.Unit, GameEvents.UnitFactionChanged, onFactionChangedAction); castFrame.UpdateCaster(null); healthFrame.Unit = null; UnitRenderer = null; }
public void SpawnVisual(UnitRenderer casterRenderer, UnitRenderer targetRenderer, EffectSpellSettings settings, int serverLaunchFrame, int delay) { var visualEntry = new SpellVisualProjectile(targetRenderer, settings, serverLaunchFrame, delay); if (visualEntry.HandleLaunch(casterRenderer)) { activeProjectiles.Add(visualEntry); } }
public void DoUpdate(UnitRenderer unitRenderer, float deltaTime) { if (unitRenderer != null) { UpdateAnimations(unitRenderer, deltaTime); } UpdateTransparencyTransition(deltaTime); }
private void SpawnNameplate(UnitRenderer targetRenderer) { Nameplate newNameplate = GameObjectPool.Take(nameplatePrototype); newNameplate.UpdateUnit(targetRenderer); activeNameplates.Add(newNameplate); activeNameplateByRenderers.Add(targetRenderer, newNameplate); }
private void SpawnNameplate(UnitRenderer targetRenderer) { Nameplate newNameplate = GameObjectPool.Take(nameplatePrototype, targetRenderer.transform.position, targetRenderer.transform.rotation); targetRenderer.TagContainer.ApplyPositioning(newNameplate); newNameplate.UpdateUnit(targetRenderer); activeNameplates.Add(newNameplate); activeNameplateByRenderers.Add(targetRenderer, newNameplate); }
public void HandleDetach() { isDetaching = true; unitRenderer.Unit.FindBehaviour <AuraControllerClient>().RemoveHandler(this); unitRenderer = null; Assert.IsTrue(aurasByAuraId.Count == 0); Assert.IsTrue(effectByAuraId.Count == 0); Assert.IsTrue(aurasPreventingAnimation.Count == 0); isDetaching = false; }
private void UpdateAnimations(UnitRenderer unitRenderer, float deltaTime) { if (!unitRenderer.Unit.IsAlive) { animator.SetBool("IsDead", true); return; } bool isFlying = unitRenderer.Unit.HasMovementFlag(MovementFlags.Flying); bool isCharging = unitRenderer.Unit.HasMovementFlag(MovementFlags.Charging); if (!isFlying || isCharging) { Animator.SetBool("Grounded", !isFlying); float currentStrafe = Animator.GetFloat("Strafe"); float strafeTarget = unitRenderer.Unit.HasMovementFlag(MovementFlags.StrafeLeft) ? 0 : unitRenderer.Unit.HasMovementFlag(MovementFlags.StrafeRight) ? 1 : 0.5f; float strafeDelta = 2 * Mathf.Sign(strafeTarget - currentStrafe) * deltaTime * strafeSpeed; float resultStrafe = Mathf.Clamp(currentStrafe + strafeDelta, 0.0f, 1.0f); if (Mathf.Abs(strafeTarget - currentStrafe) > Mathf.Abs(strafeDelta)) { Animator.SetFloat("Strafe", resultStrafe); } if (unitRenderer.Unit.HasMovementFlag(MovementFlags.Forward)) { Animator.SetFloat("Forward", Mathf.MoveTowards(Animator.GetFloat("Forward"), 1.0f, 10 * deltaTime)); } else if (unitRenderer.Unit.HasMovementFlag(MovementFlags.Backward)) { Animator.SetFloat("Forward", Mathf.MoveTowards(Animator.GetFloat("Forward"), -1.0f, 10 * deltaTime)); } else { Animator.SetFloat("Forward", Mathf.MoveTowards(Animator.GetFloat("Forward"), 0.0f, 10 * deltaTime)); } if (unitRenderer.Unit.HasMovementFlag(MovementFlags.Forward | MovementFlags.Backward | MovementFlags.StrafeRight | MovementFlags.StrafeLeft)) { Animator.SetFloat("Speed", 1); } else { Animator.SetFloat("Speed", Mathf.Clamp(Animator.GetFloat("Speed") - 10 * deltaTime, 0.0f, 1.0f)); } } else { Animator.SetBool("Grounded", false); } }
public void HandleUnitRendererAttach(UnitRenderer attachedRenderer) { if (CanHaveNameplate(attachedRenderer)) { SpawnNameplate(attachedRenderer); } else { unplatedRenderers.Add(attachedRenderer); } }
public void HandleUnitRendererAttach(UnitRenderer attachedRenderer) { if (rendering.Player.DistanceSqrTo(attachedRenderer.Unit) < settings.MaxDistanceSqr) { SpawnNameplate(attachedRenderer); } else { unplatedRenderers.Add(attachedRenderer); } }
private void Initialize(UnitRenderer unitRenderer) { UnitRenderer = unitRenderer; unitName.text = unitRenderer.Unit.Name; castFrame.UpdateCaster(unitRenderer.Unit); healthFrame.Unit = unitRenderer.Unit; healthFrame.AlphaTransitionSpeed = nameplateSettings.HealthAlphaTrasitionSpeed; OnFactionChanged(); EventHandler.RegisterEvent(UnitRenderer.Unit, GameEvents.UnitFactionChanged, onFactionChangedAction); }
public void HandleFinish(bool instant) { if (instant) { projectile?.Stop(playId); } else { projectile?.Fade(playId); } TargetRenderer = null; Settings = null; }
public void UpdateUnit(UnitRenderer unitRenderer) { if (UnitRenderer != null) { Deinitialize(); } if (unitRenderer != null) { Initialize(unitRenderer); } combinedCanvasGroup.alpha = UnitRenderer != null ? 1.0f : 0.0f; }
private void OnUnitModelAttached(UnitModel unitModel, UnitRenderer unitRenderer, bool isAttached) { for (int i = 0; i < unitModel.HitBoxes.Count; i++) { if (isAttached) { unitRenderersByHitBoxes.Add(unitModel.HitBoxes[i], unitRenderer); } else { unitRenderersByHitBoxes.Remove(unitModel.HitBoxes[i]); } } }
private void Initialize(UnitRenderer unitRenderer) { UnitRenderer = unitRenderer; transform.SetParent(interfaceReference.FindRoot(InterfaceCanvasType.Nameplate)); transform.position = UnitRenderer.TagContainer.FindNameplateTag(); unitName.text = unitRenderer.Unit.Name; castFrame.UpdateCaster(unitRenderer.Unit); healthFrame.Unit = unitRenderer.Unit; healthFrame.AlphaTransitionSpeed = nameplateSettings.HealthAlphaTrasitionSpeed; OnFactionChanged(); EventHandler.RegisterEvent(UnitRenderer.Unit, GameEvents.UnitFactionChanged, onFactionChangedAction); }
public void UpdateUnit(UnitRenderer unitRenderer) { canvas.worldCamera = cameraReference.WarcraftCamera.Camera; if (UnitRenderer != null) { Deinitialize(); } if (unitRenderer != null) { Initialize(unitRenderer); } canvas.enabled = UnitRenderer != null; }
public bool HandleLaunch(UnitRenderer caster) { Vector3 forward = TargetRenderer.transform.position - caster.transform.position; projectile = Settings.EffectSettings.PlayEffect(Vector3.zero, Quaternion.LookRotation(forward), out long newPlayId); if (projectile != null) { casterLaunchPosition = caster.TagContainer.FindDefaultLaunchTag(); caster.TagContainer.ApplyPositioning(projectile, Settings); playId = newPlayId; return(true); } return(false); }
public void Initialize(UnitRenderer unitRenderer, UnitModelSettings modelSettings) { transform.SetParent(unitRenderer.transform, false); transform.localPosition = Vector3.zero; transform.localRotation = Quaternion.identity; transform.localScale = Vector3.one; Renderer = unitRenderer; Settings = modelSettings; if (Renderer.Unit.IsDead) { animator.SetBool("IsDead", true); animator.Play("Death", 0, 1.0f); animator.Play("Death", 1, 1.0f); } }
public void HandleVisualEffects(UnitRenderer unitRenderer, bool instantly, bool forced = false) { bool isUnitTransperent = unitRenderer.Unit.VisualEffects.HasAnyFlag(UnitVisualEffectFlags.AnyTransparency); if (isUnitTransperent && (!unitHasTransparency || forced)) { float targetAlpha = rendering.UnitRendererSettings.StealthTransparencyAlpha; float currentAlpha = instantly ? targetAlpha : CurrentAlpha; ToggleTransparentMode(true, currentAlpha, targetAlpha); } else if (!isUnitTransperent && (unitHasTransparency || forced)) { float targetAlpha = 1.0f; float currentAlpha = instantly ? targetAlpha : CurrentAlpha; ToggleTransparentMode(false, currentAlpha, targetAlpha); } }