Пример #1
0
 public float[] GetRotation()
 {
     return(UpdateFields.GetArray <GameObjectField, float>(GameObjectField.GAMEOBJECT_PARENTROTATION, 4));
 }
Пример #2
0
        public override void LoadValuesFromUpdateFields()
        {
            Bytes0    = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_BYTES_0);
            Bytes1    = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_BYTES_1);
            Bytes2    = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_BYTES_2);
            Size      = UpdateFields.GetValue <ObjectField, float?>(ObjectField.OBJECT_FIELD_SCALE_X);
            MaxHealth = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_MAXHEALTH);
            Level     = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_LEVEL);
            Faction   = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_FACTIONTEMPLATE);
            if (ClientVersion.AddedInVersion(ClientType.Legion))
            {
                ScalingMinLevel = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_SCALING_LEVEL_MIN);
                ScalingMaxLevel = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_SCALING_LEVEL_MAX);
                ScalingDelta    = UpdateFields.GetValue <UnitField, int>(UnitField.UNIT_FIELD_SCALING_LEVEL_DELTA);;
                EquipmentRaw    = UpdateFields.GetArray <UnitField, uint>(UnitField.UNIT_VIRTUAL_ITEM_SLOT_ID, 6);
            }
            else
            {
                EquipmentRaw = UpdateFields.GetArray <UnitField, uint>(UnitField.UNIT_VIRTUAL_ITEM_SLOT_ID, 3);
            }

            UnitFlags  = UpdateFields.GetEnum <UnitField, UnitFlags?>(UnitField.UNIT_FIELD_FLAGS);
            UnitFlags2 = UpdateFields.GetEnum <UnitField, UnitFlags2?>(UnitField.UNIT_FIELD_FLAGS_2);
            if (ClientVersion.AddedInVersion(ClientType.Legion))
            {
                UnitFlags3 = UpdateFields.GetEnum <UnitField, UnitFlags3?>(UnitField.UNIT_FIELD_FLAGS_3);
            }

            MeleeTime  = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_BASEATTACKTIME);
            RangedTime = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_RANGEDATTACKTIME);
            Model      = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_DISPLAYID);
            Mount      = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_MOUNTDISPLAYID);
            if (ClientVersion.AddedInVersion(ClientType.WarlordsOfDraenor))
            {
                DynamicFlagsWod = UpdateFields.GetEnum <ObjectField, UnitDynamicFlagsWOD?>(ObjectField.OBJECT_DYNAMIC_FLAGS);
            }
            else
            {
                DynamicFlags = UpdateFields.GetEnum <UnitField, UnitDynamicFlags?>(UnitField.UNIT_DYNAMIC_FLAGS);
            }

            if (ClientVersion.AddedInVersion(ClientType.Legion))
            {
                // @TODO TEMPORARY HACK
                // For read NpcFlags as ulong
                uint[] tempNpcFlags = UpdateFields.GetArray <UnitField, uint>(UnitField.UNIT_NPC_FLAGS, 2);
                NpcFlags = (NPCFlags)Utilities.MAKE_PAIR64(tempNpcFlags[0], tempNpcFlags[1]);
            }
            else
            {
                NpcFlags = UpdateFields.GetEnum <UnitField, NPCFlags?>(UnitField.UNIT_NPC_FLAGS);
            }

            EmoteState     = UpdateFields.GetEnum <UnitField, EmoteType?>(UnitField.UNIT_NPC_EMOTESTATE);
            Resistances    = UpdateFields.GetArray <UnitField, short>(UnitField.UNIT_FIELD_RESISTANCES, 7);
            ManaMod        = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_BASE_MANA);
            HealthMod      = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_BASE_HEALTH);
            BoundingRadius = UpdateFields.GetValue <UnitField, float?>(UnitField.UNIT_FIELD_BOUNDINGRADIUS);
            CombatReach    = UpdateFields.GetValue <UnitField, float?>(UnitField.UNIT_FIELD_COMBATREACH);
            HoverHeight    = UpdateFields.GetValue <UnitField, float?>(UnitField.UNIT_FIELD_HOVERHEIGHT);

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V5_4_0_17359))
            {
                PowerType       = UpdateFields.GetEnum <UnitField, PowerType?>(UnitField.UNIT_FIELD_DISPLAY_POWER);
                InteractSpellID = UpdateFields.GetValue <UnitField, uint?>(UnitField.UNIT_FIELD_INTERACT_SPELLID);
            }

            ComputeBytes0();
            ComputeEquipment();
        }