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 } }
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()); }
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()); }
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(); }
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()); } }
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(); } }
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 } }
public static EffectMaterial CreateFor(EffectPartRenderMode mode, ITagContainer diContainer) => mode switch {
public static SparkMaterial CreateFor(EffectPartRenderMode mode, bool isTwoSided, ITagContainer diContainer) => mode switch {
public static BaseModelInstancedMaterial CreateFor(EffectPartRenderMode mode, ITagContainer diContainer) => mode switch {