Пример #1
0
        public void Read(BinaryReader r)
        {
            uint size = r.ReadUInt32();

            if (size != 128 && size != 132)
            {
                throw new InvalidDataException("Invalid size of EffectPart Models");
            }

            phase1        = r.ReadUInt32();
            phase2        = r.ReadUInt32();
            rotationSpeed = r.ReadSingle();
            rotationAxis  = r.ReadVector3();
            scaleSpeed    = r.ReadVector3();
            texShift      = r.ReadSingle();
            modelName     = r.ReadSizedCString(32);
            ignoreHead    = r.ReadBoolean();
            color         = IColor.ReadNew(r);
            name          = r.ReadSizedCString(32);
            r.BaseStream.Seek(3, SeekOrigin.Current);
            minProgress = r.ReadSingle();
            minSize     = r.ReadSingle();
            r.BaseStream.Seek(4, SeekOrigin.Current);
            renderMode = EnumUtils.intToEnum <EffectPartRenderMode>(r.ReadInt32());
            if (size > 128)
            {
                doTexShiftY = r.ReadSingle() == 0.0f; // don't look... it's legacy code behaviour
            }
        }
Пример #2
0
        public void Read(BinaryReader r)
        {
            uint size = r.ReadUInt32();

            if (size != 128)
            {
                throw new InvalidDataException("Invalid size of EffectPart BeamStar");
            }

            phase1       = r.ReadUInt32();
            phase2       = r.ReadUInt32();
            complexity   = EnumUtils.intToEnum <BeamStarComplexity>(r.ReadInt32());
            width        = r.ReadSingle();
            scaleSpeedXY = r.ReadSingle();
            r.BaseStream.Seek(1, SeekOrigin.Current);
            texName = r.ReadSizedCString(32);
            r.BaseStream.Seek(3 + 2 * 4, SeekOrigin.Current);
            startTexVEnd   = r.ReadSingle();
            rotationSpeed  = r.ReadSingle();
            texShiftVStart = r.ReadSingle();
            r.BaseStream.Seek(1, SeekOrigin.Current);
            color = IColor.ReadNew(r);
            name  = r.ReadSizedCString(32);
            r.BaseStream.Seek(3, SeekOrigin.Current);
            endTexVEnd = r.ReadSingle();
            mode       = EnumUtils.intToEnum <BeamStarMode>(r.ReadInt32());
            renderMode = EnumUtils.intToEnum <EffectPartRenderMode>(r.ReadInt32());
        }
Пример #3
0
        public void Read(BinaryReader r)
        {
            uint size = r.ReadUInt32();

            if (size != 156)
            {
                throw new InvalidDataException("Invalid size of EffectPart ParticleBeam");
            }

            phase1      = r.ReadUInt32();
            phase2      = r.ReadUInt32();
            maxCount    = r.ReadUInt32();
            isEqualFade = r.ReadBoolean();
            r.BaseStream.Seek(3 + 4, SeekOrigin.Current);
            parWidth  = r.ReadSingle();
            parHeight = r.ReadSingle();
            r.BaseStream.Seek(4, SeekOrigin.Current);
            texName      = r.ReadSizedCString(32);
            tileId       = r.ReadUInt32();
            tileCount    = r.ReadUInt32();
            tileDuration = r.ReadUInt32();
            tileW        = r.ReadUInt32();
            tileH        = r.ReadUInt32();
            color        = IColor.ReadNew(r);
            name         = r.ReadSizedCString(32);
            mode         = EnumUtils.intToEnum <ParticleBeamMode>(r.ReadInt32());
            fadeMode     = r.ReadUInt32();
            beamWidth    = r.ReadSingle();
            beamHeight   = r.ReadSingle();
            zSpeed       = r.ReadSingle();
            fadeXSpeed   = r.ReadSingle();
            fadeYSpeed   = r.ReadSingle();
            fadeSpeed    = r.ReadSingle();
            renderMode   = EnumUtils.intToEnum <EffectPartRenderMode>(r.ReadInt32());
        }
Пример #4
0
        public void Read(BinaryReader r)
        {
            uint size = r.ReadUInt32();

            if (size != 132)
            {
                throw new InvalidDataException("Invalid size of EffectPart PlaneBeam");
            }

            phase1 = r.ReadUInt32();
            phase2 = r.ReadUInt32();
            r.BaseStream.Seek(4, SeekOrigin.Current);
            planeCount    = r.ReadUInt32();
            mode          = r.ReadUInt32();
            width         = r.ReadSingle();
            height        = r.ReadSingle();
            minScale      = r.ReadSingle();
            rotationMod   = r.ReadSingle();
            texName       = r.ReadSizedCString(32);
            tileId        = r.ReadUInt32();
            tileW         = r.ReadUInt32();
            tileH         = r.ReadUInt32();
            color         = IColor.ReadNew(r);
            name          = r.ReadSizedCString(32);
            renderMode    = EnumUtils.intToEnum <EffectPartRenderMode>(r.ReadInt32());
            speed         = r.ReadSingle();
            mode2         = r.ReadUInt32();
            widthScaleMod = r.ReadSingle();
        }
Пример #5
0
        public void Read(BinaryReader r)
        {
            uint size = r.ReadUInt32();

            if (size != 288 && size != 292)
            {
                throw new InvalidDataException("Invalid size of EffectPart ParticleEmitter");
            }

            phase1 = r.ReadUInt32();
            phase2 = r.ReadUInt32();
            r.BaseStream.Seek(4 * 4 + 32 + 1, SeekOrigin.Current); // many unused variables
            name = r.ReadSizedCString(32);
            r.BaseStream.Seek(3, SeekOrigin.Current);
            minProgress  = r.ReadUInt32();
            life.value   = r.ReadSingle();
            spawnRate    = r.ReadUInt32();
            minVel       = r.ReadSingle();
            verticalDir  = r.ReadSingle();
            scale.value  = r.ReadSingle();
            scale.mod    = r.ReadSingle();
            colorR.value = r.ReadSingle();
            colorR.mod   = r.ReadSingle();
            colorG.value = r.ReadSingle();
            colorG.mod   = r.ReadSingle();
            colorB.value = r.ReadSingle();
            colorB.mod   = r.ReadSingle();
            colorA.value = r.ReadSingle();
            colorA.mod   = r.ReadSingle();
            colorA.width = r.ReadSingle();
            colorR.width = r.ReadSingle();
            colorG.width = r.ReadSingle();
            colorB.width = r.ReadSingle();
            life.width   = r.ReadSingle();
            acc.width    = r.ReadSingle();
            scale.width  = r.ReadSingle();
            gravity      = r.ReadVector3();
            gravityMod   = r.ReadVector3();
            type         = EnumUtils.intToEnum <ParticleType>(r.ReadInt32());
            texName      = r.ReadSizedCString(32);
            tileW        = r.ReadUInt32();
            tileH        = r.ReadUInt32();
            tileId       = r.ReadUInt32();
            tileCount    = r.ReadUInt32();
            tileDuration = r.ReadUInt32();
            acc.value    = r.ReadSingle();
            r.BaseStream.Seek(4, SeekOrigin.Current);
            horRadius = r.ReadSingle();
            verRadius = r.ReadSingle();
            spawnMode = EnumUtils.intToEnum <ParticleSpawnMode>(r.ReadInt32());
            r.BaseStream.Seek(4, SeekOrigin.Current);
            hasDirection = r.ReadBoolean();
            r.BaseStream.Seek(3, SeekOrigin.Current);
            if (size > 288)
            {
                renderMode = EnumUtils.intToEnum <EffectPartRenderMode>(r.ReadInt32());
            }
        }
Пример #6
0
        public void Read(BinaryReader r)
        {
            uint size = r.ReadUInt32();

            if (size != 168 && size != 172 && size != 176)
            {
                throw new InvalidDataException("Invalid size of EffectPart RandomPlanes");
            }

            phase1       = r.ReadUInt32();
            phase2       = r.ReadUInt32();
            ignorePhases = r.ReadBoolean();
            r.BaseStream.Seek(3, SeekOrigin.Current);
            spawnRate         = r.ReadUInt32();
            minProgress       = r.ReadSingle();
            amplPosX          = r.ReadSingle();
            amplPosY          = r.ReadSingle();
            rotationSpeedMult = r.ReadSingle();
            texShift          = r.ReadSingle();
            scaleSpeedMult    = r.ReadSingle();
            targetSize        = r.ReadSingle();
            width             = r.ReadSingle();
            height            = r.ReadSingle();
            planeLife         = r.ReadUInt32();
            extraPhase        = r.ReadUInt32();
            minScaleSpeed     = r.ReadSingle();
            maxScaleSpeed     = r.ReadSingle();
            texName           = r.ReadSizedCString(32);
            tileId            = r.ReadUInt32();
            tileCount         = r.ReadUInt32();
            tileDuration      = r.ReadUInt32();
            tileW             = r.ReadUInt32();
            tileH             = r.ReadUInt32();
            color             = IColor.ReadNew(r);
            name          = r.ReadSizedCString(32);
            amplColor     = r.ReadUInt32();
            circlesAround = r.ReadBoolean();
            r.BaseStream.Seek(3, SeekOrigin.Current);
            yOffset = r.ReadSingle();
            if (size > 168)
            {
                renderMode = EnumUtils.intToEnum <EffectPartRenderMode>(r.ReadInt32());
            }
            if (size > 172)
            {
                minPosX = r.ReadSingle();
            }
        }
Пример #7
0
        public void Read(BinaryReader r)
        {
            uint size = r.ReadUInt32();

            if (size != 136 && size != 140)
            {
                throw new InvalidDataException("Invalid size of EffectPart MovingPlanes");
            }

            phase1         = r.ReadUInt32();
            phase2         = r.ReadUInt32();
            width          = r.ReadSingle();
            height         = r.ReadSingle();
            sizeModSpeed   = r.ReadSingle();
            targetSize     = r.ReadSingle();
            rotation       = r.ReadSingle();
            texShift       = r.ReadSingle();
            texName        = r.ReadSizedCString(32);
            tileId         = r.ReadUInt32();
            tileW          = r.ReadUInt32();
            tileH          = r.ReadUInt32();
            manualProgress = r.ReadBoolean();
            color          = IColor.ReadNew(r);
            name           = r.ReadSizedCString(32);
            r.BaseStream.Seek(3, SeekOrigin.Current);
            minProgress        = r.ReadSingle();
            disableSecondPlane = r.ReadBoolean();
            circlesAround      = r.ReadBoolean();
            r.BaseStream.Seek(2, SeekOrigin.Current);
            yOffset      = r.ReadSingle();
            renderMode   = EnumUtils.intToEnum <EffectPartRenderMode>(r.ReadInt32());
            useDirection = r.ReadBoolean();
            r.BaseStream.Seek(3, SeekOrigin.Current);
            if (size > 136)
            {
                r.BaseStream.Seek(4, SeekOrigin.Current); // unused value
            }
        }
Пример #8
0
 public static EffectMaterial CreateFor(EffectPartRenderMode mode, ITagContainer diContainer) => mode switch
 {
Пример #9
0
 public static SparkMaterial CreateFor(EffectPartRenderMode mode, bool isTwoSided, ITagContainer diContainer) => mode switch
 {
Пример #10
0
 public static BaseModelInstancedMaterial CreateFor(EffectPartRenderMode mode, ITagContainer diContainer) => mode switch
 {