public void Read() { foreach (var subChunk in Data.Chunks) { switch (subChunk.Name) { case "MOHD": MOHD = new MOHD(subChunk); break; case "MOGN": MOGN = new MOGN(subChunk); break; case "MOGI": MOGI = new MOGI(subChunk); break; case "MODD": MODD = new MODD(subChunk); break; case "MODN": MODN = new MODN(subChunk); break; case "MODS": MODS = new MODS(subChunk); break; } } ReadGroups(); }
public static Matrix GetWmoDoodadTransform(MODD.MODDEntry modd, MODF.MODFEntry modf) { var modfTransform = GetTransform(modf.Position, modf.Rotation); var translation = Matrix.Translation(modd.Position); var quatRotation = Matrix.RotationQuaternion(new Quaternion(-modd.Rotation[0], -modd.Rotation[1], -modd.Rotation[2], modd.Rotation[3])); return Matrix.Scaling(modd.Scale) * quatRotation * translation * modfTransform; }