public void Initialize(Unit unit)
        {
            Unit = unit;

            transform.SetParent(Unit.transform, false);
            transform.localPosition = Vector3.zero;
            transform.localRotation = Quaternion.identity;
            transform.localScale    = Vector3.one;

            ReplaceModel(Unit.Model);

            Unit.BoltEntity.AddEventListener(this);
            Unit.AddCallback(nameof(IUnitState.DeathState), OnDeathStateChanged);
            Unit.AddCallback(nameof(IUnitState.SpellCast), OnSpellCastChanged);
            EventHandler.RegisterEvent(Unit, GameEvents.UnitModelChanged, OnModelChanged);

            auraEffectController.HandleAttach(this);
        }
Example #2
0
        public MovementInfo(Unit unit, IUnitState unitState)
        {
            Unit      = unit;
            UnitState = unitState;

            if (!unit.IsOwner)
            {
                unit.AddCallback(nameof(IUnitState.MovementFlags), OnUnitStateFlagsChanged);
            }
        }
Example #3
0
        public void Attach(Unit unit)
        {
            Unit = unit;
            transform.position = Unit.Position;

            ReplaceModel(Unit.Model, UnitModelReplacementMode.ScopeIn);
            OnScaleChanged();

            Unit.BoltEntity.AddEventListener(this);
            Unit.AddCallback(nameof(IUnitState.DeathState), OnDeathStateChanged);
            Unit.AddCallback(nameof(IUnitState.SpellCast), OnSpellCastChanged);
            Unit.AddCallback(nameof(IUnitState.EmoteType), OnEmoteTypeChanged);
            Unit.AddCallback(nameof(IUnitState.EmoteFrame), OnEmoteFrameChanged);
            EventHandler.RegisterEvent(Unit, GameEvents.UnitModelChanged, OnModelChanged);
            EventHandler.RegisterEvent(Unit, GameEvents.UnitScaleChanged, OnScaleChanged);
            EventHandler.RegisterEvent(Unit, GameEvents.UnitVisualsChanged, OnVisualsChanged);

            auraEffectController.HandleAttach(this);
        }
        protected override void OnAttach()
        {
            base.OnAttach();

            Array.Resize(ref changedSlots, Unit.VisibleAuraMaxCount);
            Array.Resize(ref auraSlots, Unit.VisibleAuraMaxCount);

            for (int i = 0; i < auraSlots.Length; i++)
            {
                auraSlots[i] = new Slot(this);
            }

            changedSlots.Fill(true);
            Unit.AddCallback($"{nameof(IUnitState.VisibleAuras)}[]", OnVisibleAurasChanged);
        }
Example #5
0
        private void InitializeCaster(Unit caster)
        {
            this.caster = caster;

            caster.AddCallback(nameof(IUnitState.SpellCast), OnSpellCastChanged);
        }