Beispiel #1
0
        public static Dynamics Read(Reader reader, Pointer offset)
        {
            Dynamics dynamics = new Dynamics(offset);

            // Read data

            dynamics.field_0 = reader.ReadUInt32();
            dynamics.field_4 = reader.ReadUInt32();
            dynamics.field_8 = reader.ReadUInt32();
            dynamics.field_C = reader.ReadUInt32();

            // Determine type
            int type;

            if ((dynamics.field_C & 4) != 0)
            {
                type = 2;
            }
            else if ((dynamics.field_C & 2) != 0)
            {
                type = 1;
            }
            else
            {
                type = 0;
            }

            dynamics.type = (DynamicsType)type;

            // Process data (common)

            Pointer.Goto(ref reader, offset + 0x54);
            dynamics.off_speedVector = Pointer.Read(reader);

            Pointer.Goto(ref reader, offset + 0x78);
            dynamics.matrixA = Matrix.Read(reader, offset + 0x78);

            Pointer.Goto(ref reader, offset + 0xD0);
            dynamics.matrixB = Matrix.Read(reader, offset + 0xD0);

            // Process data (type specific)

            if (dynamics.type == DynamicsType.Type0_SMALL)
            {
            }
            else if (dynamics.type == DynamicsType.Type1_MEDIUM)
            {
            }
            else if (dynamics.type == DynamicsType.Type2_BIG)
            {
                Pointer.Goto(ref reader, dynamics.off_speedVector);
                dynamics.speedVector = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
            }

            return(dynamics);
        }
Beispiel #2
0
        public static Dynam Read(Reader reader, Pointer offset)
        {
            Dynam dynam = new Dynam(offset);

            //MapLoader.Loader.print("Dynam " + offset);

            dynam.off_dynamics = Pointer.Read(reader);

            if (dynam.off_dynamics != null)
            {
                Pointer.Goto(ref reader, dynam.off_dynamics);
                dynam.dynamics = Dynamics.Read(reader, dynam.off_dynamics);
            }

            return(dynam);
        }