public void Read(LocatorType type, uint locatorCount, BinaryReader reader, HashManager hashManager) { LocatorType = type; reader.ReadDouble(); var hasFooter = GetHasFooter(LocatorType); var hasUnknownMetadata = GetHasUnknownMetadata(LocatorType); // Initialize fields. LocatorTranslations = new Vector4[locatorCount]; LocatorRotations = new Quaternion[locatorCount]; if (hasFooter) { LocatorNames = new string[locatorCount]; LocatorDataSets = new string[locatorCount]; } if (hasUnknownMetadata) { LocatorUnknown30s = new string[locatorCount]; LocatorUnknown31s = new string[locatorCount]; LocatorUnknown32s = new string[locatorCount]; LocatorUnknown33s = new string[locatorCount]; } // Read locators. for (var i = 0; i < locatorCount; i++) { LocatorTranslations[i] = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); LocatorRotations[i] = new Quaternion(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); if (!hasUnknownMetadata) { continue; } // TODO Resolve hashes. LocatorUnknown30s[i] = reader.ReadUInt32().ToString(); LocatorUnknown31s[i] = reader.ReadUInt32().ToString(); LocatorUnknown32s[i] = reader.ReadUInt32().ToString(); LocatorUnknown33s[i] = reader.ReadUInt32().ToString(); } // Read footer. if (!hasFooter) { return; } for (var i = 0; i < locatorCount; i++) { // TODO Resolve hashes. LocatorNames[i] = reader.ReadUInt32().ToString(); LocatorDataSets[i] = reader.ReadUInt32().ToString(); } }
public void ReadXml(XmlReader reader, string label) { string value = reader[label]; uint maybeHash; if (uint.TryParse(value, out maybeHash)) { HashValue = maybeHash; } else { StringLiteral = value; HashValue = HashManager.HashString(StringLiteral); } }
public LocatorArrayHandler(string assetPath, IUnityThreadCommandDispatcher dispatcher) { this.assetPath = assetPath; hashManager = new HashManager(); // TODO Set up dict this.dispatcher = dispatcher; }