Example #1
0
    public static MegaFlowParticleData Parse(BinaryReader br, float version)
    {
        MegaFlowParticleData p = new MegaFlowParticleData();

        //uint code = br.ReadUInt32();
        p.pos         = ReadVector3(br);
        p.vel         = ReadVector3(br);
        p.frc         = ReadVector3(br);
        p.vor         = ReadVector3(br);
        p.norm        = ReadVector3(br);
        p.numneigh    = br.ReadInt32();
        p.uvvector    = ReadVector3(br);
        p.info        = br.ReadUInt16();
        p.elapsedtime = br.ReadSingle();
        p.isotime     = br.ReadSingle();
        p.viscosity   = br.ReadSingle();
        p.density     = br.ReadSingle();
        p.pressure    = br.ReadSingle();
        p.mass        = br.ReadSingle();
        p.temperature = br.ReadSingle();

        if (version >= 12.0f)
        {
            p.id = (uint)br.ReadUInt64();
        }
        else
        {
            p.id = br.ReadUInt32();
        }

        return(p);
    }
Example #2
0
    static public MegaFlowParticleFrame Parse(BinaryReader br)
    {
        uint code = br.ReadUInt32();

        if (code == 0xFABADA)
        {
            MegaFlowParticleFrame frame = new MegaFlowParticleFrame();

            frame.fluidname = br.ReadBytes(250).ToString();

            frame.version      = br.ReadUInt16();
            frame.scale        = br.ReadSingle();
            frame.ftype        = br.ReadInt32();
            frame.etime        = br.ReadSingle();
            frame.fnum         = br.ReadInt32();
            frame.fps          = br.ReadInt32();
            frame.numparticles = br.ReadInt32();
            frame.radius       = br.ReadSingle();
            frame.pressure     = ReadVector3(br);
            frame.speed        = ReadVector3(br);
            frame.temperature  = ReadVector3(br);

            if (frame.version >= 7.0f)
            {
                frame.emitpos = ReadVector3(br);
                frame.emitrot = ReadVector3(br);
                frame.emitscl = ReadVector3(br);
            }

            frame.particles  = new MegaFlowParticleData[frame.numparticles];
            frame.particles1 = new ParticleSystem.Particle[frame.numparticles];

            for (int i = 0; i < frame.numparticles; i++)
            {
                ParticleSystem.Particle p = MegaFlowParticleData.LoadParticleData(br, frame.version);
                frame.particles1[i] = p;
                //MegaFlowParticleData p = MegaFlowParticleData.Parse(br, frame.version);
                //frame.particles[i] = p;
            }

            return(frame);
        }

        return(null);
    }
	public static MegaFlowParticleData Parse(BinaryReader br, float version)
	{
		MegaFlowParticleData p = new MegaFlowParticleData();

		//uint code = br.ReadUInt32();
		p.pos = ReadVector3(br);
		p.vel = ReadVector3(br);
		p.frc = ReadVector3(br);
		p.vor = ReadVector3(br);
		p.norm = ReadVector3(br);
		p.numneigh = br.ReadInt32();
		p.uvvector = ReadVector3(br);
		p.info = br.ReadUInt16();
		p.elapsedtime = br.ReadSingle();
		p.isotime = br.ReadSingle();
		p.viscosity = br.ReadSingle();
		p.density = br.ReadSingle();
		p.pressure = br.ReadSingle();
		p.mass = br.ReadSingle();
		p.temperature = br.ReadSingle();

		if ( version >= 12.0f )
			p.id = (uint)br.ReadUInt64();
		else
			p.id = br.ReadUInt32();

		return p;
	}