Exemple #1
0
 public static bool Equal(this ImcFile.ImageChangeData lhs, ImcFile.ImageChangeData rhs)
 => lhs.MaterialId == rhs.MaterialId &&
 lhs.DecalId == rhs.DecalId &&
 lhs.AttributeMask == rhs.AttributeMask &&
 lhs.SoundId == rhs.SoundId &&
 lhs.VfxId == rhs.VfxId &&
 lhs.MaterialAnimationId == rhs.MaterialAnimationId;
Exemple #2
0
        public static byte ActualMaterialAnimationId(this ImcFile.ImageChangeData imc)
        {
            var tmp = imc.GetType().GetField("_MaterialAnimationIdMask",
                                             System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

            return(( byte )(tmp?.GetValue(imc) ?? 0));
        }
Exemple #3
0
 private static void WriteBytes(this ImcFile.ImageChangeData variant, BinaryWriter bw)
 {
     bw.Write(variant.MaterialId);
     bw.Write(variant.DecalId);
     bw.Write(( ushort )(variant.AttributeMask | variant.SoundId));
     bw.Write(variant.VfxId);
     bw.Write(variant.ActualMaterialAnimationId());
 }
Exemple #4
0
        public static ulong ToInteger(this ImcFile.ImageChangeData imc)
        {
            ulong ret = imc.MaterialId;

            ret |= ( ulong )imc.DecalId << 8;
            ret |= ( ulong )imc.AttributeMask << 16;
            ret |= ( ulong )imc.SoundId << 16;
            ret |= ( ulong )imc.VfxId << 32;
            ret |= ( ulong )imc.ActualMaterialAnimationId() << 40;
            return(ret);
        }
Exemple #5
0
        public static ImcFile.ImageChangeData FromValues(byte materialId, byte decalId, ushort attributeMask, byte soundId, byte vfxId,
                                                         byte materialAnimationId)
        {
            var ret = new ImcFile.ImageChangeData()
            {
                DecalId    = decalId,
                MaterialId = materialId,
                VfxId      = vfxId,
            };

            ret.GetType().GetField("_AttributeAndSound",
                                   System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) !
            .SetValue(ret, ( ushort )((attributeMask & 0x3FF) | (soundId << 10)));
            ret.GetType().GetField("_AttributeAndSound",
                                   System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) !.SetValue(ret, materialAnimationId);
            return(ret);
        }