Beispiel #1
0
        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);
            }
        }
Beispiel #3
0
 public LocatorArrayHandler(string assetPath, IUnityThreadCommandDispatcher dispatcher)
 {
     this.assetPath  = assetPath;
     hashManager     = new HashManager(); // TODO Set up dict
     this.dispatcher = dispatcher;
 }