Esempio n. 1
0
 public string GetSourceFileName(AssetEntry asset)
 {
     return BufferReader.ReadString(_sourceFileNameBuffer, asset.SourceFileNameOffset);
 }
Esempio n. 2
0
 public string GetAssetName(AssetEntry asset)
 {
     return BufferReader.ReadString(_assetNameBuffer, asset.NameOffset);
 }
Esempio n. 3
0
 public bool Exists(TypeHash type, InstanceHash instance)
 {
     if (_lastResult.TypeId == type.TheHash && _lastResult.InstanceId == instance.TheHash)
     {
         return true;
     }
     for (int idx = 0; idx < _assetEntries.Length; ++idx)
     {
         if (_assetEntries[idx].TypeId == type.TheHash && _assetEntries[idx].InstanceId == instance.TheHash)
         {
             _lastResult = _assetEntries[idx];
             return true;
         }
     }
     return false;
 }
Esempio n. 4
0
 public AssetEntry GetAsset(TypeHash type, InstanceHash instance)
 {
     if (_lastResult.TypeId == type.TheHash && _lastResult.InstanceId == instance.TheHash)
     {
         return _lastResult;
     }
     for (int idx = 0; idx < _assetEntries.Length; ++idx)
     {
         if (_assetEntries[idx].TypeId == type.TheHash && _assetEntries[idx].InstanceId == instance.TheHash)
         {
             _lastResult = _assetEntries[idx];
             return _lastResult;
         }
     }
     return null;
 }
Esempio n. 5
0
 public unsafe Manifest(string name, bool fullName = false)
 {
     string nameManifest;
     if (!fullName)
     {
         nameManifest = "$NAME$$VERSION$.manifest";
         byte[] version = FileLoader.GetFileBuffer("$NAME$.version".FormatNamed("name", name));
         if (version != null)
         {
             nameManifest = nameManifest.FormatNamed("name", name, "version", BufferReader.ReadString(version, 0, version.Length).Trim());
         }
         else
         {
             nameManifest = nameManifest.FormatNamed("name", name, "version", null);
         }
     }
     else
     {
         nameManifest = name;
     }
     if (!FileLoader.Exists(nameManifest))
     {
         throw new OpenSAGEException(ErrorCode.FileNotFound, "Manifest '$NAME$' does not exist.", "name", nameManifest);
     }
     byte[] buffer = FileLoader.GetFileBuffer(nameManifest);
     fixed (byte* pBufferF = &buffer[0])
     {
         byte* pBuffer = pBufferF;
         int test = *(int*)pBuffer;
         if (test == 0)
         {
             pBuffer += 4;
             _version = *(short*)pBuffer;
             pBuffer += 2;
             _isBigEndian = (*pBuffer++) != 0;
             _isLinked = (*pBuffer++) != 0;
         }
         else
         {
             _isBigEndian = (*pBuffer++) != 0;
             _isLinked = (*pBuffer++) != 0;
             if (_isBigEndian)
             {
                 BufferWriter.SwapShort(pBuffer);
             }
             _version = *(short*)pBuffer;
             pBuffer += 2;
         }
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         _checksum = *(uint*)pBuffer;
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         _allTypesHash = *(uint*)pBuffer;
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         _assetEntries = new AssetEntry[*(uint*)pBuffer];
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         _binaryDataSize = *(int*)pBuffer;
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         _maxChunkSizeBin = *(int*)pBuffer;
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         _maxChunkSizeRelo = *(int*)pBuffer;
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         _maxChunkSizeImp = *(int*)pBuffer;
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         uint assetReferenceBufferSize =*(uint*)pBuffer;
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         uint manifestReferenceBufferSize =*(uint*)pBuffer;
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         uint assetNameBufferSize =*(uint*)pBuffer;
         pBuffer += 4;
         if (_isBigEndian)
         {
             BufferWriter.Swap(pBuffer);
         }
         uint sourceFileNameBufferSize =*(uint*)pBuffer;
         pBuffer += 4;
         for (int idx = 0; idx < _assetEntries.Length; ++idx)
         {
             _assetEntries[idx] = new AssetEntry(&pBuffer, _version, _isBigEndian);
         }
         _assetReferenceBuffer = BufferReader.Read(&pBuffer, assetReferenceBufferSize);
         _manifestReferenceBuffer = BufferReader.Read(&pBuffer, manifestReferenceBufferSize);
         _assetNameBuffer = BufferReader.Read(&pBuffer, assetNameBufferSize);
         _sourceFileNameBuffer = BufferReader.Read(&pBuffer, sourceFileNameBufferSize);
     }
 }