Beispiel #1
0
 public void HandleRendererAttach(UnitRenderer attachedRenderer)
 {
     if (attachedRenderer.Unit == circledUnit)
     {
         Attach(attachedRenderer);
     }
 }
Beispiel #2
0
 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);
     }
 }
Beispiel #5
0
 private void Detach()
 {
     circleProjector.gameObject.SetActive(false);
     circleProjector.transform.SetParent(null, false);
     circledRenderer = null;
     circledUnit     = null;
 }
Beispiel #6
0
 public void HandleRendererDetach(UnitRenderer targetRenderer)
 {
     if (TargetRenderer == targetRenderer)
     {
         lastKnownTargetPosition = TargetRenderer.TagContainer.FindTag(DefaultTargetTag);
         TargetRenderer          = null;
     }
 }
Beispiel #7
0
        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);
        }
Beispiel #9
0
                public void Dispose()
                {
                    GameObjectPool.Return(circleProjector, false);

                    circledRenderer = null;
                    circledUnit     = null;
                    circleProjector = null;
                }
Beispiel #10
0
        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);
        }
Beispiel #11
0
                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);
                }
Beispiel #12
0
            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);
            }
Beispiel #17
0
            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);
            }
Beispiel #18
0
            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);
     }
 }
Beispiel #21
0
 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);
        }
Beispiel #23
0
                public void HandleFinish(bool instant)
                {
                    if (instant)
                    {
                        projectile?.Stop(playId);
                    }
                    else
                    {
                        projectile?.Fade(playId);
                    }

                    TargetRenderer = null;
                    Settings       = null;
                }
Beispiel #24
0
        public void UpdateUnit(UnitRenderer unitRenderer)
        {
            if (UnitRenderer != null)
            {
                Deinitialize();
            }

            if (unitRenderer != null)
            {
                Initialize(unitRenderer);
            }

            combinedCanvasGroup.alpha = UnitRenderer != null ? 1.0f : 0.0f;
        }
Beispiel #25
0
 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]);
         }
     }
 }
Beispiel #26
0
        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;
        }
Beispiel #28
0
                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);
                }
Beispiel #29
0
        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);
            }
        }