public RacialGenderScalingParameter(RacialScalingParameter rsp, XivSubRace race, XivGender gender) { Race = race; Gender = gender; if (gender == XivGender.Male) { MinSize = rsp.MaleMinSize; MaxSize = rsp.MaleMaxSize; MinTail = rsp.MaleMinTail; MaxTail = rsp.MaleMaxTail; } else if (gender == XivGender.Female) { MinSize = rsp.FemaleMinSize; MaxSize = rsp.FemaleMaxSize; MinTail = rsp.FemaleMinTail; MaxTail = rsp.FemaleMaxTail; BustMinX = rsp.BustMinX; BustMinY = rsp.BustMinY; BustMinZ = rsp.BustMinZ; BustMaxX = rsp.BustMaxX; BustMaxY = rsp.BustMaxY; BustMaxZ = rsp.BustMaxZ; } }
public CharaMakeParameterSet(byte[] data) { ColorPixels.Capacity = MetadataStart / 4; var nextOffset = 0; for (int i = 0; i < MetadataStart; i += 4) { var r = data[i]; var g = data[i + 1]; var b = data[i + 2]; var a = data[i + 3]; ColorPixels.Add(new byte[4] { r, g, b, a }); nextOffset = i + 4; } if (nextOffset != MetadataStart) { throw new Exception("CMP Format Changed - Unable to read all CMP data."); } var rem = data.Length - MetadataStart; var entries = rem / RacialScalingParameter.TotalByteSize; for (int i = 0; i < entries; i++) { var offset = MetadataStart + (i * RacialScalingParameter.TotalByteSize); var arr = new byte[RacialScalingParameter.TotalByteSize]; Array.Copy(data, offset, arr, 0, RacialScalingParameter.TotalByteSize); var rsp = new RacialScalingParameter(arr); RawRacialData.Add(rsp); nextOffset = offset + RacialScalingParameter.TotalByteSize; } if (nextOffset != data.Length) { throw new Exception("CMP Format Changed - Unable to read all CMP data."); } }