Showing preview only (2,638K chars total). Download the full file or copy to clipboard to get everything.
Repository: Perfare/AssetStudio
Branch: master
Commit: d158e864b556
Files: 244
Total size: 2.5 MB
Directory structure:
gitextract_lz0c6kqe/
├── .gitattributes
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── AssetStudio/
│ ├── 7zip/
│ │ ├── Common/
│ │ │ ├── CRC.cs
│ │ │ ├── CommandLineParser.cs
│ │ │ ├── InBuffer.cs
│ │ │ └── OutBuffer.cs
│ │ ├── Compress/
│ │ │ ├── LZ/
│ │ │ │ ├── IMatchFinder.cs
│ │ │ │ ├── LzBinTree.cs
│ │ │ │ ├── LzInWindow.cs
│ │ │ │ └── LzOutWindow.cs
│ │ │ ├── LZMA/
│ │ │ │ ├── LzmaBase.cs
│ │ │ │ ├── LzmaDecoder.cs
│ │ │ │ └── LzmaEncoder.cs
│ │ │ └── RangeCoder/
│ │ │ ├── RangeCoder.cs
│ │ │ ├── RangeCoderBit.cs
│ │ │ └── RangeCoderBitTree.cs
│ │ └── ICoder.cs
│ ├── AssetStudio.csproj
│ ├── AssetsManager.cs
│ ├── BigArrayPool.cs
│ ├── Brotli/
│ │ ├── BitReader.cs
│ │ ├── BrotliInputStream.cs
│ │ ├── BrotliRuntimeException.cs
│ │ ├── Context.cs
│ │ ├── Decode.cs
│ │ ├── Dictionary.cs
│ │ ├── Huffman.cs
│ │ ├── HuffmanTreeGroup.cs
│ │ ├── IntReader.cs
│ │ ├── Prefix.cs
│ │ ├── RunningState.cs
│ │ ├── State.cs
│ │ ├── Transform.cs
│ │ ├── Utils.cs
│ │ └── WordTransformType.cs
│ ├── BuildTarget.cs
│ ├── BuildType.cs
│ ├── BundleFile.cs
│ ├── ClassIDType.cs
│ ├── Classes/
│ │ ├── Animation.cs
│ │ ├── AnimationClip.cs
│ │ ├── Animator.cs
│ │ ├── AnimatorController.cs
│ │ ├── AnimatorOverrideController.cs
│ │ ├── AssetBundle.cs
│ │ ├── AudioClip.cs
│ │ ├── Avatar.cs
│ │ ├── Behaviour.cs
│ │ ├── BuildSettings.cs
│ │ ├── Component.cs
│ │ ├── EditorExtension.cs
│ │ ├── Font.cs
│ │ ├── GameObject.cs
│ │ ├── Material.cs
│ │ ├── Mesh.cs
│ │ ├── MeshFilter.cs
│ │ ├── MeshRenderer.cs
│ │ ├── MonoBehaviour.cs
│ │ ├── MonoScript.cs
│ │ ├── MovieTexture.cs
│ │ ├── NamedObject.cs
│ │ ├── Object.cs
│ │ ├── PPtr.cs
│ │ ├── PlayerSettings.cs
│ │ ├── RectTransform.cs
│ │ ├── Renderer.cs
│ │ ├── ResourceManager.cs
│ │ ├── RuntimeAnimatorController.cs
│ │ ├── Shader.cs
│ │ ├── SkinnedMeshRenderer.cs
│ │ ├── Sprite.cs
│ │ ├── SpriteAtlas.cs
│ │ ├── TextAsset.cs
│ │ ├── Texture.cs
│ │ ├── Texture2D.cs
│ │ ├── Transform.cs
│ │ └── VideoClip.cs
│ ├── CommonString.cs
│ ├── EndianBinaryReader.cs
│ ├── EndianType.cs
│ ├── Extensions/
│ │ ├── BinaryReaderExtensions.cs
│ │ ├── BinaryWriterExtensions.cs
│ │ └── StreamExtensions.cs
│ ├── FileIdentifier.cs
│ ├── FileReader.cs
│ ├── FileType.cs
│ ├── IImported.cs
│ ├── ILogger.cs
│ ├── ImportHelper.cs
│ ├── LocalSerializedObjectIdentifier.cs
│ ├── Logger.cs
│ ├── Math/
│ │ ├── Color.cs
│ │ ├── Half.cs
│ │ ├── HalfHelper.cs
│ │ ├── Matrix4x4.cs
│ │ ├── Quaternion.cs
│ │ ├── Vector2.cs
│ │ ├── Vector3.cs
│ │ └── Vector4.cs
│ ├── ObjectInfo.cs
│ ├── ObjectReader.cs
│ ├── Progress.cs
│ ├── ResourceReader.cs
│ ├── SerializedFile.cs
│ ├── SerializedFileFormatVersion.cs
│ ├── SerializedFileHeader.cs
│ ├── SerializedType.cs
│ ├── SevenZipHelper.cs
│ ├── StreamFile.cs
│ ├── TypeTree.cs
│ ├── TypeTreeHelper.cs
│ ├── TypeTreeNode.cs
│ └── WebFile.cs
├── AssetStudio.PInvoke/
│ ├── AssetStudio.PInvoke.csproj
│ ├── DllLoader.cs
│ └── Utf8StringHandle.cs
├── AssetStudio.sln
├── AssetStudioFBXNative/
│ ├── AssetStudioFBXNative.rc
│ ├── AssetStudioFBXNative.vcxproj
│ ├── AssetStudioFBXNative.vcxproj.filters
│ ├── api.cpp
│ ├── api.h
│ ├── asfbx_anim_context.cpp
│ ├── asfbx_anim_context.h
│ ├── asfbx_context.cpp
│ ├── asfbx_context.h
│ ├── asfbx_morph_context.cpp
│ ├── asfbx_morph_context.h
│ ├── asfbx_skin_context.cpp
│ ├── asfbx_skin_context.h
│ ├── bool32_t.h
│ ├── cpp.hint
│ ├── dllexport.h
│ ├── resource.h
│ ├── utils.cpp
│ └── utils.h
├── AssetStudioFBXWrapper/
│ ├── AssetStudioFBXWrapper.csproj
│ ├── Fbx.PInvoke.cs
│ ├── Fbx.cs
│ ├── FbxDll.cs
│ ├── FbxExporter.cs
│ ├── FbxExporterContext.PInvoke.cs
│ └── FbxExporterContext.cs
├── AssetStudioGUI/
│ ├── AssetStudioGUI.csproj
│ ├── AssetStudioGUIForm.Designer.cs
│ ├── AssetStudioGUIForm.cs
│ ├── AssetStudioGUIForm.resx
│ ├── Components/
│ │ ├── AssetItem.cs
│ │ ├── GOHierarchy.cs
│ │ ├── GameObjectTreeNode.cs
│ │ ├── OpenFolderDialog.cs
│ │ └── TypeTreeItem.cs
│ ├── DirectBitmap.cs
│ ├── ExportOptions.Designer.cs
│ ├── ExportOptions.cs
│ ├── ExportOptions.resx
│ ├── Exporter.cs
│ ├── GUILogger.cs
│ ├── Program.cs
│ ├── Properties/
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ └── Studio.cs
├── AssetStudioUtility/
│ ├── AssemblyLoader.cs
│ ├── AssetStudioUtility.csproj
│ ├── AudioClipConverter.cs
│ ├── CSspv/
│ │ ├── Disassembler.cs
│ │ ├── EnumValuesExtensions.cs
│ │ ├── Instruction.cs
│ │ ├── LICENSE
│ │ ├── Module.cs
│ │ ├── OperandType.cs
│ │ ├── ParsedInstruction.cs
│ │ ├── Reader.cs
│ │ ├── SpirV.Core.Grammar.cs
│ │ ├── SpirV.Meta.cs
│ │ └── Types.cs
│ ├── FMOD Studio API/
│ │ ├── fmod.cs
│ │ ├── fmod_dsp.cs
│ │ └── fmod_errors.cs
│ ├── ImageExtensions.cs
│ ├── ImageFormat.cs
│ ├── ModelConverter.cs
│ ├── ModelExporter.cs
│ ├── MonoBehaviourConverter.cs
│ ├── MyAssemblyResolver.cs
│ ├── SerializedTypeHelper.cs
│ ├── ShaderConverter.cs
│ ├── Smolv/
│ │ ├── OpData.cs
│ │ ├── SmolvDecoder.cs
│ │ └── SpvOp.cs
│ ├── SpirVShaderConverter.cs
│ ├── SpriteHelper.cs
│ ├── Texture2DConverter.cs
│ ├── Texture2DExtensions.cs
│ ├── TypeDefinitionConverter.cs
│ ├── Unity.CecilTools/
│ │ ├── CecilUtils.cs
│ │ ├── ElementType.cs
│ │ └── Extensions/
│ │ ├── MethodDefinitionExtensions.cs
│ │ ├── ResolutionExtensions.cs
│ │ ├── TypeDefinitionExtensions.cs
│ │ └── TypeReferenceExtensions.cs
│ └── Unity.SerializationLogic/
│ ├── UnityEngineTypePredicates.cs
│ └── UnitySerializationLogic.cs
├── LICENSE
├── README.md
├── Texture2DDecoderNative/
│ ├── Texture2DDecoderNative.rc
│ ├── Texture2DDecoderNative.vcxproj
│ ├── Texture2DDecoderNative.vcxproj.filters
│ ├── astc.cpp
│ ├── astc.h
│ ├── atc.cpp
│ ├── atc.h
│ ├── bcn.cpp
│ ├── bcn.h
│ ├── bool32_t.h
│ ├── color.h
│ ├── cpp.hint
│ ├── crunch/
│ │ ├── crn_decomp.h
│ │ └── crnlib.h
│ ├── crunch.cpp
│ ├── crunch.h
│ ├── dllexport.h
│ ├── dllmain.cpp
│ ├── endianness.h
│ ├── etc.cpp
│ ├── etc.h
│ ├── fp16/
│ │ ├── bitcasts.h
│ │ └── fp16.h
│ ├── fp16.h
│ ├── pvrtc.cpp
│ ├── pvrtc.h
│ ├── resource.h
│ ├── unitycrunch/
│ │ ├── crn_decomp.h
│ │ ├── crn_defs.h
│ │ └── crnlib.h
│ ├── unitycrunch.cpp
│ └── unitycrunch.h
└── Texture2DDecoderWrapper/
├── T2DDll.cs
├── Texture2DDecoderWrapper.csproj
├── TextureDecoder.PInvoke.cs
└── TextureDecoder.cs
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
================================================
FILE: .github/workflows/build.yml
================================================
name: AssetStudioBuild
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: microsoft/setup-msbuild@v1.1
- name: Download FBX SDK
run: |
md fbx
cd fbx
Invoke-WebRequest "https://damassets.autodesk.net/content/dam/autodesk/www/adn/fbx/2020-2-1/fbx202021_fbxsdk_vs2019_win.exe" -OutFile "fbxsdk.exe"
Start-Process -FilePath "fbxsdk.exe" /S -Wait
Invoke-WebRequest "https://damassets.autodesk.net/content/dam/autodesk/www/adn/fbx/2020-2-1/fbx202021_fbxsdk_vs2019_pdbs.exe" -OutFile "fbxpdb.exe"
Start-Process -FilePath "fbxpdb.exe" /S -Wait
cd ..
- name: Nuget Restore
run: nuget restore
- name: Build .Net472
run: msbuild /p:Configuration=Release /p:TargetFramework=net472 /verbosity:minimal
- name: Build .Net5
run: msbuild /t:AssetStudioGUI:publish /p:Configuration=Release /p:TargetFramework=net5.0-windows /p:SelfContained=false /verbosity:minimal
- name: Build .Net6
run: msbuild /t:AssetStudioGUI:publish /p:Configuration=Release /p:TargetFramework=net6.0-windows /p:SelfContained=false /verbosity:minimal
- name: Upload .Net472 Artifact
uses: actions/upload-artifact@v2
with:
name: AssetStudio.net472
path: AssetStudioGUI/bin/Release/net472
- name: Upload .Net5 Artifact
uses: actions/upload-artifact@v2
with:
name: AssetStudio.net5
path: AssetStudioGUI/bin/Release/net5.0-windows/publish
- name: Upload .Net6 Artifact
uses: actions/upload-artifact@v2
with:
name: AssetStudio.net6
path: AssetStudioGUI/bin/Release/net6.0-windows/publish
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- Backup*.rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
================================================
FILE: AssetStudio/7zip/Common/CRC.cs
================================================
// Common/CRC.cs
namespace SevenZip
{
public class CRC
{
public static readonly uint[] Table;
static CRC()
{
Table = new uint[256];
const uint kPoly = 0xEDB88320;
for (uint i = 0; i < 256; i++)
{
uint r = i;
for (int j = 0; j < 8; j++)
if ((r & 1) != 0)
r = (r >> 1) ^ kPoly;
else
r >>= 1;
Table[i] = r;
}
}
uint _value = 0xFFFFFFFF;
public void Init() { _value = 0xFFFFFFFF; }
public void UpdateByte(byte b)
{
_value = Table[(((byte)(_value)) ^ b)] ^ (_value >> 8);
}
public void Update(byte[] data, uint offset, uint size)
{
for (uint i = 0; i < size; i++)
_value = Table[(((byte)(_value)) ^ data[offset + i])] ^ (_value >> 8);
}
public uint GetDigest() { return _value ^ 0xFFFFFFFF; }
static uint CalculateDigest(byte[] data, uint offset, uint size)
{
CRC crc = new CRC();
// crc.Init();
crc.Update(data, offset, size);
return crc.GetDigest();
}
static bool VerifyDigest(uint digest, byte[] data, uint offset, uint size)
{
return (CalculateDigest(data, offset, size) == digest);
}
}
}
================================================
FILE: AssetStudio/7zip/Common/CommandLineParser.cs
================================================
// CommandLineParser.cs
using System;
using System.Collections;
namespace SevenZip.CommandLineParser
{
public enum SwitchType
{
Simple,
PostMinus,
LimitedPostString,
UnLimitedPostString,
PostChar
}
public class SwitchForm
{
public string IDString;
public SwitchType Type;
public bool Multi;
public int MinLen;
public int MaxLen;
public string PostCharSet;
public SwitchForm(string idString, SwitchType type, bool multi,
int minLen, int maxLen, string postCharSet)
{
IDString = idString;
Type = type;
Multi = multi;
MinLen = minLen;
MaxLen = maxLen;
PostCharSet = postCharSet;
}
public SwitchForm(string idString, SwitchType type, bool multi, int minLen):
this(idString, type, multi, minLen, 0, "")
{
}
public SwitchForm(string idString, SwitchType type, bool multi):
this(idString, type, multi, 0)
{
}
}
public class SwitchResult
{
public bool ThereIs;
public bool WithMinus;
public ArrayList PostStrings = new ArrayList();
public int PostCharIndex;
public SwitchResult()
{
ThereIs = false;
}
}
public class Parser
{
public ArrayList NonSwitchStrings = new ArrayList();
SwitchResult[] _switches;
public Parser(int numSwitches)
{
_switches = new SwitchResult[numSwitches];
for (int i = 0; i < numSwitches; i++)
_switches[i] = new SwitchResult();
}
bool ParseString(string srcString, SwitchForm[] switchForms)
{
int len = srcString.Length;
if (len == 0)
return false;
int pos = 0;
if (!IsItSwitchChar(srcString[pos]))
return false;
while (pos < len)
{
if (IsItSwitchChar(srcString[pos]))
pos++;
const int kNoLen = -1;
int matchedSwitchIndex = 0;
int maxLen = kNoLen;
for (int switchIndex = 0; switchIndex < _switches.Length; switchIndex++)
{
int switchLen = switchForms[switchIndex].IDString.Length;
if (switchLen <= maxLen || pos + switchLen > len)
continue;
if (String.Compare(switchForms[switchIndex].IDString, 0,
srcString, pos, switchLen, true) == 0)
{
matchedSwitchIndex = switchIndex;
maxLen = switchLen;
}
}
if (maxLen == kNoLen)
throw new Exception("maxLen == kNoLen");
SwitchResult matchedSwitch = _switches[matchedSwitchIndex];
SwitchForm switchForm = switchForms[matchedSwitchIndex];
if ((!switchForm.Multi) && matchedSwitch.ThereIs)
throw new Exception("switch must be single");
matchedSwitch.ThereIs = true;
pos += maxLen;
int tailSize = len - pos;
SwitchType type = switchForm.Type;
switch (type)
{
case SwitchType.PostMinus:
{
if (tailSize == 0)
matchedSwitch.WithMinus = false;
else
{
matchedSwitch.WithMinus = (srcString[pos] == kSwitchMinus);
if (matchedSwitch.WithMinus)
pos++;
}
break;
}
case SwitchType.PostChar:
{
if (tailSize < switchForm.MinLen)
throw new Exception("switch is not full");
string charSet = switchForm.PostCharSet;
const int kEmptyCharValue = -1;
if (tailSize == 0)
matchedSwitch.PostCharIndex = kEmptyCharValue;
else
{
int index = charSet.IndexOf(srcString[pos]);
if (index < 0)
matchedSwitch.PostCharIndex = kEmptyCharValue;
else
{
matchedSwitch.PostCharIndex = index;
pos++;
}
}
break;
}
case SwitchType.LimitedPostString:
case SwitchType.UnLimitedPostString:
{
int minLen = switchForm.MinLen;
if (tailSize < minLen)
throw new Exception("switch is not full");
if (type == SwitchType.UnLimitedPostString)
{
matchedSwitch.PostStrings.Add(srcString.Substring(pos));
return true;
}
String stringSwitch = srcString.Substring(pos, minLen);
pos += minLen;
for (int i = minLen; i < switchForm.MaxLen && pos < len; i++, pos++)
{
char c = srcString[pos];
if (IsItSwitchChar(c))
break;
stringSwitch += c;
}
matchedSwitch.PostStrings.Add(stringSwitch);
break;
}
}
}
return true;
}
public void ParseStrings(SwitchForm[] switchForms, string[] commandStrings)
{
int numCommandStrings = commandStrings.Length;
bool stopSwitch = false;
for (int i = 0; i < numCommandStrings; i++)
{
string s = commandStrings[i];
if (stopSwitch)
NonSwitchStrings.Add(s);
else
if (s == kStopSwitchParsing)
stopSwitch = true;
else
if (!ParseString(s, switchForms))
NonSwitchStrings.Add(s);
}
}
public SwitchResult this[int index] { get { return _switches[index]; } }
public static int ParseCommand(CommandForm[] commandForms, string commandString,
out string postString)
{
for (int i = 0; i < commandForms.Length; i++)
{
string id = commandForms[i].IDString;
if (commandForms[i].PostStringMode)
{
if (commandString.IndexOf(id) == 0)
{
postString = commandString.Substring(id.Length);
return i;
}
}
else
if (commandString == id)
{
postString = "";
return i;
}
}
postString = "";
return -1;
}
static bool ParseSubCharsCommand(int numForms, CommandSubCharsSet[] forms,
string commandString, ArrayList indices)
{
indices.Clear();
int numUsedChars = 0;
for (int i = 0; i < numForms; i++)
{
CommandSubCharsSet charsSet = forms[i];
int currentIndex = -1;
int len = charsSet.Chars.Length;
for (int j = 0; j < len; j++)
{
char c = charsSet.Chars[j];
int newIndex = commandString.IndexOf(c);
if (newIndex >= 0)
{
if (currentIndex >= 0)
return false;
if (commandString.IndexOf(c, newIndex + 1) >= 0)
return false;
currentIndex = j;
numUsedChars++;
}
}
if (currentIndex == -1 && !charsSet.EmptyAllowed)
return false;
indices.Add(currentIndex);
}
return (numUsedChars == commandString.Length);
}
const char kSwitchID1 = '-';
const char kSwitchID2 = '/';
const char kSwitchMinus = '-';
const string kStopSwitchParsing = "--";
static bool IsItSwitchChar(char c)
{
return (c == kSwitchID1 || c == kSwitchID2);
}
}
public class CommandForm
{
public string IDString = "";
public bool PostStringMode = false;
public CommandForm(string idString, bool postStringMode)
{
IDString = idString;
PostStringMode = postStringMode;
}
}
class CommandSubCharsSet
{
public string Chars = "";
public bool EmptyAllowed = false;
}
}
================================================
FILE: AssetStudio/7zip/Common/InBuffer.cs
================================================
// InBuffer.cs
namespace SevenZip.Buffer
{
public class InBuffer
{
byte[] m_Buffer;
uint m_Pos;
uint m_Limit;
uint m_BufferSize;
System.IO.Stream m_Stream;
bool m_StreamWasExhausted;
ulong m_ProcessedSize;
public InBuffer(uint bufferSize)
{
m_Buffer = new byte[bufferSize];
m_BufferSize = bufferSize;
}
public void Init(System.IO.Stream stream)
{
m_Stream = stream;
m_ProcessedSize = 0;
m_Limit = 0;
m_Pos = 0;
m_StreamWasExhausted = false;
}
public bool ReadBlock()
{
if (m_StreamWasExhausted)
return false;
m_ProcessedSize += m_Pos;
int aNumProcessedBytes = m_Stream.Read(m_Buffer, 0, (int)m_BufferSize);
m_Pos = 0;
m_Limit = (uint)aNumProcessedBytes;
m_StreamWasExhausted = (aNumProcessedBytes == 0);
return (!m_StreamWasExhausted);
}
public void ReleaseStream()
{
// m_Stream.Close();
m_Stream = null;
}
public bool ReadByte(byte b) // check it
{
if (m_Pos >= m_Limit)
if (!ReadBlock())
return false;
b = m_Buffer[m_Pos++];
return true;
}
public byte ReadByte()
{
// return (byte)m_Stream.ReadByte();
if (m_Pos >= m_Limit)
if (!ReadBlock())
return 0xFF;
return m_Buffer[m_Pos++];
}
public ulong GetProcessedSize()
{
return m_ProcessedSize + m_Pos;
}
}
}
================================================
FILE: AssetStudio/7zip/Common/OutBuffer.cs
================================================
// OutBuffer.cs
namespace SevenZip.Buffer
{
public class OutBuffer
{
byte[] m_Buffer;
uint m_Pos;
uint m_BufferSize;
System.IO.Stream m_Stream;
ulong m_ProcessedSize;
public OutBuffer(uint bufferSize)
{
m_Buffer = new byte[bufferSize];
m_BufferSize = bufferSize;
}
public void SetStream(System.IO.Stream stream) { m_Stream = stream; }
public void FlushStream() { m_Stream.Flush(); }
public void CloseStream() { m_Stream.Close(); }
public void ReleaseStream() { m_Stream = null; }
public void Init()
{
m_ProcessedSize = 0;
m_Pos = 0;
}
public void WriteByte(byte b)
{
m_Buffer[m_Pos++] = b;
if (m_Pos >= m_BufferSize)
FlushData();
}
public void FlushData()
{
if (m_Pos == 0)
return;
m_Stream.Write(m_Buffer, 0, (int)m_Pos);
m_Pos = 0;
}
public ulong GetProcessedSize() { return m_ProcessedSize + m_Pos; }
}
}
================================================
FILE: AssetStudio/7zip/Compress/LZ/IMatchFinder.cs
================================================
// IMatchFinder.cs
using System;
namespace SevenZip.Compression.LZ
{
interface IInWindowStream
{
void SetStream(System.IO.Stream inStream);
void Init();
void ReleaseStream();
Byte GetIndexByte(Int32 index);
UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit);
UInt32 GetNumAvailableBytes();
}
interface IMatchFinder : IInWindowStream
{
void Create(UInt32 historySize, UInt32 keepAddBufferBefore,
UInt32 matchMaxLen, UInt32 keepAddBufferAfter);
UInt32 GetMatches(UInt32[] distances);
void Skip(UInt32 num);
}
}
================================================
FILE: AssetStudio/7zip/Compress/LZ/LzBinTree.cs
================================================
// LzBinTree.cs
using System;
namespace SevenZip.Compression.LZ
{
public class BinTree : InWindow, IMatchFinder
{
UInt32 _cyclicBufferPos;
UInt32 _cyclicBufferSize = 0;
UInt32 _matchMaxLen;
UInt32[] _son;
UInt32[] _hash;
UInt32 _cutValue = 0xFF;
UInt32 _hashMask;
UInt32 _hashSizeSum = 0;
bool HASH_ARRAY = true;
const UInt32 kHash2Size = 1 << 10;
const UInt32 kHash3Size = 1 << 16;
const UInt32 kBT2HashSize = 1 << 16;
const UInt32 kStartMaxLen = 1;
const UInt32 kHash3Offset = kHash2Size;
const UInt32 kEmptyHashValue = 0;
const UInt32 kMaxValForNormalize = ((UInt32)1 << 31) - 1;
UInt32 kNumHashDirectBytes = 0;
UInt32 kMinMatchCheck = 4;
UInt32 kFixHashSize = kHash2Size + kHash3Size;
public void SetType(int numHashBytes)
{
HASH_ARRAY = (numHashBytes > 2);
if (HASH_ARRAY)
{
kNumHashDirectBytes = 0;
kMinMatchCheck = 4;
kFixHashSize = kHash2Size + kHash3Size;
}
else
{
kNumHashDirectBytes = 2;
kMinMatchCheck = 2 + 1;
kFixHashSize = 0;
}
}
public new void SetStream(System.IO.Stream stream) { base.SetStream(stream); }
public new void ReleaseStream() { base.ReleaseStream(); }
public new void Init()
{
base.Init();
for (UInt32 i = 0; i < _hashSizeSum; i++)
_hash[i] = kEmptyHashValue;
_cyclicBufferPos = 0;
ReduceOffsets(-1);
}
public new void MovePos()
{
if (++_cyclicBufferPos >= _cyclicBufferSize)
_cyclicBufferPos = 0;
base.MovePos();
if (_pos == kMaxValForNormalize)
Normalize();
}
public new Byte GetIndexByte(Int32 index) { return base.GetIndexByte(index); }
public new UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit)
{ return base.GetMatchLen(index, distance, limit); }
public new UInt32 GetNumAvailableBytes() { return base.GetNumAvailableBytes(); }
public void Create(UInt32 historySize, UInt32 keepAddBufferBefore,
UInt32 matchMaxLen, UInt32 keepAddBufferAfter)
{
if (historySize > kMaxValForNormalize - 256)
throw new Exception();
_cutValue = 16 + (matchMaxLen >> 1);
UInt32 windowReservSize = (historySize + keepAddBufferBefore +
matchMaxLen + keepAddBufferAfter) / 2 + 256;
base.Create(historySize + keepAddBufferBefore, matchMaxLen + keepAddBufferAfter, windowReservSize);
_matchMaxLen = matchMaxLen;
UInt32 cyclicBufferSize = historySize + 1;
if (_cyclicBufferSize != cyclicBufferSize)
_son = new UInt32[(_cyclicBufferSize = cyclicBufferSize) * 2];
UInt32 hs = kBT2HashSize;
if (HASH_ARRAY)
{
hs = historySize - 1;
hs |= (hs >> 1);
hs |= (hs >> 2);
hs |= (hs >> 4);
hs |= (hs >> 8);
hs >>= 1;
hs |= 0xFFFF;
if (hs > (1 << 24))
hs >>= 1;
_hashMask = hs;
hs++;
hs += kFixHashSize;
}
if (hs != _hashSizeSum)
_hash = new UInt32[_hashSizeSum = hs];
}
public UInt32 GetMatches(UInt32[] distances)
{
UInt32 lenLimit;
if (_pos + _matchMaxLen <= _streamPos)
lenLimit = _matchMaxLen;
else
{
lenLimit = _streamPos - _pos;
if (lenLimit < kMinMatchCheck)
{
MovePos();
return 0;
}
}
UInt32 offset = 0;
UInt32 matchMinPos = (_pos > _cyclicBufferSize) ? (_pos - _cyclicBufferSize) : 0;
UInt32 cur = _bufferOffset + _pos;
UInt32 maxLen = kStartMaxLen; // to avoid items for len < hashSize;
UInt32 hashValue, hash2Value = 0, hash3Value = 0;
if (HASH_ARRAY)
{
UInt32 temp = CRC.Table[_bufferBase[cur]] ^ _bufferBase[cur + 1];
hash2Value = temp & (kHash2Size - 1);
temp ^= ((UInt32)(_bufferBase[cur + 2]) << 8);
hash3Value = temp & (kHash3Size - 1);
hashValue = (temp ^ (CRC.Table[_bufferBase[cur + 3]] << 5)) & _hashMask;
}
else
hashValue = _bufferBase[cur] ^ ((UInt32)(_bufferBase[cur + 1]) << 8);
UInt32 curMatch = _hash[kFixHashSize + hashValue];
if (HASH_ARRAY)
{
UInt32 curMatch2 = _hash[hash2Value];
UInt32 curMatch3 = _hash[kHash3Offset + hash3Value];
_hash[hash2Value] = _pos;
_hash[kHash3Offset + hash3Value] = _pos;
if (curMatch2 > matchMinPos)
if (_bufferBase[_bufferOffset + curMatch2] == _bufferBase[cur])
{
distances[offset++] = maxLen = 2;
distances[offset++] = _pos - curMatch2 - 1;
}
if (curMatch3 > matchMinPos)
if (_bufferBase[_bufferOffset + curMatch3] == _bufferBase[cur])
{
if (curMatch3 == curMatch2)
offset -= 2;
distances[offset++] = maxLen = 3;
distances[offset++] = _pos - curMatch3 - 1;
curMatch2 = curMatch3;
}
if (offset != 0 && curMatch2 == curMatch)
{
offset -= 2;
maxLen = kStartMaxLen;
}
}
_hash[kFixHashSize + hashValue] = _pos;
UInt32 ptr0 = (_cyclicBufferPos << 1) + 1;
UInt32 ptr1 = (_cyclicBufferPos << 1);
UInt32 len0, len1;
len0 = len1 = kNumHashDirectBytes;
if (kNumHashDirectBytes != 0)
{
if (curMatch > matchMinPos)
{
if (_bufferBase[_bufferOffset + curMatch + kNumHashDirectBytes] !=
_bufferBase[cur + kNumHashDirectBytes])
{
distances[offset++] = maxLen = kNumHashDirectBytes;
distances[offset++] = _pos - curMatch - 1;
}
}
}
UInt32 count = _cutValue;
while(true)
{
if(curMatch <= matchMinPos || count-- == 0)
{
_son[ptr0] = _son[ptr1] = kEmptyHashValue;
break;
}
UInt32 delta = _pos - curMatch;
UInt32 cyclicPos = ((delta <= _cyclicBufferPos) ?
(_cyclicBufferPos - delta) :
(_cyclicBufferPos - delta + _cyclicBufferSize)) << 1;
UInt32 pby1 = _bufferOffset + curMatch;
UInt32 len = Math.Min(len0, len1);
if (_bufferBase[pby1 + len] == _bufferBase[cur + len])
{
while(++len != lenLimit)
if (_bufferBase[pby1 + len] != _bufferBase[cur + len])
break;
if (maxLen < len)
{
distances[offset++] = maxLen = len;
distances[offset++] = delta - 1;
if (len == lenLimit)
{
_son[ptr1] = _son[cyclicPos];
_son[ptr0] = _son[cyclicPos + 1];
break;
}
}
}
if (_bufferBase[pby1 + len] < _bufferBase[cur + len])
{
_son[ptr1] = curMatch;
ptr1 = cyclicPos + 1;
curMatch = _son[ptr1];
len1 = len;
}
else
{
_son[ptr0] = curMatch;
ptr0 = cyclicPos;
curMatch = _son[ptr0];
len0 = len;
}
}
MovePos();
return offset;
}
public void Skip(UInt32 num)
{
do
{
UInt32 lenLimit;
if (_pos + _matchMaxLen <= _streamPos)
lenLimit = _matchMaxLen;
else
{
lenLimit = _streamPos - _pos;
if (lenLimit < kMinMatchCheck)
{
MovePos();
continue;
}
}
UInt32 matchMinPos = (_pos > _cyclicBufferSize) ? (_pos - _cyclicBufferSize) : 0;
UInt32 cur = _bufferOffset + _pos;
UInt32 hashValue;
if (HASH_ARRAY)
{
UInt32 temp = CRC.Table[_bufferBase[cur]] ^ _bufferBase[cur + 1];
UInt32 hash2Value = temp & (kHash2Size - 1);
_hash[hash2Value] = _pos;
temp ^= ((UInt32)(_bufferBase[cur + 2]) << 8);
UInt32 hash3Value = temp & (kHash3Size - 1);
_hash[kHash3Offset + hash3Value] = _pos;
hashValue = (temp ^ (CRC.Table[_bufferBase[cur + 3]] << 5)) & _hashMask;
}
else
hashValue = _bufferBase[cur] ^ ((UInt32)(_bufferBase[cur + 1]) << 8);
UInt32 curMatch = _hash[kFixHashSize + hashValue];
_hash[kFixHashSize + hashValue] = _pos;
UInt32 ptr0 = (_cyclicBufferPos << 1) + 1;
UInt32 ptr1 = (_cyclicBufferPos << 1);
UInt32 len0, len1;
len0 = len1 = kNumHashDirectBytes;
UInt32 count = _cutValue;
while (true)
{
if (curMatch <= matchMinPos || count-- == 0)
{
_son[ptr0] = _son[ptr1] = kEmptyHashValue;
break;
}
UInt32 delta = _pos - curMatch;
UInt32 cyclicPos = ((delta <= _cyclicBufferPos) ?
(_cyclicBufferPos - delta) :
(_cyclicBufferPos - delta + _cyclicBufferSize)) << 1;
UInt32 pby1 = _bufferOffset + curMatch;
UInt32 len = Math.Min(len0, len1);
if (_bufferBase[pby1 + len] == _bufferBase[cur + len])
{
while (++len != lenLimit)
if (_bufferBase[pby1 + len] != _bufferBase[cur + len])
break;
if (len == lenLimit)
{
_son[ptr1] = _son[cyclicPos];
_son[ptr0] = _son[cyclicPos + 1];
break;
}
}
if (_bufferBase[pby1 + len] < _bufferBase[cur + len])
{
_son[ptr1] = curMatch;
ptr1 = cyclicPos + 1;
curMatch = _son[ptr1];
len1 = len;
}
else
{
_son[ptr0] = curMatch;
ptr0 = cyclicPos;
curMatch = _son[ptr0];
len0 = len;
}
}
MovePos();
}
while (--num != 0);
}
void NormalizeLinks(UInt32[] items, UInt32 numItems, UInt32 subValue)
{
for (UInt32 i = 0; i < numItems; i++)
{
UInt32 value = items[i];
if (value <= subValue)
value = kEmptyHashValue;
else
value -= subValue;
items[i] = value;
}
}
void Normalize()
{
UInt32 subValue = _pos - _cyclicBufferSize;
NormalizeLinks(_son, _cyclicBufferSize * 2, subValue);
NormalizeLinks(_hash, _hashSizeSum, subValue);
ReduceOffsets((Int32)subValue);
}
public void SetCutValue(UInt32 cutValue) { _cutValue = cutValue; }
}
}
================================================
FILE: AssetStudio/7zip/Compress/LZ/LzInWindow.cs
================================================
// LzInWindow.cs
using System;
namespace SevenZip.Compression.LZ
{
public class InWindow
{
public Byte[] _bufferBase = null; // pointer to buffer with data
System.IO.Stream _stream;
UInt32 _posLimit; // offset (from _buffer) of first byte when new block reading must be done
bool _streamEndWasReached; // if (true) then _streamPos shows real end of stream
UInt32 _pointerToLastSafePosition;
public UInt32 _bufferOffset;
public UInt32 _blockSize; // Size of Allocated memory block
public UInt32 _pos; // offset (from _buffer) of curent byte
UInt32 _keepSizeBefore; // how many BYTEs must be kept in buffer before _pos
UInt32 _keepSizeAfter; // how many BYTEs must be kept buffer after _pos
public UInt32 _streamPos; // offset (from _buffer) of first not read byte from Stream
public void MoveBlock()
{
UInt32 offset = (UInt32)(_bufferOffset) + _pos - _keepSizeBefore;
// we need one additional byte, since MovePos moves on 1 byte.
if (offset > 0)
offset--;
UInt32 numBytes = (UInt32)(_bufferOffset) + _streamPos - offset;
// check negative offset ????
for (UInt32 i = 0; i < numBytes; i++)
_bufferBase[i] = _bufferBase[offset + i];
_bufferOffset -= offset;
}
public virtual void ReadBlock()
{
if (_streamEndWasReached)
return;
while (true)
{
int size = (int)((0 - _bufferOffset) + _blockSize - _streamPos);
if (size == 0)
return;
int numReadBytes = _stream.Read(_bufferBase, (int)(_bufferOffset + _streamPos), size);
if (numReadBytes == 0)
{
_posLimit = _streamPos;
UInt32 pointerToPostion = _bufferOffset + _posLimit;
if (pointerToPostion > _pointerToLastSafePosition)
_posLimit = (UInt32)(_pointerToLastSafePosition - _bufferOffset);
_streamEndWasReached = true;
return;
}
_streamPos += (UInt32)numReadBytes;
if (_streamPos >= _pos + _keepSizeAfter)
_posLimit = _streamPos - _keepSizeAfter;
}
}
void Free() { _bufferBase = null; }
public void Create(UInt32 keepSizeBefore, UInt32 keepSizeAfter, UInt32 keepSizeReserv)
{
_keepSizeBefore = keepSizeBefore;
_keepSizeAfter = keepSizeAfter;
UInt32 blockSize = keepSizeBefore + keepSizeAfter + keepSizeReserv;
if (_bufferBase == null || _blockSize != blockSize)
{
Free();
_blockSize = blockSize;
_bufferBase = new Byte[_blockSize];
}
_pointerToLastSafePosition = _blockSize - keepSizeAfter;
}
public void SetStream(System.IO.Stream stream) { _stream = stream; }
public void ReleaseStream() { _stream = null; }
public void Init()
{
_bufferOffset = 0;
_pos = 0;
_streamPos = 0;
_streamEndWasReached = false;
ReadBlock();
}
public void MovePos()
{
_pos++;
if (_pos > _posLimit)
{
UInt32 pointerToPostion = _bufferOffset + _pos;
if (pointerToPostion > _pointerToLastSafePosition)
MoveBlock();
ReadBlock();
}
}
public Byte GetIndexByte(Int32 index) { return _bufferBase[_bufferOffset + _pos + index]; }
// index + limit have not to exceed _keepSizeAfter;
public UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit)
{
if (_streamEndWasReached)
if ((_pos + index) + limit > _streamPos)
limit = _streamPos - (UInt32)(_pos + index);
distance++;
// Byte *pby = _buffer + (size_t)_pos + index;
UInt32 pby = _bufferOffset + _pos + (UInt32)index;
UInt32 i;
for (i = 0; i < limit && _bufferBase[pby + i] == _bufferBase[pby + i - distance]; i++);
return i;
}
public UInt32 GetNumAvailableBytes() { return _streamPos - _pos; }
public void ReduceOffsets(Int32 subValue)
{
_bufferOffset += (UInt32)subValue;
_posLimit -= (UInt32)subValue;
_pos -= (UInt32)subValue;
_streamPos -= (UInt32)subValue;
}
}
}
================================================
FILE: AssetStudio/7zip/Compress/LZ/LzOutWindow.cs
================================================
// LzOutWindow.cs
namespace SevenZip.Compression.LZ
{
public class OutWindow
{
byte[] _buffer = null;
uint _pos;
uint _windowSize = 0;
uint _streamPos;
System.IO.Stream _stream;
public uint TrainSize = 0;
public void Create(uint windowSize)
{
if (_windowSize != windowSize)
{
// System.GC.Collect();
_buffer = new byte[windowSize];
}
_windowSize = windowSize;
_pos = 0;
_streamPos = 0;
}
public void Init(System.IO.Stream stream, bool solid)
{
ReleaseStream();
_stream = stream;
if (!solid)
{
_streamPos = 0;
_pos = 0;
TrainSize = 0;
}
}
public bool Train(System.IO.Stream stream)
{
long len = stream.Length;
uint size = (len < _windowSize) ? (uint)len : _windowSize;
TrainSize = size;
stream.Position = len - size;
_streamPos = _pos = 0;
while (size > 0)
{
uint curSize = _windowSize - _pos;
if (size < curSize)
curSize = size;
int numReadBytes = stream.Read(_buffer, (int)_pos, (int)curSize);
if (numReadBytes == 0)
return false;
size -= (uint)numReadBytes;
_pos += (uint)numReadBytes;
_streamPos += (uint)numReadBytes;
if (_pos == _windowSize)
_streamPos = _pos = 0;
}
return true;
}
public void ReleaseStream()
{
Flush();
_stream = null;
}
public void Flush()
{
uint size = _pos - _streamPos;
if (size == 0)
return;
_stream.Write(_buffer, (int)_streamPos, (int)size);
if (_pos >= _windowSize)
_pos = 0;
_streamPos = _pos;
}
public void CopyBlock(uint distance, uint len)
{
uint pos = _pos - distance - 1;
if (pos >= _windowSize)
pos += _windowSize;
for (; len > 0; len--)
{
if (pos >= _windowSize)
pos = 0;
_buffer[_pos++] = _buffer[pos++];
if (_pos >= _windowSize)
Flush();
}
}
public void PutByte(byte b)
{
_buffer[_pos++] = b;
if (_pos >= _windowSize)
Flush();
}
public byte GetByte(uint distance)
{
uint pos = _pos - distance - 1;
if (pos >= _windowSize)
pos += _windowSize;
return _buffer[pos];
}
}
}
================================================
FILE: AssetStudio/7zip/Compress/LZMA/LzmaBase.cs
================================================
// LzmaBase.cs
namespace SevenZip.Compression.LZMA
{
internal abstract class Base
{
public const uint kNumRepDistances = 4;
public const uint kNumStates = 12;
// static byte []kLiteralNextStates = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5};
// static byte []kMatchNextStates = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10};
// static byte []kRepNextStates = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11};
// static byte []kShortRepNextStates = {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11};
public struct State
{
public uint Index;
public void Init() { Index = 0; }
public void UpdateChar()
{
if (Index < 4) Index = 0;
else if (Index < 10) Index -= 3;
else Index -= 6;
}
public void UpdateMatch() { Index = (uint)(Index < 7 ? 7 : 10); }
public void UpdateRep() { Index = (uint)(Index < 7 ? 8 : 11); }
public void UpdateShortRep() { Index = (uint)(Index < 7 ? 9 : 11); }
public bool IsCharState() { return Index < 7; }
}
public const int kNumPosSlotBits = 6;
public const int kDicLogSizeMin = 0;
// public const int kDicLogSizeMax = 30;
// public const uint kDistTableSizeMax = kDicLogSizeMax * 2;
public const int kNumLenToPosStatesBits = 2; // it's for speed optimization
public const uint kNumLenToPosStates = 1 << kNumLenToPosStatesBits;
public const uint kMatchMinLen = 2;
public static uint GetLenToPosState(uint len)
{
len -= kMatchMinLen;
if (len < kNumLenToPosStates)
return len;
return (uint)(kNumLenToPosStates - 1);
}
public const int kNumAlignBits = 4;
public const uint kAlignTableSize = 1 << kNumAlignBits;
public const uint kAlignMask = (kAlignTableSize - 1);
public const uint kStartPosModelIndex = 4;
public const uint kEndPosModelIndex = 14;
public const uint kNumPosModels = kEndPosModelIndex - kStartPosModelIndex;
public const uint kNumFullDistances = 1 << ((int)kEndPosModelIndex / 2);
public const uint kNumLitPosStatesBitsEncodingMax = 4;
public const uint kNumLitContextBitsMax = 8;
public const int kNumPosStatesBitsMax = 4;
public const uint kNumPosStatesMax = (1 << kNumPosStatesBitsMax);
public const int kNumPosStatesBitsEncodingMax = 4;
public const uint kNumPosStatesEncodingMax = (1 << kNumPosStatesBitsEncodingMax);
public const int kNumLowLenBits = 3;
public const int kNumMidLenBits = 3;
public const int kNumHighLenBits = 8;
public const uint kNumLowLenSymbols = 1 << kNumLowLenBits;
public const uint kNumMidLenSymbols = 1 << kNumMidLenBits;
public const uint kNumLenSymbols = kNumLowLenSymbols + kNumMidLenSymbols +
(1 << kNumHighLenBits);
public const uint kMatchMaxLen = kMatchMinLen + kNumLenSymbols - 1;
}
}
================================================
FILE: AssetStudio/7zip/Compress/LZMA/LzmaDecoder.cs
================================================
// LzmaDecoder.cs
using System;
namespace SevenZip.Compression.LZMA
{
using RangeCoder;
public class Decoder : ICoder, ISetDecoderProperties // ,System.IO.Stream
{
class LenDecoder
{
BitDecoder m_Choice = new BitDecoder();
BitDecoder m_Choice2 = new BitDecoder();
BitTreeDecoder[] m_LowCoder = new BitTreeDecoder[Base.kNumPosStatesMax];
BitTreeDecoder[] m_MidCoder = new BitTreeDecoder[Base.kNumPosStatesMax];
BitTreeDecoder m_HighCoder = new BitTreeDecoder(Base.kNumHighLenBits);
uint m_NumPosStates = 0;
public void Create(uint numPosStates)
{
for (uint posState = m_NumPosStates; posState < numPosStates; posState++)
{
m_LowCoder[posState] = new BitTreeDecoder(Base.kNumLowLenBits);
m_MidCoder[posState] = new BitTreeDecoder(Base.kNumMidLenBits);
}
m_NumPosStates = numPosStates;
}
public void Init()
{
m_Choice.Init();
for (uint posState = 0; posState < m_NumPosStates; posState++)
{
m_LowCoder[posState].Init();
m_MidCoder[posState].Init();
}
m_Choice2.Init();
m_HighCoder.Init();
}
public uint Decode(RangeCoder.Decoder rangeDecoder, uint posState)
{
if (m_Choice.Decode(rangeDecoder) == 0)
return m_LowCoder[posState].Decode(rangeDecoder);
else
{
uint symbol = Base.kNumLowLenSymbols;
if (m_Choice2.Decode(rangeDecoder) == 0)
symbol += m_MidCoder[posState].Decode(rangeDecoder);
else
{
symbol += Base.kNumMidLenSymbols;
symbol += m_HighCoder.Decode(rangeDecoder);
}
return symbol;
}
}
}
class LiteralDecoder
{
struct Decoder2
{
BitDecoder[] m_Decoders;
public void Create() { m_Decoders = new BitDecoder[0x300]; }
public void Init() { for (int i = 0; i < 0x300; i++) m_Decoders[i].Init(); }
public byte DecodeNormal(RangeCoder.Decoder rangeDecoder)
{
uint symbol = 1;
do
symbol = (symbol << 1) | m_Decoders[symbol].Decode(rangeDecoder);
while (symbol < 0x100);
return (byte)symbol;
}
public byte DecodeWithMatchByte(RangeCoder.Decoder rangeDecoder, byte matchByte)
{
uint symbol = 1;
do
{
uint matchBit = (uint)(matchByte >> 7) & 1;
matchByte <<= 1;
uint bit = m_Decoders[((1 + matchBit) << 8) + symbol].Decode(rangeDecoder);
symbol = (symbol << 1) | bit;
if (matchBit != bit)
{
while (symbol < 0x100)
symbol = (symbol << 1) | m_Decoders[symbol].Decode(rangeDecoder);
break;
}
}
while (symbol < 0x100);
return (byte)symbol;
}
}
Decoder2[] m_Coders;
int m_NumPrevBits;
int m_NumPosBits;
uint m_PosMask;
public void Create(int numPosBits, int numPrevBits)
{
if (m_Coders != null && m_NumPrevBits == numPrevBits &&
m_NumPosBits == numPosBits)
return;
m_NumPosBits = numPosBits;
m_PosMask = ((uint)1 << numPosBits) - 1;
m_NumPrevBits = numPrevBits;
uint numStates = (uint)1 << (m_NumPrevBits + m_NumPosBits);
m_Coders = new Decoder2[numStates];
for (uint i = 0; i < numStates; i++)
m_Coders[i].Create();
}
public void Init()
{
uint numStates = (uint)1 << (m_NumPrevBits + m_NumPosBits);
for (uint i = 0; i < numStates; i++)
m_Coders[i].Init();
}
uint GetState(uint pos, byte prevByte)
{ return ((pos & m_PosMask) << m_NumPrevBits) + (uint)(prevByte >> (8 - m_NumPrevBits)); }
public byte DecodeNormal(RangeCoder.Decoder rangeDecoder, uint pos, byte prevByte)
{ return m_Coders[GetState(pos, prevByte)].DecodeNormal(rangeDecoder); }
public byte DecodeWithMatchByte(RangeCoder.Decoder rangeDecoder, uint pos, byte prevByte, byte matchByte)
{ return m_Coders[GetState(pos, prevByte)].DecodeWithMatchByte(rangeDecoder, matchByte); }
};
LZ.OutWindow m_OutWindow = new LZ.OutWindow();
RangeCoder.Decoder m_RangeDecoder = new RangeCoder.Decoder();
BitDecoder[] m_IsMatchDecoders = new BitDecoder[Base.kNumStates << Base.kNumPosStatesBitsMax];
BitDecoder[] m_IsRepDecoders = new BitDecoder[Base.kNumStates];
BitDecoder[] m_IsRepG0Decoders = new BitDecoder[Base.kNumStates];
BitDecoder[] m_IsRepG1Decoders = new BitDecoder[Base.kNumStates];
BitDecoder[] m_IsRepG2Decoders = new BitDecoder[Base.kNumStates];
BitDecoder[] m_IsRep0LongDecoders = new BitDecoder[Base.kNumStates << Base.kNumPosStatesBitsMax];
BitTreeDecoder[] m_PosSlotDecoder = new BitTreeDecoder[Base.kNumLenToPosStates];
BitDecoder[] m_PosDecoders = new BitDecoder[Base.kNumFullDistances - Base.kEndPosModelIndex];
BitTreeDecoder m_PosAlignDecoder = new BitTreeDecoder(Base.kNumAlignBits);
LenDecoder m_LenDecoder = new LenDecoder();
LenDecoder m_RepLenDecoder = new LenDecoder();
LiteralDecoder m_LiteralDecoder = new LiteralDecoder();
uint m_DictionarySize;
uint m_DictionarySizeCheck;
uint m_PosStateMask;
public Decoder()
{
m_DictionarySize = 0xFFFFFFFF;
for (int i = 0; i < Base.kNumLenToPosStates; i++)
m_PosSlotDecoder[i] = new BitTreeDecoder(Base.kNumPosSlotBits);
}
void SetDictionarySize(uint dictionarySize)
{
if (m_DictionarySize != dictionarySize)
{
m_DictionarySize = dictionarySize;
m_DictionarySizeCheck = Math.Max(m_DictionarySize, 1);
uint blockSize = Math.Max(m_DictionarySizeCheck, (1 << 12));
m_OutWindow.Create(blockSize);
}
}
void SetLiteralProperties(int lp, int lc)
{
if (lp > 8)
throw new InvalidParamException();
if (lc > 8)
throw new InvalidParamException();
m_LiteralDecoder.Create(lp, lc);
}
void SetPosBitsProperties(int pb)
{
if (pb > Base.kNumPosStatesBitsMax)
throw new InvalidParamException();
uint numPosStates = (uint)1 << pb;
m_LenDecoder.Create(numPosStates);
m_RepLenDecoder.Create(numPosStates);
m_PosStateMask = numPosStates - 1;
}
bool _solid = false;
void Init(System.IO.Stream inStream, System.IO.Stream outStream)
{
m_RangeDecoder.Init(inStream);
m_OutWindow.Init(outStream, _solid);
uint i;
for (i = 0; i < Base.kNumStates; i++)
{
for (uint j = 0; j <= m_PosStateMask; j++)
{
uint index = (i << Base.kNumPosStatesBitsMax) + j;
m_IsMatchDecoders[index].Init();
m_IsRep0LongDecoders[index].Init();
}
m_IsRepDecoders[i].Init();
m_IsRepG0Decoders[i].Init();
m_IsRepG1Decoders[i].Init();
m_IsRepG2Decoders[i].Init();
}
m_LiteralDecoder.Init();
for (i = 0; i < Base.kNumLenToPosStates; i++)
m_PosSlotDecoder[i].Init();
// m_PosSpecDecoder.Init();
for (i = 0; i < Base.kNumFullDistances - Base.kEndPosModelIndex; i++)
m_PosDecoders[i].Init();
m_LenDecoder.Init();
m_RepLenDecoder.Init();
m_PosAlignDecoder.Init();
}
public void Code(System.IO.Stream inStream, System.IO.Stream outStream,
Int64 inSize, Int64 outSize, ICodeProgress progress)
{
Init(inStream, outStream);
Base.State state = new Base.State();
state.Init();
uint rep0 = 0, rep1 = 0, rep2 = 0, rep3 = 0;
UInt64 nowPos64 = 0;
UInt64 outSize64 = (UInt64)outSize;
if (nowPos64 < outSize64)
{
if (m_IsMatchDecoders[state.Index << Base.kNumPosStatesBitsMax].Decode(m_RangeDecoder) != 0)
throw new DataErrorException();
state.UpdateChar();
byte b = m_LiteralDecoder.DecodeNormal(m_RangeDecoder, 0, 0);
m_OutWindow.PutByte(b);
nowPos64++;
}
while (nowPos64 < outSize64)
{
// UInt64 next = Math.Min(nowPos64 + (1 << 18), outSize64);
// while(nowPos64 < next)
{
uint posState = (uint)nowPos64 & m_PosStateMask;
if (m_IsMatchDecoders[(state.Index << Base.kNumPosStatesBitsMax) + posState].Decode(m_RangeDecoder) == 0)
{
byte b;
byte prevByte = m_OutWindow.GetByte(0);
if (!state.IsCharState())
b = m_LiteralDecoder.DecodeWithMatchByte(m_RangeDecoder,
(uint)nowPos64, prevByte, m_OutWindow.GetByte(rep0));
else
b = m_LiteralDecoder.DecodeNormal(m_RangeDecoder, (uint)nowPos64, prevByte);
m_OutWindow.PutByte(b);
state.UpdateChar();
nowPos64++;
}
else
{
uint len;
if (m_IsRepDecoders[state.Index].Decode(m_RangeDecoder) == 1)
{
if (m_IsRepG0Decoders[state.Index].Decode(m_RangeDecoder) == 0)
{
if (m_IsRep0LongDecoders[(state.Index << Base.kNumPosStatesBitsMax) + posState].Decode(m_RangeDecoder) == 0)
{
state.UpdateShortRep();
m_OutWindow.PutByte(m_OutWindow.GetByte(rep0));
nowPos64++;
continue;
}
}
else
{
UInt32 distance;
if (m_IsRepG1Decoders[state.Index].Decode(m_RangeDecoder) == 0)
{
distance = rep1;
}
else
{
if (m_IsRepG2Decoders[state.Index].Decode(m_RangeDecoder) == 0)
distance = rep2;
else
{
distance = rep3;
rep3 = rep2;
}
rep2 = rep1;
}
rep1 = rep0;
rep0 = distance;
}
len = m_RepLenDecoder.Decode(m_RangeDecoder, posState) + Base.kMatchMinLen;
state.UpdateRep();
}
else
{
rep3 = rep2;
rep2 = rep1;
rep1 = rep0;
len = Base.kMatchMinLen + m_LenDecoder.Decode(m_RangeDecoder, posState);
state.UpdateMatch();
uint posSlot = m_PosSlotDecoder[Base.GetLenToPosState(len)].Decode(m_RangeDecoder);
if (posSlot >= Base.kStartPosModelIndex)
{
int numDirectBits = (int)((posSlot >> 1) - 1);
rep0 = ((2 | (posSlot & 1)) << numDirectBits);
if (posSlot < Base.kEndPosModelIndex)
rep0 += BitTreeDecoder.ReverseDecode(m_PosDecoders,
rep0 - posSlot - 1, m_RangeDecoder, numDirectBits);
else
{
rep0 += (m_RangeDecoder.DecodeDirectBits(
numDirectBits - Base.kNumAlignBits) << Base.kNumAlignBits);
rep0 += m_PosAlignDecoder.ReverseDecode(m_RangeDecoder);
}
}
else
rep0 = posSlot;
}
if (rep0 >= m_OutWindow.TrainSize + nowPos64 || rep0 >= m_DictionarySizeCheck)
{
if (rep0 == 0xFFFFFFFF)
break;
throw new DataErrorException();
}
m_OutWindow.CopyBlock(rep0, len);
nowPos64 += len;
}
}
}
m_OutWindow.Flush();
m_OutWindow.ReleaseStream();
m_RangeDecoder.ReleaseStream();
}
public void SetDecoderProperties(byte[] properties)
{
if (properties.Length < 5)
throw new InvalidParamException();
int lc = properties[0] % 9;
int remainder = properties[0] / 9;
int lp = remainder % 5;
int pb = remainder / 5;
if (pb > Base.kNumPosStatesBitsMax)
throw new InvalidParamException();
UInt32 dictionarySize = 0;
for (int i = 0; i < 4; i++)
dictionarySize += ((UInt32)(properties[1 + i])) << (i * 8);
SetDictionarySize(dictionarySize);
SetLiteralProperties(lp, lc);
SetPosBitsProperties(pb);
}
public bool Train(System.IO.Stream stream)
{
_solid = true;
return m_OutWindow.Train(stream);
}
/*
public override bool CanRead { get { return true; }}
public override bool CanWrite { get { return true; }}
public override bool CanSeek { get { return true; }}
public override long Length { get { return 0; }}
public override long Position
{
get { return 0; }
set { }
}
public override void Flush() { }
public override int Read(byte[] buffer, int offset, int count)
{
return 0;
}
public override void Write(byte[] buffer, int offset, int count)
{
}
public override long Seek(long offset, System.IO.SeekOrigin origin)
{
return 0;
}
public override void SetLength(long value) {}
*/
}
}
================================================
FILE: AssetStudio/7zip/Compress/LZMA/LzmaEncoder.cs
================================================
// LzmaEncoder.cs
using System;
namespace SevenZip.Compression.LZMA
{
using RangeCoder;
public class Encoder : ICoder, ISetCoderProperties, IWriteCoderProperties
{
enum EMatchFinderType
{
BT2,
BT4,
};
const UInt32 kIfinityPrice = 0xFFFFFFF;
static Byte[] g_FastPos = new Byte[1 << 11];
static Encoder()
{
const Byte kFastSlots = 22;
int c = 2;
g_FastPos[0] = 0;
g_FastPos[1] = 1;
for (Byte slotFast = 2; slotFast < kFastSlots; slotFast++)
{
UInt32 k = ((UInt32)1 << ((slotFast >> 1) - 1));
for (UInt32 j = 0; j < k; j++, c++)
g_FastPos[c] = slotFast;
}
}
static UInt32 GetPosSlot(UInt32 pos)
{
if (pos < (1 << 11))
return g_FastPos[pos];
if (pos < (1 << 21))
return (UInt32)(g_FastPos[pos >> 10] + 20);
return (UInt32)(g_FastPos[pos >> 20] + 40);
}
static UInt32 GetPosSlot2(UInt32 pos)
{
if (pos < (1 << 17))
return (UInt32)(g_FastPos[pos >> 6] + 12);
if (pos < (1 << 27))
return (UInt32)(g_FastPos[pos >> 16] + 32);
return (UInt32)(g_FastPos[pos >> 26] + 52);
}
Base.State _state = new Base.State();
Byte _previousByte;
UInt32[] _repDistances = new UInt32[Base.kNumRepDistances];
void BaseInit()
{
_state.Init();
_previousByte = 0;
for (UInt32 i = 0; i < Base.kNumRepDistances; i++)
_repDistances[i] = 0;
}
const int kDefaultDictionaryLogSize = 22;
const UInt32 kNumFastBytesDefault = 0x20;
class LiteralEncoder
{
public struct Encoder2
{
BitEncoder[] m_Encoders;
public void Create() { m_Encoders = new BitEncoder[0x300]; }
public void Init() { for (int i = 0; i < 0x300; i++) m_Encoders[i].Init(); }
public void Encode(RangeCoder.Encoder rangeEncoder, byte symbol)
{
uint context = 1;
for (int i = 7; i >= 0; i--)
{
uint bit = (uint)((symbol >> i) & 1);
m_Encoders[context].Encode(rangeEncoder, bit);
context = (context << 1) | bit;
}
}
public void EncodeMatched(RangeCoder.Encoder rangeEncoder, byte matchByte, byte symbol)
{
uint context = 1;
bool same = true;
for (int i = 7; i >= 0; i--)
{
uint bit = (uint)((symbol >> i) & 1);
uint state = context;
if (same)
{
uint matchBit = (uint)((matchByte >> i) & 1);
state += ((1 + matchBit) << 8);
same = (matchBit == bit);
}
m_Encoders[state].Encode(rangeEncoder, bit);
context = (context << 1) | bit;
}
}
public uint GetPrice(bool matchMode, byte matchByte, byte symbol)
{
uint price = 0;
uint context = 1;
int i = 7;
if (matchMode)
{
for (; i >= 0; i--)
{
uint matchBit = (uint)(matchByte >> i) & 1;
uint bit = (uint)(symbol >> i) & 1;
price += m_Encoders[((1 + matchBit) << 8) + context].GetPrice(bit);
context = (context << 1) | bit;
if (matchBit != bit)
{
i--;
break;
}
}
}
for (; i >= 0; i--)
{
uint bit = (uint)(symbol >> i) & 1;
price += m_Encoders[context].GetPrice(bit);
context = (context << 1) | bit;
}
return price;
}
}
Encoder2[] m_Coders;
int m_NumPrevBits;
int m_NumPosBits;
uint m_PosMask;
public void Create(int numPosBits, int numPrevBits)
{
if (m_Coders != null && m_NumPrevBits == numPrevBits && m_NumPosBits == numPosBits)
return;
m_NumPosBits = numPosBits;
m_PosMask = ((uint)1 << numPosBits) - 1;
m_NumPrevBits = numPrevBits;
uint numStates = (uint)1 << (m_NumPrevBits + m_NumPosBits);
m_Coders = new Encoder2[numStates];
for (uint i = 0; i < numStates; i++)
m_Coders[i].Create();
}
public void Init()
{
uint numStates = (uint)1 << (m_NumPrevBits + m_NumPosBits);
for (uint i = 0; i < numStates; i++)
m_Coders[i].Init();
}
public Encoder2 GetSubCoder(UInt32 pos, Byte prevByte)
{ return m_Coders[((pos & m_PosMask) << m_NumPrevBits) + (uint)(prevByte >> (8 - m_NumPrevBits))]; }
}
class LenEncoder
{
RangeCoder.BitEncoder _choice = new RangeCoder.BitEncoder();
RangeCoder.BitEncoder _choice2 = new RangeCoder.BitEncoder();
RangeCoder.BitTreeEncoder[] _lowCoder = new RangeCoder.BitTreeEncoder[Base.kNumPosStatesEncodingMax];
RangeCoder.BitTreeEncoder[] _midCoder = new RangeCoder.BitTreeEncoder[Base.kNumPosStatesEncodingMax];
RangeCoder.BitTreeEncoder _highCoder = new RangeCoder.BitTreeEncoder(Base.kNumHighLenBits);
public LenEncoder()
{
for (UInt32 posState = 0; posState < Base.kNumPosStatesEncodingMax; posState++)
{
_lowCoder[posState] = new RangeCoder.BitTreeEncoder(Base.kNumLowLenBits);
_midCoder[posState] = new RangeCoder.BitTreeEncoder(Base.kNumMidLenBits);
}
}
public void Init(UInt32 numPosStates)
{
_choice.Init();
_choice2.Init();
for (UInt32 posState = 0; posState < numPosStates; posState++)
{
_lowCoder[posState].Init();
_midCoder[posState].Init();
}
_highCoder.Init();
}
public void Encode(RangeCoder.Encoder rangeEncoder, UInt32 symbol, UInt32 posState)
{
if (symbol < Base.kNumLowLenSymbols)
{
_choice.Encode(rangeEncoder, 0);
_lowCoder[posState].Encode(rangeEncoder, symbol);
}
else
{
symbol -= Base.kNumLowLenSymbols;
_choice.Encode(rangeEncoder, 1);
if (symbol < Base.kNumMidLenSymbols)
{
_choice2.Encode(rangeEncoder, 0);
_midCoder[posState].Encode(rangeEncoder, symbol);
}
else
{
_choice2.Encode(rangeEncoder, 1);
_highCoder.Encode(rangeEncoder, symbol - Base.kNumMidLenSymbols);
}
}
}
public void SetPrices(UInt32 posState, UInt32 numSymbols, UInt32[] prices, UInt32 st)
{
UInt32 a0 = _choice.GetPrice0();
UInt32 a1 = _choice.GetPrice1();
UInt32 b0 = a1 + _choice2.GetPrice0();
UInt32 b1 = a1 + _choice2.GetPrice1();
UInt32 i = 0;
for (i = 0; i < Base.kNumLowLenSymbols; i++)
{
if (i >= numSymbols)
return;
prices[st + i] = a0 + _lowCoder[posState].GetPrice(i);
}
for (; i < Base.kNumLowLenSymbols + Base.kNumMidLenSymbols; i++)
{
if (i >= numSymbols)
return;
prices[st + i] = b0 + _midCoder[posState].GetPrice(i - Base.kNumLowLenSymbols);
}
for (; i < numSymbols; i++)
prices[st + i] = b1 + _highCoder.GetPrice(i - Base.kNumLowLenSymbols - Base.kNumMidLenSymbols);
}
};
const UInt32 kNumLenSpecSymbols = Base.kNumLowLenSymbols + Base.kNumMidLenSymbols;
class LenPriceTableEncoder : LenEncoder
{
UInt32[] _prices = new UInt32[Base.kNumLenSymbols << Base.kNumPosStatesBitsEncodingMax];
UInt32 _tableSize;
UInt32[] _counters = new UInt32[Base.kNumPosStatesEncodingMax];
public void SetTableSize(UInt32 tableSize) { _tableSize = tableSize; }
public UInt32 GetPrice(UInt32 symbol, UInt32 posState)
{
return _prices[posState * Base.kNumLenSymbols + symbol];
}
void UpdateTable(UInt32 posState)
{
SetPrices(posState, _tableSize, _prices, posState * Base.kNumLenSymbols);
_counters[posState] = _tableSize;
}
public void UpdateTables(UInt32 numPosStates)
{
for (UInt32 posState = 0; posState < numPosStates; posState++)
UpdateTable(posState);
}
public new void Encode(RangeCoder.Encoder rangeEncoder, UInt32 symbol, UInt32 posState)
{
base.Encode(rangeEncoder, symbol, posState);
if (--_counters[posState] == 0)
UpdateTable(posState);
}
}
const UInt32 kNumOpts = 1 << 12;
class Optimal
{
public Base.State State;
public bool Prev1IsChar;
public bool Prev2;
public UInt32 PosPrev2;
public UInt32 BackPrev2;
public UInt32 Price;
public UInt32 PosPrev;
public UInt32 BackPrev;
public UInt32 Backs0;
public UInt32 Backs1;
public UInt32 Backs2;
public UInt32 Backs3;
public void MakeAsChar() { BackPrev = 0xFFFFFFFF; Prev1IsChar = false; }
public void MakeAsShortRep() { BackPrev = 0; ; Prev1IsChar = false; }
public bool IsShortRep() { return (BackPrev == 0); }
};
Optimal[] _optimum = new Optimal[kNumOpts];
LZ.IMatchFinder _matchFinder = null;
RangeCoder.Encoder _rangeEncoder = new RangeCoder.Encoder();
RangeCoder.BitEncoder[] _isMatch = new RangeCoder.BitEncoder[Base.kNumStates << Base.kNumPosStatesBitsMax];
RangeCoder.BitEncoder[] _isRep = new RangeCoder.BitEncoder[Base.kNumStates];
RangeCoder.BitEncoder[] _isRepG0 = new RangeCoder.BitEncoder[Base.kNumStates];
RangeCoder.BitEncoder[] _isRepG1 = new RangeCoder.BitEncoder[Base.kNumStates];
RangeCoder.BitEncoder[] _isRepG2 = new RangeCoder.BitEncoder[Base.kNumStates];
RangeCoder.BitEncoder[] _isRep0Long = new RangeCoder.BitEncoder[Base.kNumStates << Base.kNumPosStatesBitsMax];
RangeCoder.BitTreeEncoder[] _posSlotEncoder = new RangeCoder.BitTreeEncoder[Base.kNumLenToPosStates];
RangeCoder.BitEncoder[] _posEncoders = new RangeCoder.BitEncoder[Base.kNumFullDistances - Base.kEndPosModelIndex];
RangeCoder.BitTreeEncoder _posAlignEncoder = new RangeCoder.BitTreeEncoder(Base.kNumAlignBits);
LenPriceTableEncoder _lenEncoder = new LenPriceTableEncoder();
LenPriceTableEncoder _repMatchLenEncoder = new LenPriceTableEncoder();
LiteralEncoder _literalEncoder = new LiteralEncoder();
UInt32[] _matchDistances = new UInt32[Base.kMatchMaxLen * 2 + 2];
UInt32 _numFastBytes = kNumFastBytesDefault;
UInt32 _longestMatchLength;
UInt32 _numDistancePairs;
UInt32 _additionalOffset;
UInt32 _optimumEndIndex;
UInt32 _optimumCurrentIndex;
bool _longestMatchWasFound;
UInt32[] _posSlotPrices = new UInt32[1 << (Base.kNumPosSlotBits + Base.kNumLenToPosStatesBits)];
UInt32[] _distancesPrices = new UInt32[Base.kNumFullDistances << Base.kNumLenToPosStatesBits];
UInt32[] _alignPrices = new UInt32[Base.kAlignTableSize];
UInt32 _alignPriceCount;
UInt32 _distTableSize = (kDefaultDictionaryLogSize * 2);
int _posStateBits = 2;
UInt32 _posStateMask = (4 - 1);
int _numLiteralPosStateBits = 0;
int _numLiteralContextBits = 3;
UInt32 _dictionarySize = (1 << kDefaultDictionaryLogSize);
UInt32 _dictionarySizePrev = 0xFFFFFFFF;
UInt32 _numFastBytesPrev = 0xFFFFFFFF;
Int64 nowPos64;
bool _finished;
System.IO.Stream _inStream;
EMatchFinderType _matchFinderType = EMatchFinderType.BT4;
bool _writeEndMark = false;
bool _needReleaseMFStream;
void Create()
{
if (_matchFinder == null)
{
LZ.BinTree bt = new LZ.BinTree();
int numHashBytes = 4;
if (_matchFinderType == EMatchFinderType.BT2)
numHashBytes = 2;
bt.SetType(numHashBytes);
_matchFinder = bt;
}
_literalEncoder.Create(_numLiteralPosStateBits, _numLiteralContextBits);
if (_dictionarySize == _dictionarySizePrev && _numFastBytesPrev == _numFastBytes)
return;
_matchFinder.Create(_dictionarySize, kNumOpts, _numFastBytes, Base.kMatchMaxLen + 1);
_dictionarySizePrev = _dictionarySize;
_numFastBytesPrev = _numFastBytes;
}
public Encoder()
{
for (int i = 0; i < kNumOpts; i++)
_optimum[i] = new Optimal();
for (int i = 0; i < Base.kNumLenToPosStates; i++)
_posSlotEncoder[i] = new RangeCoder.BitTreeEncoder(Base.kNumPosSlotBits);
}
void SetWriteEndMarkerMode(bool writeEndMarker)
{
_writeEndMark = writeEndMarker;
}
void Init()
{
BaseInit();
_rangeEncoder.Init();
uint i;
for (i = 0; i < Base.kNumStates; i++)
{
for (uint j = 0; j <= _posStateMask; j++)
{
uint complexState = (i << Base.kNumPosStatesBitsMax) + j;
_isMatch[complexState].Init();
_isRep0Long[complexState].Init();
}
_isRep[i].Init();
_isRepG0[i].Init();
_isRepG1[i].Init();
_isRepG2[i].Init();
}
_literalEncoder.Init();
for (i = 0; i < Base.kNumLenToPosStates; i++)
_posSlotEncoder[i].Init();
for (i = 0; i < Base.kNumFullDistances - Base.kEndPosModelIndex; i++)
_posEncoders[i].Init();
_lenEncoder.Init((UInt32)1 << _posStateBits);
_repMatchLenEncoder.Init((UInt32)1 << _posStateBits);
_posAlignEncoder.Init();
_longestMatchWasFound = false;
_optimumEndIndex = 0;
_optimumCurrentIndex = 0;
_additionalOffset = 0;
}
void ReadMatchDistances(out UInt32 lenRes, out UInt32 numDistancePairs)
{
lenRes = 0;
numDistancePairs = _matchFinder.GetMatches(_matchDistances);
if (numDistancePairs > 0)
{
lenRes = _matchDistances[numDistancePairs - 2];
if (lenRes == _numFastBytes)
lenRes += _matchFinder.GetMatchLen((int)lenRes - 1, _matchDistances[numDistancePairs - 1],
Base.kMatchMaxLen - lenRes);
}
_additionalOffset++;
}
void MovePos(UInt32 num)
{
if (num > 0)
{
_matchFinder.Skip(num);
_additionalOffset += num;
}
}
UInt32 GetRepLen1Price(Base.State state, UInt32 posState)
{
return _isRepG0[state.Index].GetPrice0() +
_isRep0Long[(state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice0();
}
UInt32 GetPureRepPrice(UInt32 repIndex, Base.State state, UInt32 posState)
{
UInt32 price;
if (repIndex == 0)
{
price = _isRepG0[state.Index].GetPrice0();
price += _isRep0Long[(state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice1();
}
else
{
price = _isRepG0[state.Index].GetPrice1();
if (repIndex == 1)
price += _isRepG1[state.Index].GetPrice0();
else
{
price += _isRepG1[state.Index].GetPrice1();
price += _isRepG2[state.Index].GetPrice(repIndex - 2);
}
}
return price;
}
UInt32 GetRepPrice(UInt32 repIndex, UInt32 len, Base.State state, UInt32 posState)
{
UInt32 price = _repMatchLenEncoder.GetPrice(len - Base.kMatchMinLen, posState);
return price + GetPureRepPrice(repIndex, state, posState);
}
UInt32 GetPosLenPrice(UInt32 pos, UInt32 len, UInt32 posState)
{
UInt32 price;
UInt32 lenToPosState = Base.GetLenToPosState(len);
if (pos < Base.kNumFullDistances)
price = _distancesPrices[(lenToPosState * Base.kNumFullDistances) + pos];
else
price = _posSlotPrices[(lenToPosState << Base.kNumPosSlotBits) + GetPosSlot2(pos)] +
_alignPrices[pos & Base.kAlignMask];
return price + _lenEncoder.GetPrice(len - Base.kMatchMinLen, posState);
}
UInt32 Backward(out UInt32 backRes, UInt32 cur)
{
_optimumEndIndex = cur;
UInt32 posMem = _optimum[cur].PosPrev;
UInt32 backMem = _optimum[cur].BackPrev;
do
{
if (_optimum[cur].Prev1IsChar)
{
_optimum[posMem].MakeAsChar();
_optimum[posMem].PosPrev = posMem - 1;
if (_optimum[cur].Prev2)
{
_optimum[posMem - 1].Prev1IsChar = false;
_optimum[posMem - 1].PosPrev = _optimum[cur].PosPrev2;
_optimum[posMem - 1].BackPrev = _optimum[cur].BackPrev2;
}
}
UInt32 posPrev = posMem;
UInt32 backCur = backMem;
backMem = _optimum[posPrev].BackPrev;
posMem = _optimum[posPrev].PosPrev;
_optimum[posPrev].BackPrev = backCur;
_optimum[posPrev].PosPrev = cur;
cur = posPrev;
}
while (cur > 0);
backRes = _optimum[0].BackPrev;
_optimumCurrentIndex = _optimum[0].PosPrev;
return _optimumCurrentIndex;
}
UInt32[] reps = new UInt32[Base.kNumRepDistances];
UInt32[] repLens = new UInt32[Base.kNumRepDistances];
UInt32 GetOptimum(UInt32 position, out UInt32 backRes)
{
if (_optimumEndIndex != _optimumCurrentIndex)
{
UInt32 lenRes = _optimum[_optimumCurrentIndex].PosPrev - _optimumCurrentIndex;
backRes = _optimum[_optimumCurrentIndex].BackPrev;
_optimumCurrentIndex = _optimum[_optimumCurrentIndex].PosPrev;
return lenRes;
}
_optimumCurrentIndex = _optimumEndIndex = 0;
UInt32 lenMain, numDistancePairs;
if (!_longestMatchWasFound)
{
ReadMatchDistances(out lenMain, out numDistancePairs);
}
else
{
lenMain = _longestMatchLength;
numDistancePairs = _numDistancePairs;
_longestMatchWasFound = false;
}
UInt32 numAvailableBytes = _matchFinder.GetNumAvailableBytes() + 1;
if (numAvailableBytes < 2)
{
backRes = 0xFFFFFFFF;
return 1;
}
if (numAvailableBytes > Base.kMatchMaxLen)
numAvailableBytes = Base.kMatchMaxLen;
UInt32 repMaxIndex = 0;
UInt32 i;
for (i = 0; i < Base.kNumRepDistances; i++)
{
reps[i] = _repDistances[i];
repLens[i] = _matchFinder.GetMatchLen(0 - 1, reps[i], Base.kMatchMaxLen);
if (repLens[i] > repLens[repMaxIndex])
repMaxIndex = i;
}
if (repLens[repMaxIndex] >= _numFastBytes)
{
backRes = repMaxIndex;
UInt32 lenRes = repLens[repMaxIndex];
MovePos(lenRes - 1);
return lenRes;
}
if (lenMain >= _numFastBytes)
{
backRes = _matchDistances[numDistancePairs - 1] + Base.kNumRepDistances;
MovePos(lenMain - 1);
return lenMain;
}
Byte currentByte = _matchFinder.GetIndexByte(0 - 1);
Byte matchByte = _matchFinder.GetIndexByte((Int32)(0 - _repDistances[0] - 1 - 1));
if (lenMain < 2 && currentByte != matchByte && repLens[repMaxIndex] < 2)
{
backRes = (UInt32)0xFFFFFFFF;
return 1;
}
_optimum[0].State = _state;
UInt32 posState = (position & _posStateMask);
_optimum[1].Price = _isMatch[(_state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice0() +
_literalEncoder.GetSubCoder(position, _previousByte).GetPrice(!_state.IsCharState(), matchByte, currentByte);
_optimum[1].MakeAsChar();
UInt32 matchPrice = _isMatch[(_state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice1();
UInt32 repMatchPrice = matchPrice + _isRep[_state.Index].GetPrice1();
if (matchByte == currentByte)
{
UInt32 shortRepPrice = repMatchPrice + GetRepLen1Price(_state, posState);
if (shortRepPrice < _optimum[1].Price)
{
_optimum[1].Price = shortRepPrice;
_optimum[1].MakeAsShortRep();
}
}
UInt32 lenEnd = ((lenMain >= repLens[repMaxIndex]) ? lenMain : repLens[repMaxIndex]);
if(lenEnd < 2)
{
backRes = _optimum[1].BackPrev;
return 1;
}
_optimum[1].PosPrev = 0;
_optimum[0].Backs0 = reps[0];
_optimum[0].Backs1 = reps[1];
_optimum[0].Backs2 = reps[2];
_optimum[0].Backs3 = reps[3];
UInt32 len = lenEnd;
do
_optimum[len--].Price = kIfinityPrice;
while (len >= 2);
for (i = 0; i < Base.kNumRepDistances; i++)
{
UInt32 repLen = repLens[i];
if (repLen < 2)
continue;
UInt32 price = repMatchPrice + GetPureRepPrice(i, _state, posState);
do
{
UInt32 curAndLenPrice = price + _repMatchLenEncoder.GetPrice(repLen - 2, posState);
Optimal optimum = _optimum[repLen];
if (curAndLenPrice < optimum.Price)
{
optimum.Price = curAndLenPrice;
optimum.PosPrev = 0;
optimum.BackPrev = i;
optimum.Prev1IsChar = false;
}
}
while (--repLen >= 2);
}
UInt32 normalMatchPrice = matchPrice + _isRep[_state.Index].GetPrice0();
len = ((repLens[0] >= 2) ? repLens[0] + 1 : 2);
if (len <= lenMain)
{
UInt32 offs = 0;
while (len > _matchDistances[offs])
offs += 2;
for (; ; len++)
{
UInt32 distance = _matchDistances[offs + 1];
UInt32 curAndLenPrice = normalMatchPrice + GetPosLenPrice(distance, len, posState);
Optimal optimum = _optimum[len];
if (curAndLenPrice < optimum.Price)
{
optimum.Price = curAndLenPrice;
optimum.PosPrev = 0;
optimum.BackPrev = distance + Base.kNumRepDistances;
optimum.Prev1IsChar = false;
}
if (len == _matchDistances[offs])
{
offs += 2;
if (offs == numDistancePairs)
break;
}
}
}
UInt32 cur = 0;
while (true)
{
cur++;
if (cur == lenEnd)
return Backward(out backRes, cur);
UInt32 newLen;
ReadMatchDistances(out newLen, out numDistancePairs);
if (newLen >= _numFastBytes)
{
_numDistancePairs = numDistancePairs;
_longestMatchLength = newLen;
_longestMatchWasFound = true;
return Backward(out backRes, cur);
}
position++;
UInt32 posPrev = _optimum[cur].PosPrev;
Base.State state;
if (_optimum[cur].Prev1IsChar)
{
posPrev--;
if (_optimum[cur].Prev2)
{
state = _optimum[_optimum[cur].PosPrev2].State;
if (_optimum[cur].BackPrev2 < Base.kNumRepDistances)
state.UpdateRep();
else
state.UpdateMatch();
}
else
state = _optimum[posPrev].State;
state.UpdateChar();
}
else
state = _optimum[posPrev].State;
if (posPrev == cur - 1)
{
if (_optimum[cur].IsShortRep())
state.UpdateShortRep();
else
state.UpdateChar();
}
else
{
UInt32 pos;
if (_optimum[cur].Prev1IsChar && _optimum[cur].Prev2)
{
posPrev = _optimum[cur].PosPrev2;
pos = _optimum[cur].BackPrev2;
state.UpdateRep();
}
else
{
pos = _optimum[cur].BackPrev;
if (pos < Base.kNumRepDistances)
state.UpdateRep();
else
state.UpdateMatch();
}
Optimal opt = _optimum[posPrev];
if (pos < Base.kNumRepDistances)
{
if (pos == 0)
{
reps[0] = opt.Backs0;
reps[1] = opt.Backs1;
reps[2] = opt.Backs2;
reps[3] = opt.Backs3;
}
else if (pos == 1)
{
reps[0] = opt.Backs1;
reps[1] = opt.Backs0;
reps[2] = opt.Backs2;
reps[3] = opt.Backs3;
}
else if (pos == 2)
{
reps[0] = opt.Backs2;
reps[1] = opt.Backs0;
reps[2] = opt.Backs1;
reps[3] = opt.Backs3;
}
else
{
reps[0] = opt.Backs3;
reps[1] = opt.Backs0;
reps[2] = opt.Backs1;
reps[3] = opt.Backs2;
}
}
else
{
reps[0] = (pos - Base.kNumRepDistances);
reps[1] = opt.Backs0;
reps[2] = opt.Backs1;
reps[3] = opt.Backs2;
}
}
_optimum[cur].State = state;
_optimum[cur].Backs0 = reps[0];
_optimum[cur].Backs1 = reps[1];
_optimum[cur].Backs2 = reps[2];
_optimum[cur].Backs3 = reps[3];
UInt32 curPrice = _optimum[cur].Price;
currentByte = _matchFinder.GetIndexByte(0 - 1);
matchByte = _matchFinder.GetIndexByte((Int32)(0 - reps[0] - 1 - 1));
posState = (position & _posStateMask);
UInt32 curAnd1Price = curPrice +
_isMatch[(state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice0() +
_literalEncoder.GetSubCoder(position, _matchFinder.GetIndexByte(0 - 2)).
GetPrice(!state.IsCharState(), matchByte, currentByte);
Optimal nextOptimum = _optimum[cur + 1];
bool nextIsChar = false;
if (curAnd1Price < nextOptimum.Price)
{
nextOptimum.Price = curAnd1Price;
nextOptimum.PosPrev = cur;
nextOptimum.MakeAsChar();
nextIsChar = true;
}
matchPrice = curPrice + _isMatch[(state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice1();
repMatchPrice = matchPrice + _isRep[state.Index].GetPrice1();
if (matchByte == currentByte &&
!(nextOptimum.PosPrev < cur && nextOptimum.BackPrev == 0))
{
UInt32 shortRepPrice = repMatchPrice + GetRepLen1Price(state, posState);
if (shortRepPrice <= nextOptimum.Price)
{
nextOptimum.Price = shortRepPrice;
nextOptimum.PosPrev = cur;
nextOptimum.MakeAsShortRep();
nextIsChar = true;
}
}
UInt32 numAvailableBytesFull = _matchFinder.GetNumAvailableBytes() + 1;
numAvailableBytesFull = Math.Min(kNumOpts - 1 - cur, numAvailableBytesFull);
numAvailableBytes = numAvailableBytesFull;
if (numAvailableBytes < 2)
continue;
if (numAvailableBytes > _numFastBytes)
numAvailableBytes = _numFastBytes;
if (!nextIsChar && matchByte != currentByte)
{
// try Literal + rep0
UInt32 t = Math.Min(numAvailableBytesFull - 1, _numFastBytes);
UInt32 lenTest2 = _matchFinder.GetMatchLen(0, reps[0], t);
if (lenTest2 >= 2)
{
Base.State state2 = state;
state2.UpdateChar();
UInt32 posStateNext = (position + 1) & _posStateMask;
UInt32 nextRepMatchPrice = curAnd1Price +
_isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice1() +
_isRep[state2.Index].GetPrice1();
{
UInt32 offset = cur + 1 + lenTest2;
while (lenEnd < offset)
_optimum[++lenEnd].Price = kIfinityPrice;
UInt32 curAndLenPrice = nextRepMatchPrice + GetRepPrice(
0, lenTest2, state2, posStateNext);
Optimal optimum = _optimum[offset];
if (curAndLenPrice < optimum.Price)
{
optimum.Price = curAndLenPrice;
optimum.PosPrev = cur + 1;
optimum.BackPrev = 0;
optimum.Prev1IsChar = true;
optimum.Prev2 = false;
}
}
}
}
UInt32 startLen = 2; // speed optimization
for (UInt32 repIndex = 0; repIndex < Base.kNumRepDistances; repIndex++)
{
UInt32 lenTest = _matchFinder.GetMatchLen(0 - 1, reps[repIndex], numAvailableBytes);
if (lenTest < 2)
continue;
UInt32 lenTestTemp = lenTest;
do
{
while (lenEnd < cur + lenTest)
_optimum[++lenEnd].Price = kIfinityPrice;
UInt32 curAndLenPrice = repMatchPrice + GetRepPrice(repIndex, lenTest, state, posState);
Optimal optimum = _optimum[cur + lenTest];
if (curAndLenPrice < optimum.Price)
{
optimum.Price = curAndLenPrice;
optimum.PosPrev = cur;
optimum.BackPrev = repIndex;
optimum.Prev1IsChar = false;
}
}
while(--lenTest >= 2);
lenTest = lenTestTemp;
if (repIndex == 0)
startLen = lenTest + 1;
// if (_maxMode)
if (lenTest < numAvailableBytesFull)
{
UInt32 t = Math.Min(numAvailableBytesFull - 1 - lenTest, _numFastBytes);
UInt32 lenTest2 = _matchFinder.GetMatchLen((Int32)lenTest, reps[repIndex], t);
if (lenTest2 >= 2)
{
Base.State state2 = state;
state2.UpdateRep();
UInt32 posStateNext = (position + lenTest) & _posStateMask;
UInt32 curAndLenCharPrice =
repMatchPrice + GetRepPrice(repIndex, lenTest, state, posState) +
_isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice0() +
_literalEncoder.GetSubCoder(position + lenTest,
_matchFinder.GetIndexByte((Int32)lenTest - 1 - 1)).GetPrice(true,
_matchFinder.GetIndexByte((Int32)((Int32)lenTest - 1 - (Int32)(reps[repIndex] + 1))),
_matchFinder.GetIndexByte((Int32)lenTest - 1));
state2.UpdateChar();
posStateNext = (position + lenTest + 1) & _posStateMask;
UInt32 nextMatchPrice = curAndLenCharPrice + _isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice1();
UInt32 nextRepMatchPrice = nextMatchPrice + _isRep[state2.Index].GetPrice1();
// for(; lenTest2 >= 2; lenTest2--)
{
UInt32 offset = lenTest + 1 + lenTest2;
while(lenEnd < cur + offset)
_optimum[++lenEnd].Price = kIfinityPrice;
UInt32 curAndLenPrice = nextRepMatchPrice + GetRepPrice(0, lenTest2, state2, posStateNext);
Optimal optimum = _optimum[cur + offset];
if (curAndLenPrice < optimum.Price)
{
optimum.Price = curAndLenPrice;
optimum.PosPrev = cur + lenTest + 1;
optimum.BackPrev = 0;
optimum.Prev1IsChar = true;
optimum.Prev2 = true;
optimum.PosPrev2 = cur;
optimum.BackPrev2 = repIndex;
}
}
}
}
}
if (newLen > numAvailableBytes)
{
newLen = numAvailableBytes;
for (numDistancePairs = 0; newLen > _matchDistances[numDistancePairs]; numDistancePairs += 2) ;
_matchDistances[numDistancePairs] = newLen;
numDistancePairs += 2;
}
if (newLen >= startLen)
{
normalMatchPrice = matchPrice + _isRep[state.Index].GetPrice0();
while (lenEnd < cur + newLen)
_optimum[++lenEnd].Price = kIfinityPrice;
UInt32 offs = 0;
while (startLen > _matchDistances[offs])
offs += 2;
for (UInt32 lenTest = startLen; ; lenTest++)
{
UInt32 curBack = _matchDistances[offs + 1];
UInt32 curAndLenPrice = normalMatchPrice + GetPosLenPrice(curBack, lenTest, posState);
Optimal optimum = _optimum[cur + lenTest];
if (curAndLenPrice < optimum.Price)
{
optimum.Price = curAndLenPrice;
optimum.PosPrev = cur;
optimum.BackPrev = curBack + Base.kNumRepDistances;
optimum.Prev1IsChar = false;
}
if (lenTest == _matchDistances[offs])
{
if (lenTest < numAvailableBytesFull)
{
UInt32 t = Math.Min(numAvailableBytesFull - 1 - lenTest, _numFastBytes);
UInt32 lenTest2 = _matchFinder.GetMatchLen((Int32)lenTest, curBack, t);
if (lenTest2 >= 2)
{
Base.State state2 = state;
state2.UpdateMatch();
UInt32 posStateNext = (position + lenTest) & _posStateMask;
UInt32 curAndLenCharPrice = curAndLenPrice +
_isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice0() +
_literalEncoder.GetSubCoder(position + lenTest,
_matchFinder.GetIndexByte((Int32)lenTest - 1 - 1)).
GetPrice(true,
_matchFinder.GetIndexByte((Int32)lenTest - (Int32)(curBack + 1) - 1),
_matchFinder.GetIndexByte((Int32)lenTest - 1));
state2.UpdateChar();
posStateNext = (position + lenTest + 1) & _posStateMask;
UInt32 nextMatchPrice = curAndLenCharPrice + _isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice1();
UInt32 nextRepMatchPrice = nextMatchPrice + _isRep[state2.Index].GetPrice1();
UInt32 offset = lenTest + 1 + lenTest2;
while (lenEnd < cur + offset)
_optimum[++lenEnd].Price = kIfinityPrice;
curAndLenPrice = nextRepMatchPrice + GetRepPrice(0, lenTest2, state2, posStateNext);
optimum = _optimum[cur + offset];
if (curAndLenPrice < optimum.Price)
{
optimum.Price = curAndLenPrice;
optimum.PosPrev = cur + lenTest + 1;
optimum.BackPrev = 0;
optimum.Prev1IsChar = true;
optimum.Prev2 = true;
optimum.PosPrev2 = cur;
optimum.BackPrev2 = curBack + Base.kNumRepDistances;
}
}
}
offs += 2;
if (offs == numDistancePairs)
break;
}
}
}
}
}
bool ChangePair(UInt32 smallDist, UInt32 bigDist)
{
const int kDif = 7;
return (smallDist < ((UInt32)(1) << (32 - kDif)) && bigDist >= (smallDist << kDif));
}
void WriteEndMarker(UInt32 posState)
{
if (!_writeEndMark)
return;
_isMatch[(_state.Index << Base.kNumPosStatesBitsMax) + posState].Encode(_rangeEncoder, 1);
_isRep[_state.Index].Encode(_rangeEncoder, 0);
_state.UpdateMatch();
UInt32 len = Base.kMatchMinLen;
_lenEncoder.Encode(_rangeEncoder, len - Base.kMatchMinLen, posState);
UInt32 posSlot = (1 << Base.kNumPosSlotBits) - 1;
UInt32 lenToPosState = Base.GetLenToPosState(len);
_posSlotEncoder[lenToPosState].Encode(_rangeEncoder, posSlot);
int footerBits = 30;
UInt32 posReduced = (((UInt32)1) << footerBits) - 1;
_rangeEncoder.EncodeDirectBits(posReduced >> Base.kNumAlignBits, footerBits - Base.kNumAlignBits);
_posAlignEncoder.ReverseEncode(_rangeEncoder, posReduced & Base.kAlignMask);
}
void Flush(UInt32 nowPos)
{
ReleaseMFStream();
WriteEndMarker(nowPos & _posStateMask);
_rangeEncoder.FlushData();
_rangeEncoder.FlushStream();
}
public void CodeOneBlock(out Int64 inSize, out Int64 outSize, out bool finished)
{
inSize = 0;
outSize = 0;
finished = true;
if (_inStream != null)
{
_matchFinder.SetStream(_inStream);
_matchFinder.Init();
_needReleaseMFStream = true;
_inStream = null;
if (_trainSize > 0)
_matchFinder.Skip(_trainSize);
}
if (_finished)
return;
_finished = true;
Int64 progressPosValuePrev = nowPos64;
if (nowPos64 == 0)
{
if (_matchFinder.GetNumAvailableBytes() == 0)
{
Flush((UInt32)nowPos64);
return;
}
UInt32 len, numDistancePairs; // it's not used
ReadMatchDistances(out len, out numDistancePairs);
UInt32 posState = (UInt32)(nowPos64) & _posStateMask;
_isMatch[(_state.Index << Base.kNumPosStatesBitsMax) + posState].Encode(_rangeEncoder, 0);
_state.UpdateChar();
Byte curByte = _matchFinder.GetIndexByte((Int32)(0 - _additionalOffset));
_literalEncoder.GetSubCoder((UInt32)(nowPos64), _previousByte).Encode(_rangeEncoder, curByte);
_previousByte = curByte;
_additionalOffset--;
nowPos64++;
}
if (_matchFinder.GetNumAvailableBytes() == 0)
{
Flush((UInt32)nowPos64);
return;
}
while (true)
{
UInt32 pos;
UInt32 len = GetOptimum((UInt32)nowPos64, out pos);
UInt32 posState = ((UInt32)nowPos64) & _posStateMask;
UInt32 complexState = (_state.Index << Base.kNumPosStatesBitsMax) + posState;
if (len == 1 && pos == 0xFFFFFFFF)
{
_isMatch[complexState].Encode(_rangeEncoder, 0);
Byte curByte = _matchFinder.GetIndexByte((Int32)(0 - _additionalOffset));
LiteralEncoder.Encoder2 subCoder = _literalEncoder.GetSubCoder((UInt32)nowPos64, _previousByte);
if (!_state.IsCharState())
{
Byte matchByte = _matchFinder.GetIndexByte((Int32)(0 - _repDistances[0] - 1 - _additionalOffset));
subCoder.EncodeMatched(_rangeEncoder, matchByte, curByte);
}
else
subCoder.Encode(_rangeEncoder, curByte);
_previousByte = curByte;
_state.UpdateChar();
}
else
{
_isMatch[complexState].Encode(_rangeEncoder, 1);
if (pos < Base.kNumRepDistances)
{
_isRep[_state.Index].Encode(_rangeEncoder, 1);
if (pos == 0)
{
_isRepG0[_state.Index].Encode(_rangeEncoder, 0);
if (len == 1)
_isRep0Long[complexState].Encode(_rangeEncoder, 0);
else
_isRep0Long[complexState].Encode(_rangeEncoder, 1);
}
else
{
_isRepG0[_state.Index].Encode(_rangeEncoder, 1);
if (pos == 1)
_isRepG1[_state.Index].Encode(_rangeEncoder, 0);
else
{
_isRepG1[_state.Index].Encode(_rangeEncoder, 1);
_isRepG2[_state.Index].Encode(_rangeEncoder, pos - 2);
}
}
if (len == 1)
_state.UpdateShortRep();
else
{
_repMatchLenEncoder.Encode(_rangeEncoder, len - Base.kMatchMinLen, posState);
_state.UpdateRep();
}
UInt32 distance = _repDistances[pos];
if (pos != 0)
{
for (UInt32 i = pos; i >= 1; i--)
_repDistances[i] = _repDistances[i - 1];
_repDistances[0] = distance;
}
}
else
{
_isRep[_state.Index].Encode(_rangeEncoder, 0);
_state.UpdateMatch();
_lenEncoder.Encode(_rangeEncoder, len - Base.kMatchMinLen, posState);
pos -= Base.kNumRepDistances;
UInt32 posSlot = GetPosSlot(pos);
UInt32 lenToPosState = Base.GetLenToPosState(len);
_posSlotEncoder[lenToPosState].Encode(_rangeEncoder, posSlot);
if (posSlot >= Base.kStartPosModelIndex)
{
int footerBits = (int)((posSlot >> 1) - 1);
UInt32 baseVal = ((2 | (posSlot & 1)) << footerBits);
UInt32 posReduced = pos - baseVal;
if (posSlot < Base.kEndPosModelIndex)
RangeCoder.BitTreeEncoder.ReverseEncode(_posEncoders,
baseVal - posSlot - 1, _rangeEncoder, footerBits, posReduced);
else
{
_rangeEncoder.EncodeDirectBits(posReduced >> Base.kNumAlignBits, footerBits - Base.kNumAlignBits);
_posAlignEncoder.ReverseEncode(_rangeEncoder, posReduced & Base.kAlignMask);
_alignPriceCount++;
}
}
UInt32 distance = pos;
for (UInt32 i = Base.kNumRepDistances - 1; i >= 1; i--)
_repDistances[i] = _repDistances[i - 1];
_repDistances[0] = distance;
_matchPriceCount++;
}
_previousByte = _matchFinder.GetIndexByte((Int32)(len - 1 - _additionalOffset));
}
_additionalOffset -= len;
nowPos64 += len;
if (_additionalOffset == 0)
{
// if (!_fastMode)
if (_matchPriceCount >= (1 << 7))
FillDistancesPrices();
if (_alignPriceCount >= Base.kAlignTableSize)
FillAlignPrices();
inSize = nowPos64;
outSize = _rangeEncoder.GetProcessedSizeAdd();
if (_matchFinder.GetNumAvailableBytes() == 0)
{
Flush((UInt32)nowPos64);
return;
}
if (nowPos64 - progressPosValuePrev >= (1 << 12))
{
_finished = false;
finished = false;
return;
}
}
}
}
void ReleaseMFStream()
{
if (_matchFinder != null && _needReleaseMFStream)
{
_matchFinder.ReleaseStream();
_needReleaseMFStream = false;
}
}
void SetOutStream(System.IO.Stream outStream) { _rangeEncoder.SetStream(outStream); }
void ReleaseOutStream() { _rangeEncoder.ReleaseStream(); }
void ReleaseStreams()
{
ReleaseMFStream();
ReleaseOutStream();
}
void SetStreams(System.IO.Stream inStream, System.IO.Stream outStream,
Int64 inSize, Int64 outSize)
{
_inStream = inStream;
_finished = false;
Create();
SetOutStream(outStream);
Init();
// if (!_fastMode)
{
FillDistancesPrices();
FillAlignPrices();
}
_lenEncoder.SetTableSize(_numFastBytes + 1 - Base.kMatchMinLen);
_lenEncoder.UpdateTables((UInt32)1 << _posStateBits);
_repMatchLenEncoder.SetTableSize(_numFastBytes + 1 - Base.kMatchMinLen);
_repMatchLenEncoder.UpdateTables((UInt32)1 << _posStateBits);
nowPos64 = 0;
}
public void Code(System.IO.Stream inStream, System.IO.Stream outStream,
Int64 inSize, Int64 outSize, ICodeProgress progress)
{
_needReleaseMFStream = false;
try
{
SetStreams(inStream, outStream, inSize, outSize);
while (true)
{
Int64 processedInSize;
Int64 processedOutSize;
bool finished;
CodeOneBlock(out processedInSize, out processedOutSize, out finished);
if (finished)
return;
if (progress != null)
{
progress.SetProgress(processedInSize, processedOutSize);
}
}
}
finally
{
ReleaseStreams();
}
}
const int kPropSize = 5;
Byte[] properties = new Byte[kPropSize];
public void WriteCoderProperties(System.IO.Stream outStream)
{
properties[0] = (Byte)((_posStateBits * 5 + _numLiteralPosStateBits) * 9 + _numLiteralContextBits);
for (int i = 0; i < 4; i++)
properties[1 + i] = (Byte)((_dictionarySize >> (8 * i)) & 0xFF);
outStream.Write(properties, 0, kPropSize);
}
UInt32[] tempPrices = new UInt32[Base.kNumFullDistances];
UInt32 _matchPriceCount;
void FillDistancesPrices()
{
for (UInt32 i = Base.kStartPosModelIndex; i < Base.kNumFullDistances; i++)
{
UInt32 posSlot = GetPosSlot(i);
int footerBits = (int)((posSlot >> 1) - 1);
UInt32 baseVal = ((2 | (posSlot & 1)) << footerBits);
tempPrices[i] = BitTreeEncoder.ReverseGetPrice(_posEncoders,
baseVal - posSlot - 1, footerBits, i - baseVal);
}
for (UInt32 lenToPosState = 0; lenToPosState < Base.kNumLenToPosStates; lenToPosState++)
{
UInt32 posSlot;
RangeCoder.BitTreeEncoder encoder = _posSlotEncoder[lenToPosState];
UInt32 st = (lenToPosState << Base.kNumPosSlotBits);
for (posSlot = 0; posSlot < _distTableSize; posSlot++)
_posSlotPrices[st + posSlot] = encoder.GetPrice(posSlot);
for (posSlot = Base.kEndPosModelIndex; posSlot < _distTableSize; posSlot++)
_posSlotPrices[st + posSlot] += ((((posSlot >> 1) - 1) - Base.kNumAlignBits) << RangeCoder.BitEncoder.kNumBitPriceShiftBits);
UInt32 st2 = lenToPosState * Base.kNumFullDistances;
UInt32 i;
for (i = 0; i < Base.kStartPosModelIndex; i++)
_distancesPrices[st2 + i] = _posSlotPrices[st + i];
for (; i < Base.kNumFullDistances; i++)
_distancesPrices[st2 + i] = _posSlotPrices[st + GetPosSlot(i)] + tempPrices[i];
}
_matchPriceCount = 0;
}
void FillAlignPrices()
{
for (UInt32 i = 0; i < Base.kAlignTableSize; i++)
_alignPrices[i] = _posAlignEncoder.ReverseGetPrice(i);
_alignPriceCount = 0;
}
static string[] kMatchFinderIDs =
{
"BT2",
"BT4",
};
static int FindMatchFinder(string s)
{
for (int m = 0; m < kMatchFinderIDs.Length; m++)
if (s == kMatchFinderIDs[m])
return m;
return -1;
}
public void SetCoderProperties(CoderPropID[] propIDs, object[] properties)
{
for (UInt32 i = 0; i < properties.Length; i++)
{
object prop = properties[i];
switch (propIDs[i])
{
case CoderPropID.NumFastBytes:
{
if (!(prop is Int32))
throw new InvalidParamException();
Int32 numFastBytes = (Int32)prop;
if (numFastBytes < 5 || numFastBytes > Base.kMatchMaxLen)
throw new InvalidParamException();
_numFastBytes = (UInt32)numFastBytes;
break;
}
case CoderPropID.Algorithm:
{
/*
if (!(prop is Int32))
throw new InvalidParamException();
Int32 maximize = (Int32)prop;
_fastMode = (maximize == 0);
_maxMode = (maximize >= 2);
*/
break;
}
case CoderPropID.MatchFinder:
{
if (!(prop is String))
throw new InvalidParamException();
EMatchFinderType matchFinderIndexPrev = _matchFinderType;
int m = FindMatchFinder(((string)prop).ToUpper());
if (m < 0)
throw new InvalidParamException();
_matchFinderType = (EMatchFinderType)m;
if (_matchFinder != null && matchFinderIndexPrev != _matchFinderType)
{
_dictionarySizePrev = 0xFFFFFFFF;
_matchFinder = null;
}
break;
}
case CoderPropID.DictionarySize:
{
const int kDicLogSizeMaxCompress = 30;
if (!(prop is Int32))
throw new InvalidParamException(); ;
Int32 dictionarySize = (Int32)prop;
if (dictionarySize < (UInt32)(1 << Base.kDicLogSizeMin) ||
dictionarySize > (UInt32)(1 << kDicLogSizeMaxCompress))
throw new InvalidParamException();
_dictionarySize = (UInt32)dictionarySize;
int dicLogSize;
for (dicLogSize = 0; dicLogSize < (UInt32)kDicLogSizeMaxCompress; dicLogSize++)
if (dictionarySize <= ((UInt32)(1) << dicLogSize))
break;
_distTableSize = (UInt32)dicLogSize * 2;
break;
}
case CoderPropID.PosStateBits:
{
if (!(prop is Int32))
throw new InvalidParamException();
Int32 v = (Int32)prop;
if (v < 0 || v > (UInt32)Base.kNumPosStatesBitsEncodingMax)
throw new InvalidParamException();
_posStateBits = (int)v;
_posStateMask = (((UInt32)1) << (int)_posStateBits) - 1;
break;
}
case CoderPropID.LitPosBits:
{
if (!(prop is Int32))
throw new InvalidParamException();
Int32 v = (Int32)prop;
if (v < 0 || v > (UInt32)Base.kNumLitPosStatesBitsEncodingMax)
throw new InvalidParamException();
_numLiteralPosStateBits = (int)v;
break;
}
case CoderPropID.LitContextBits:
{
if (!(prop is Int32))
throw new InvalidParamException();
Int32 v = (Int32)prop;
if (v < 0 || v > (UInt32)Base.kNumLitContextBitsMax)
throw new InvalidParamException(); ;
_numLiteralContextBits = (int)v;
break;
}
case CoderPropID.EndMarker:
{
if (!(prop is Boolean))
throw new InvalidParamException();
SetWriteEndMarkerMode((Boolean)prop);
break;
}
default:
throw new InvalidParamException();
}
}
}
uint _trainSize = 0;
public void SetTrainSize(uint trainSize)
{
_trainSize = trainSize;
}
}
}
================================================
FILE: AssetStudio/7zip/Compress/RangeCoder/RangeCoder.cs
================================================
using System;
namespace SevenZip.Compression.RangeCoder
{
class Encoder
{
public const uint kTopValue = (1 << 24);
System.IO.Stream Stream;
public UInt64 Low;
public uint Range;
uint _cacheSize;
byte _cache;
long StartPosition;
public void SetStream(System.IO.Stream stream)
{
Stream = stream;
}
public void ReleaseStream()
{
Stream = null;
}
public void Init()
{
StartPosition = Stream.Position;
Low = 0;
Range = 0xFFFFFFFF;
_cacheSize = 1;
_cache = 0;
}
public void FlushData()
{
for (int i = 0; i < 5; i++)
ShiftLow();
}
public void FlushStream()
{
Stream.Flush();
}
public void CloseStream()
{
Stream.Close();
}
public void Encode(uint start, uint size, uint total)
{
Low += start * (Range /= total);
Range *= size;
while (Range < kTopValue)
{
Range <<= 8;
ShiftLow();
}
}
public void ShiftLow()
{
if ((uint)Low < (uint)0xFF000000 || (uint)(Low >> 32) == 1)
{
byte temp = _cache;
do
{
Stream.WriteByte((byte)(temp + (Low >> 32)));
temp = 0xFF;
}
while (--_cacheSize != 0);
_cache = (byte)(((uint)Low) >> 24);
}
_cacheSize++;
Low = ((uint)Low) << 8;
}
public void EncodeDirectBits(uint v, int numTotalBits)
{
for (int i = numTotalBits - 1; i >= 0; i--)
{
Range >>= 1;
if (((v >> i) & 1) == 1)
Low += Range;
if (Range < kTopValue)
{
Range <<= 8;
ShiftLow();
}
}
}
public void EncodeBit(uint size0, int numTotalBits, uint symbol)
{
uint newBound = (Range >> numTotalBits) * size0;
if (symbol == 0)
Range = newBound;
else
{
Low += newBound;
Range -= newBound;
}
while (Range < kTopValue)
{
Range <<= 8;
ShiftLow();
}
}
public long GetProcessedSizeAdd()
{
return _cacheSize +
Stream.Position - StartPosition + 4;
// (long)Stream.GetProcessedSize();
}
}
class Decoder
{
public const uint kTopValue = (1 << 24);
public uint Range;
public uint Code;
// public Buffer.InBuffer Stream = new Buffer.InBuffer(1 << 16);
public System.IO.Stream Stream;
public void Init(System.IO.Stream stream)
{
// Stream.Init(stream);
Stream = stream;
Code = 0;
Range = 0xFFFFFFFF;
for (int i = 0; i < 5; i++)
Code = (Code << 8) | (byte)Stream.ReadByte();
}
public void ReleaseStream()
{
// Stream.ReleaseStream();
Stream = null;
}
public void CloseStream()
{
Stream.Close();
}
public void Normalize()
{
while (Range < kTopValue)
{
Code = (Code << 8) | (byte)Stream.ReadByte();
Range <<= 8;
}
}
public void Normalize2()
{
if (Range < kTopValue)
{
Code = (Code << 8) | (byte)Stream.ReadByte();
Range <<= 8;
}
}
public uint GetThreshold(uint total)
{
return Code / (Range /= total);
}
public void Decode(uint start, uint size, uint total)
{
Code -= start * Range;
Range *= size;
Normalize();
}
public uint DecodeDirectBits(int numTotalBits)
{
uint range = Range;
uint code = Code;
uint result = 0;
for (int i = numTotalBits; i > 0; i--)
{
range >>= 1;
/*
result <<= 1;
if (code >= range)
{
code -= range;
result |= 1;
}
*/
uint t = (code - range) >> 31;
code -= range & (t - 1);
result = (result << 1) | (1 - t);
if (range < kTopValue)
{
code = (code << 8) | (byte)Stream.ReadByte();
range <<= 8;
}
}
Range = range;
Code = code;
return result;
}
public uint DecodeBit(uint size0, int numTotalBits)
{
uint newBound = (Range >> numTotalBits) * size0;
uint symbol;
if (Code < newBound)
{
symbol = 0;
Range = newBound;
}
else
{
symbol = 1;
Code -= newBound;
Range -= newBound;
}
Normalize();
return symbol;
}
// ulong GetProcessedSize() {return Stream.GetProcessedSize(); }
}
}
================================================
FILE: AssetStudio/7zip/Compress/RangeCoder/RangeCoderBit.cs
================================================
using System;
namespace SevenZip.Compression.RangeCoder
{
struct BitEncoder
{
public const int kNumBitModelTotalBits = 11;
public const uint kBitModelTotal = (1 << kNumBitModelTotalBits);
const int kNumMoveBits = 5;
const int kNumMoveReducingBits = 2;
public const int kNumBitPriceShiftBits = 6;
uint Prob;
public void Init() { Prob = kBitModelTotal >> 1; }
public void UpdateModel(uint symbol)
{
if (symbol == 0)
Prob += (kBitModelTotal - Prob) >> kNumMoveBits;
else
Prob -= (Prob) >> kNumMoveBits;
}
public void Encode(Encoder encoder, uint symbol)
{
// encoder.EncodeBit(Prob, kNumBitModelTotalBits, symbol);
// UpdateModel(symbol);
uint newBound = (encoder.Range >> kNumBitModelTotalBits) * Prob;
if (symbol == 0)
{
encoder.Range = newBound;
Prob += (kBitModelTotal - Prob) >> kNumMoveBits;
}
else
{
encoder.Low += newBound;
encoder.Range -= newBound;
Prob -= (Prob) >> kNumMoveBits;
}
if (encoder.Range < Encoder.kTopValue)
{
encoder.Range <<= 8;
encoder.ShiftLow();
}
}
private static UInt32[] ProbPrices = new UInt32[kBitModelTotal >> kNumMoveReducingBits];
static BitEncoder()
{
const int kNumBits = (kNumBitModelTotalBits - kNumMoveReducingBits);
for (int i = kNumBits - 1; i >= 0; i--)
{
UInt32 start = (UInt32)1 << (kNumBits - i - 1);
UInt32 end = (UInt32)1 << (kNumBits - i);
for (UInt32 j = start; j < end; j++)
ProbPrices[j] = ((UInt32)i << kNumBitPriceShiftBits) +
(((end - j) << kNumBitPriceShiftBits) >> (kNumBits - i - 1));
}
}
public uint GetPrice(uint symbol)
{
return ProbPrices[(((Prob - symbol) ^ ((-(int)symbol))) & (kBitModelTotal - 1)) >> kNumMoveReducingBits];
}
public uint GetPrice0() { return ProbPrices[Prob >> kNumMoveReducingBits]; }
public uint GetPrice1() { return ProbPrices[(kBitModelTotal - Prob) >> kNumMoveReducingBits]; }
}
struct BitDecoder
{
public const int kNumBitModelTotalBits = 11;
public const uint kBitModelTotal = (1 << kNumBitModelTotalBits);
const int kNumMoveBits = 5;
uint Prob;
public void UpdateModel(int numMoveBits, uint symbol)
{
if (symbol == 0)
Prob += (kBitModelTotal - Prob) >> numMoveBits;
else
Prob -= (Prob) >> numMoveBits;
}
public void Init() { Prob = kBitModelTotal >> 1; }
public uint Decode(RangeCoder.Decoder rangeDecoder)
{
uint newBound = (uint)(rangeDecoder.Range >> kNumBitModelTotalBits) * (uint)Prob;
if (rangeDecoder.Code < newBound)
{
rangeDecoder.Range = newBound;
Prob += (kBitModelTotal - Prob) >> kNumMoveBits;
if (rangeDecoder.Range < Decoder.kTopValue)
{
rangeDecoder.Code = (rangeDecoder.Code << 8) | (byte)rangeDecoder.Stream.ReadByte();
rangeDecoder.Range <<= 8;
}
return 0;
}
else
{
rangeDecoder.Range -= newBound;
rangeDecoder.Code -= newBound;
Prob -= (Prob) >> kNumMoveBits;
if (rangeDecoder.Range < Decoder.kTopValue)
{
rangeDecoder.Code = (rangeDecoder.Code << 8) | (byte)rangeDecoder.Stream.ReadByte();
rangeDecoder.Range <<= 8;
}
return 1;
}
}
}
}
================================================
FILE: AssetStudio/7zip/Compress/RangeCoder/RangeCoderBitTree.cs
================================================
using System;
namespace SevenZip.Compression.RangeCoder
{
struct BitTreeEncoder
{
BitEncoder[] Models;
int NumBitLevels;
public BitTreeEncoder(int numBitLevels)
{
NumBitLevels = numBitLevels;
Models = new BitEncoder[1 << numBitLevels];
}
public void Init()
{
for (uint i = 1; i < (1 << NumBitLevels); i++)
Models[i].Init();
}
public void Encode(Encoder rangeEncoder, UInt32 symbol)
{
UInt32 m = 1;
for (int bitIndex = NumBitLevels; bitIndex > 0; )
{
bitIndex--;
UInt32 bit = (symbol >> bitIndex) & 1;
Models[m].Encode(rangeEncoder, bit);
m = (m << 1) | bit;
}
}
public void ReverseEncode(Encoder rangeEncoder, UInt32 symbol)
{
UInt32 m = 1;
for (UInt32 i = 0; i < NumBitLevels; i++)
{
UInt32 bit = symbol & 1;
Models[m].Encode(rangeEncoder, bit);
m = (m << 1) | bit;
symbol >>= 1;
}
}
public UInt32 GetPrice(UInt32 symbol)
{
UInt32 price = 0;
UInt32 m = 1;
for (int bitIndex = NumBitLevels; bitIndex > 0; )
{
bitIndex--;
UInt32 bit = (symbol >> bitIndex) & 1;
price += Models[m].GetPrice(bit);
m = (m << 1) + bit;
}
return price;
}
public UInt32 ReverseGetPrice(UInt32 symbol)
{
UInt32 price = 0;
UInt32 m = 1;
for (int i = NumBitLevels; i > 0; i--)
{
UInt32 bit = symbol & 1;
symbol >>= 1;
price += Models[m].GetPrice(bit);
m = (m << 1) | bit;
}
return price;
}
public static UInt32 ReverseGetPrice(BitEncoder[] Models, UInt32 startIndex,
int NumBitLevels, UInt32 symbol)
{
UInt32 price = 0;
UInt32 m = 1;
for (int i = NumBitLevels; i > 0; i--)
{
UInt32 bit = symbol & 1;
symbol >>= 1;
price += Models[startIndex + m].GetPrice(bit);
m = (m << 1) | bit;
}
return price;
}
public static void ReverseEncode(BitEncoder[] Models, UInt32 startIndex,
Encoder rangeEncoder, int NumBitLevels, UInt32 symbol)
{
UInt32 m = 1;
for (int i = 0; i < NumBitLevels; i++)
{
UInt32 bit = symbol & 1;
Models[startIndex + m].Encode(rangeEncoder, bit);
m = (m << 1) | bit;
symbol >>= 1;
}
}
}
struct BitTreeDecoder
{
BitDecoder[] Models;
int NumBitLevels;
public BitTreeDecoder(int numBitLevels)
{
NumBitLevels = numBitLevels;
Models = new BitDecoder[1 << numBitLevels];
}
public void Init()
{
for (uint i = 1; i < (1 << NumBitLevels); i++)
Models[i].Init();
}
public uint Decode(RangeCoder.Decoder rangeDecoder)
{
uint m = 1;
for (int bitIndex = NumBitLevels; bitIndex > 0; bitIndex--)
m = (m << 1) + Models[m].Decode(rangeDecoder);
return m - ((uint)1 << NumBitLevels);
}
public uint ReverseDecode(RangeCoder.Decoder rangeDecoder)
{
uint m = 1;
uint symbol = 0;
for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++)
{
uint bit = Models[m].Decode(rangeDecoder);
m <<= 1;
m += bit;
symbol |= (bit << bitIndex);
}
return symbol;
}
public static uint ReverseDecode(BitDecoder[] Models, UInt32 startIndex,
RangeCoder.Decoder rangeDecoder, int NumBitLevels)
{
uint m = 1;
uint symbol = 0;
for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++)
{
uint bit = Models[startIndex + m].Decode(rangeDecoder);
m <<= 1;
m += bit;
symbol |= (bit << bitIndex);
}
return symbol;
}
}
}
================================================
FILE: AssetStudio/7zip/ICoder.cs
================================================
// ICoder.h
using System;
namespace SevenZip
{
/// <summary>
/// The exception that is thrown when an error in input stream occurs during decoding.
/// </summary>
class DataErrorException : ApplicationException
{
public DataErrorException(): base("Data Error") { }
}
/// <summary>
/// The exception that is thrown when the value of an argument is outside the allowable range.
/// </summary>
class InvalidParamException : ApplicationException
{
public InvalidParamException(): base("Invalid Parameter") { }
}
public interface ICodeProgress
{
/// <summary>
/// Callback progress.
/// </summary>
/// <param name="inSize">
/// input size. -1 if unknown.
/// </param>
/// <param name="outSize">
/// output size. -1 if unknown.
/// </param>
void SetProgress(Int64 inSize, Int64 outSize);
};
public interface ICoder
{
/// <summary>
/// Codes streams.
/// </summary>
/// <param name="inStream">
/// input Stream.
/// </param>
/// <param name="outStream">
/// output Stream.
/// </param>
/// <param name="inSize">
/// input Size. -1 if unknown.
/// </param>
/// <param name="outSize">
/// output Size. -1 if unknown.
/// </param>
/// <param name="progress">
/// callback progress reference.
/// </param>
/// <exception cref="SevenZip.DataErrorException">
/// if input stream is not valid
/// </exception>
void Code(System.IO.Stream inStream, System.IO.Stream outStream,
Int64 inSize, Int64 outSize, ICodeProgress progress);
};
/*
public interface ICoder2
{
void Code(ISequentialInStream []inStreams,
const UInt64 []inSizes,
ISequentialOutStream []outStreams,
UInt64 []outSizes,
ICodeProgress progress);
};
*/
/// <summary>
/// Provides the fields that represent properties idenitifiers for compressing.
/// </summary>
public enum CoderPropID
{
/// <summary>
/// Specifies default property.
/// </summary>
DefaultProp = 0,
/// <summary>
/// Specifies size of dictionary.
/// </summary>
DictionarySize,
/// <summary>
/// Specifies size of memory for PPM*.
/// </summary>
UsedMemorySize,
/// <summary>
/// Specifies order for PPM methods.
/// </summary>
Order,
/// <summary>
/// Specifies Block Size.
/// </summary>
BlockSize,
/// <summary>
/// Specifies number of postion state bits for LZMA (0 <= x <= 4).
/// </summary>
PosStateBits,
/// <summary>
/// Specifies number of literal context bits for LZMA (0 <= x <= 8).
/// </summary>
LitContextBits,
/// <summary>
/// Specifies number of literal position bits for LZMA (0 <= x <= 4).
/// </summary>
LitPosBits,
/// <summary>
/// Specifies number of fast bytes for LZ*.
/// </summary>
NumFastBytes,
/// <summary>
/// Specifies match finder. LZMA: "BT2", "BT4" or "BT4B".
/// </summary>
MatchFinder,
/// <summary>
/// Specifies the number of match finder cyckes.
/// </summary>
MatchFinderCycles,
/// <summary>
/// Specifies number of passes.
/// </summary>
NumPasses,
/// <summary>
/// Specifies number of algorithm.
/// </summary>
Algorithm,
/// <summary>
/// Specifies the number of threads.
/// </summary>
NumThreads,
/// <summary>
/// Specifies mode with end marker.
/// </summary>
EndMarker
};
public interface ISetCoderProperties
{
void SetCoderProperties(CoderPropID[] propIDs, object[] properties);
};
public interface IWriteCoderProperties
{
void WriteCoderProperties(System.IO.Stream outStream);
}
public interface ISetDecoderProperties
{
void SetDecoderProperties(byte[] properties);
}
}
================================================
FILE: AssetStudio/AssetStudio.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net472;netstandard2.0;net5.0;net6.0</TargetFrameworks>
<Version>0.16.0.0</Version>
<AssemblyVersion>0.16.0.0</AssemblyVersion>
<FileVersion>0.16.0.0</FileVersion>
<Copyright>Copyright © Perfare 2018-2022</Copyright>
<DebugType>embedded</DebugType>
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' != 'net472' ">
<PackageReference Include="K4os.Compression.LZ4" Version="1.2.16" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net472' ">
<PackageReference Include="System.Memory" Version="4.5.4" />
<PackageReference Include="System.IO.Compression" Version="4.0.0" />
<PackageReference Include="K4os.Compression.LZ4" Version="1.1.11" />
</ItemGroup>
</Project>
================================================
FILE: AssetStudio/AssetsManager.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using static AssetStudio.ImportHelper;
namespace AssetStudio
{
public class AssetsManager
{
public string SpecifyUnityVersion;
public List<SerializedFile> assetsFileList = new List<SerializedFile>();
internal Dictionary<string, int> assetsFileIndexCache = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
internal Dictionary<string, BinaryReader> resourceFileReaders = new Dictionary<string, BinaryReader>(StringComparer.OrdinalIgnoreCase);
private List<string> importFiles = new List<string>();
private HashSet<string> importFilesHash = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
private HashSet<string> noexistFiles = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
private HashSet<string> assetsFileListHash = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
public void LoadFiles(params string[] files)
{
var path = Path.GetDirectoryName(Path.GetFullPath(files[0]));
MergeSplitAssets(path);
var toReadFile = ProcessingSplitFiles(files.ToList());
Load(toReadFile);
}
public void LoadFolder(string path)
{
MergeSplitAssets(path, true);
var files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).ToList();
var toReadFile = ProcessingSplitFiles(files);
Load(toReadFile);
}
private void Load(string[] files)
{
foreach (var file in files)
{
importFiles.Add(file);
importFilesHash.Add(Path.GetFileName(file));
}
Progress.Reset();
//use a for loop because list size can change
for (var i = 0; i < importFiles.Count; i++)
{
LoadFile(importFiles[i]);
Progress.Report(i + 1, importFiles.Count);
}
importFiles.Clear();
importFilesHash.Clear();
noexistFiles.Clear();
assetsFileListHash.Clear();
ReadAssets();
ProcessAssets();
}
private void LoadFile(string fullName)
{
var reader = new FileReader(fullName);
LoadFile(reader);
}
private void LoadFile(FileReader reader)
{
switch (reader.FileType)
{
case FileType.AssetsFile:
LoadAssetsFile(reader);
break;
case FileType.BundleFile:
LoadBundleFile(reader);
break;
case FileType.WebFile:
LoadWebFile(reader);
break;
case FileType.GZipFile:
LoadFile(DecompressGZip(reader));
break;
case FileType.BrotliFile:
LoadFile(DecompressBrotli(reader));
break;
case FileType.ZipFile:
LoadZipFile(reader);
break;
}
}
private void LoadAssetsFile(FileReader reader)
{
if (!assetsFileListHash.Contains(reader.FileName))
{
Logger.Info($"Loading {reader.FullPath}");
try
{
var assetsFile = new SerializedFile(reader, this);
CheckStrippedVersion(assetsFile);
assetsFileList.Add(assetsFile);
assetsFileListHash.Add(assetsFile.fileName);
foreach (var sharedFile in assetsFile.m_Externals)
{
var sharedFileName = sharedFile.fileName;
if (!importFilesHash.Contains(sharedFileName))
{
var sharedFilePath = Path.Combine(Path.GetDirectoryName(reader.FullPath), sharedFileName);
if (!noexistFiles.Contains(sharedFilePath))
{
if (!File.Exists(sharedFilePath))
{
var findFiles = Directory.GetFiles(Path.GetDirectoryName(reader.FullPath), sharedFileName, SearchOption.AllDirectories);
if (findFiles.Length > 0)
{
sharedFilePath = findFiles[0];
}
}
if (File.Exists(sharedFilePath))
{
importFiles.Add(sharedFilePath);
importFilesHash.Add(sharedFileName);
}
else
{
noexistFiles.Add(sharedFilePath);
}
}
}
}
}
catch (Exception e)
{
Logger.Error($"Error while reading assets file {reader.FullPath}", e);
reader.Dispose();
}
}
else
{
Logger.Info($"Skipping {reader.FullPath}");
reader.Dispose();
}
}
private void LoadAssetsFromMemory(FileReader reader, string originalPath, string unityVersion = null)
{
if (!assetsFileListHash.Contains(reader.FileName))
{
try
{
var assetsFile = new SerializedFile(reader, this);
assetsFile.originalPath = originalPath;
if (!string.IsNullOrEmpty(unityVersion) && assetsFile.header.m_Version < SerializedFileFormatVersion.Unknown_7)
{
assetsFile.SetVersion(unityVersion);
}
CheckStrippedVersion(assetsFile);
assetsFileList.Add(assetsFile);
assetsFileListHash.Add(assetsFile.fileName);
}
catch (Exception e)
{
Logger.Error($"Error while reading assets file {reader.FullPath} from {Path.GetFileName(originalPath)}", e);
resourceFileReaders.Add(reader.FileName, reader);
}
}
else
Logger.Info($"Skipping {originalPath} ({reader.FileName})");
}
private void LoadBundleFile(FileReader reader, string originalPath = null)
{
Logger.Info("Loading " + reader.FullPath);
try
{
var bundleFile = new BundleFile(reader);
foreach (var file in bundleFile.fileList)
{
var dummyPath = Path.Combine(Path.GetDirectoryName(reader.FullPath), file.fileName);
var subReader = new FileReader(dummyPath, file.stream);
if (subReader.FileType == FileType.AssetsFile)
{
LoadAssetsFromMemory(subReader, originalPath ?? reader.FullPath, bundleFile.m_Header.unityRevision);
}
else
{
resourceFileReaders[file.fileName] = subReader; //TODO
}
}
}
catch (Exception e)
{
var str = $"Error while reading bundle file {reader.FullPath}";
if (originalPath != null)
{
str += $" from {Path.GetFileName(originalPath)}";
}
Logger.Error(str, e);
}
finally
{
reader.Dispose();
}
}
private void LoadWebFile(FileReader reader)
{
Logger.Info("Loading " + reader.FullPath);
try
{
var webFile = new WebFile(reader);
foreach (var file in webFile.fileList)
{
var dummyPath = Path.Combine(Path.GetDirectoryName(reader.FullPath), file.fileName);
var subReader = new FileReader(dummyPath, file.stream);
switch (subReader.FileType)
{
case FileType.AssetsFile:
LoadAssetsFromMemory(subReader, reader.FullPath);
break;
case FileType.BundleFile:
LoadBundleFile(subReader, reader.FullPath);
break;
case FileType.WebFile:
LoadWebFile(subReader);
break;
case FileType.ResourceFile:
resourceFileReaders[file.fileName] = subReader; //TODO
break;
}
}
}
catch (Exception e)
{
Logger.Error($"Error while reading web file {reader.FullPath}", e);
}
finally
{
reader.Dispose();
}
}
private void LoadZipFile(FileReader reader)
{
Logger.Info("Loading " + reader.FileName);
try
{
using (ZipArchive archive = new ZipArchive(reader.BaseStream, ZipArchiveMode.Read))
{
List<string> splitFiles = new List<string>();
// register all files before parsing the assets so that the external references can be found
// and find split files
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.Name.Contains(".split"))
{
string baseName = Path.GetFileNameWithoutExtension(entry.Name);
string basePath = Path.Combine(Path.GetDirectoryName(entry.FullName), baseName);
if (!splitFiles.Contains(basePath))
{
splitFiles.Add(basePath);
importFilesHash.Add(baseName);
}
}
else
{
importFilesHash.Add(entry.Name);
}
}
// merge split files and load the result
foreach (string basePath in splitFiles)
{
try
{
Stream splitStream = new MemoryStream();
int i = 0;
while (true)
{
string path = $"{basePath}.split{i++}";
ZipArchiveEntry entry = archive.GetEntry(path);
if (entry == null)
break;
using (Stream entryStream = entry.Open())
{
entryStream.CopyTo(splitStream);
}
}
splitStream.Seek(0, SeekOrigin.Begin);
FileReader entryReader = new FileReader(basePath, splitStream);
LoadFile(entryReader);
}
catch (Exception e)
{
Logger.Error($"Error while reading zip split file {basePath}", e);
}
}
// load all entries
foreach (ZipArchiveEntry entry in archive.Entries)
{
try
{
string dummyPath = Path.Combine(Path.GetDirectoryName(reader.FullPath), reader.FileName, entry.FullName);
// create a new stream
// - to store the deflated stream in
// - to keep the data for later extraction
Stream streamReader = new MemoryStream();
using (Stream entryStream = entry.Open())
{
entryStream.CopyTo(streamReader);
}
streamReader.Position = 0;
FileReader entryReader = new FileReader(dummyPath, streamReader);
LoadFile(entryReader);
if (entryReader.FileType == FileType.ResourceFile)
{
entryReader.Position = 0;
if (!resourceFileReaders.ContainsKey(entry.Name))
{
resourceFileReaders.Add(entry.Name, entryReader);
}
}
}
catch (Exception e)
{
Logger.Error($"Error while reading zip entry {entry.FullName}", e);
}
}
}
}
catch (Exception e)
{
Logger.Error($"Error while reading zip file {reader.FileName}", e);
}
finally
{
reader.Dispose();
}
}
public void CheckStrippedVersion(SerializedFile assetsFile)
{
if (assetsFile.IsVersionStripped && string.IsNullOrEmpty(SpecifyUnityVersion))
{
throw new Exception("The Unity version has been stripped, please set the version in the options");
}
if (!string.IsNullOrEmpty(SpecifyUnityVersion))
{
assetsFile.SetVersion(SpecifyUnityVersion);
}
}
public void Clear()
{
foreach (var assetsFile in assetsFileList)
{
assetsFile.Objects.Clear();
assetsFile.reader.Close();
}
assetsFileList.Clear();
foreach (var resourceFileReader in resourceFileReaders)
{
resourceFileReader.Value.Close();
}
resourceFileReaders.Clear();
assetsFileIndexCache.Clear();
}
private void ReadAssets()
{
Logger.Info("Read assets...");
var progressCount = assetsFileList.Sum(x => x.m_Objects.Count);
int i = 0;
Progress.Reset();
foreach (var assetsFile in assetsFileList)
{
foreach (var objectInfo in assetsFile.m_Objects)
{
var objectReader = new ObjectReader(assetsFile.reader, assetsFile, objectInfo);
try
{
Object obj;
switch (objectReader.type)
{
case ClassIDType.Animation:
obj = new Animation(objectReader);
break;
case ClassIDType.AnimationClip:
obj = new AnimationClip(objectReader);
break;
case ClassIDType.Animator:
obj = new Animator(objectReader);
break;
case ClassIDType.AnimatorController:
obj = new AnimatorController(objectReader);
break;
case ClassIDType.AnimatorOverrideController:
obj = new AnimatorOverrideController(objectReader);
break;
case ClassIDType.AssetBundle:
obj = new AssetBundle(objectReader);
break;
case ClassIDType.AudioClip:
obj = new AudioClip(objectReader);
break;
case ClassIDType.Avatar:
obj = new Avatar(objectReader);
break;
case ClassIDType.Font:
obj = new Font(objectReader);
break;
case ClassIDType.GameObject:
obj = new GameObject(objectReader);
break;
case ClassIDType.Material:
obj = new Material(objectReader);
break;
case ClassIDType.Mesh:
obj = new Mesh(objectReader);
break;
case ClassIDType.MeshFilter:
obj = new MeshFilter(objectReader);
break;
case ClassIDType.MeshRenderer:
obj = new MeshRenderer(objectReader);
break;
case ClassIDType.MonoBehaviour:
obj = new MonoBehaviour(objectReader);
break;
case ClassIDType.MonoScript:
obj = new MonoScript(objectReader);
break;
case ClassIDType.MovieTexture:
obj = new MovieTexture(objectReader);
break;
case ClassIDType.PlayerSettings:
obj = new PlayerSettings(objectReader);
break;
case ClassIDType.RectTransform:
obj = new RectTransform(objectReader);
break;
case ClassIDType.Shader:
obj = new Shader(objectReader);
break;
case ClassIDType.SkinnedMeshRenderer:
obj = new SkinnedMeshRenderer(objectReader);
break;
case ClassIDType.Sprite:
obj = new Sprite(objectReader);
break;
case ClassIDType.SpriteAtlas:
obj = new SpriteAtlas(objectReader);
break;
case ClassIDType.TextAsset:
obj = new TextAsset(objectReader);
break;
case ClassIDType.Texture2D:
obj = new Texture2D(objectReader);
break;
case ClassIDType.Transform:
obj = new Transform(objectReader);
break;
case ClassIDType.VideoClip:
obj = new VideoClip(objectReader);
break;
case ClassIDType.ResourceManager:
obj = new ResourceManager(objectReader);
break;
default:
obj = new Object(objectReader);
break;
}
assetsFile.AddObject(obj);
}
catch (Exception e)
{
var sb = new StringBuilder();
sb.AppendLine("Unable to load object")
.AppendLine($"Assets {assetsFile.fileName}")
.AppendLine($"Path {assetsFile.originalPath}")
.AppendLine($"Type {objectReader.type}")
.AppendLine($"PathID {objectInfo.m_PathID}")
.Append(e);
Logger.Error(sb.ToString());
}
Progress.Report(++i, progressCount);
}
}
}
private void ProcessAssets()
{
Logger.Info("Process Assets...");
foreach (var assetsFile in assetsFileList)
{
foreach (var obj in assetsFile.Objects)
{
if (obj is GameObject m_GameObject)
{
foreach (var pptr in m_GameObject.m_Components)
{
if (pptr.TryGet(out var m_Component))
{
switch (m_Component)
{
case Transform m_Transform:
m_GameObject.m_Transform = m_Transform;
break;
case MeshRenderer m_MeshRenderer:
m_GameObject.m_MeshRenderer = m_MeshRenderer;
break;
case MeshFilter m_MeshFilter:
m_GameObject.m_MeshFilter = m_MeshFilter;
break;
case SkinnedMeshRenderer m_SkinnedMeshRenderer:
m_GameObject.m_SkinnedMeshRenderer = m_SkinnedMeshRenderer;
break;
case Animator m_Animator:
m_GameObject.m_Animator = m_Animator;
break;
case Animation m_Animation:
m_GameObject.m_Animation = m_Animation;
break;
}
}
}
}
else if (obj is SpriteAtlas m_SpriteAtlas)
{
foreach (var m_PackedSprite in m_SpriteAtlas.m_PackedSprites)
{
if (m_PackedSprite.TryGet(out var m_Sprite))
{
if (m_Sprite.m_SpriteAtlas.IsNull)
{
m_Sprite.m_SpriteAtlas.Set(m_SpriteAtlas);
}
else
{
m_Sprite.m_SpriteAtlas.TryGet(out var m_SpriteAtlaOld);
if (m_SpriteAtlaOld.m_IsVariant)
{
m_Sprite.m_SpriteAtlas.Set(m_SpriteAtlas);
}
}
}
}
}
}
}
}
}
}
================================================
FILE: AssetStudio/BigArrayPool.cs
================================================
using System.Buffers;
namespace AssetStudio
{
public static class BigArrayPool<T>
{
private static readonly ArrayPool<T> s_shared = ArrayPool<T>.Create(64 * 1024 * 1024, 3);
public static ArrayPool<T> Shared => s_shared;
}
}
================================================
FILE: AssetStudio/Brotli/BitReader.cs
================================================
/* Copyright 2015 Google Inc. All Rights Reserved.
Distributed under MIT license.
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
*/
namespace Org.Brotli.Dec
{
/// <summary>Bit reading helpers.</summary>
internal sealed class BitReader
{
/// <summary>
/// Input byte buffer, consist of a ring-buffer and a "slack" region where bytes from the start of
/// the ring-buffer are copied.
/// </summary>
private const int Capacity = 1024;
private const int Slack = 16;
private const int IntBufferSize = Capacity + Slack;
private const int ByteReadSize = Capacity << 2;
private const int ByteBufferSize = IntBufferSize << 2;
private readonly byte[] byteBuffer = new byte[ByteBufferSize];
private readonly int[] intBuffer = new int[IntBufferSize];
private readonly Org.Brotli.Dec.IntReader intReader = new Org.Brotli.Dec.IntReader();
private System.IO.Stream input;
/// <summary>Input stream is finished.</summary>
private bool endOfStreamReached;
/// <summary>Pre-fetched bits.</summary>
internal long accumulator;
/// <summary>Current bit-reading position in accumulator.</summary>
internal int bitOffset;
/// <summary>Offset of next item in intBuffer.</summary>
private int intOffset;
private int tailBytes = 0;
/* Number of bytes in unfinished "int" item. */
/// <summary>Fills up the input buffer.</summary>
/// <remarks>
/// Fills up the input buffer.
/// <p> No-op if there are at least 36 bytes present after current position.
/// <p> After encountering the end of the input stream, 64 additional zero bytes are copied to the
/// buffer.
/// </remarks>
internal static void ReadMoreInput(Org.Brotli.Dec.BitReader br)
{
// TODO: Split to check and read; move read outside of decoding loop.
if (br.intOffset <= Capacity - 9)
{
return;
}
if (br.endOfStreamReached)
{
if (IntAvailable(br) >= -2)
{
return;
}
throw new Org.Brotli.Dec.BrotliRuntimeException("No more input");
}
int readOffset = br.intOffset << 2;
int bytesRead = ByteReadSize - readOffset;
System.Array.Copy(br.byteBuffer, readOffset, br.byteBuffer, 0, bytesRead);
br.intOffset = 0;
try
{
while (bytesRead < ByteReadSize)
{
int len = br.input.Read(br.byteBuffer, bytesRead, ByteReadSize - bytesRead);
// EOF is -1 in Java, but 0 in C#.
if (len <= 0)
{
br.endOfStreamReached = true;
br.tailBytes = bytesRead;
bytesRead += 3;
break;
}
bytesRead += len;
}
}
catch (System.IO.IOException e)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Failed to read input", e);
}
Org.Brotli.Dec.IntReader.Convert(br.intReader, bytesRead >> 2);
}
internal static void CheckHealth(Org.Brotli.Dec.BitReader br, bool endOfStream)
{
if (!br.endOfStreamReached)
{
return;
}
int byteOffset = (br.intOffset << 2) + ((br.bitOffset + 7) >> 3) - 8;
if (byteOffset > br.tailBytes)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Read after end");
}
if (endOfStream && (byteOffset != br.tailBytes))
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Unused bytes after end");
}
}
/// <summary>Advances the Read buffer by 5 bytes to make room for reading next 24 bits.</summary>
internal static void FillBitWindow(Org.Brotli.Dec.BitReader br)
{
if (br.bitOffset >= 32)
{
br.accumulator = ((long)br.intBuffer[br.intOffset++] << 32) | ((long)(((ulong)br.accumulator) >> 32));
br.bitOffset -= 32;
}
}
/// <summary>Reads the specified number of bits from Read Buffer.</summary>
internal static int ReadBits(Org.Brotli.Dec.BitReader br, int n)
{
FillBitWindow(br);
int val = (int)((long)(((ulong)br.accumulator) >> br.bitOffset)) & ((1 << n) - 1);
br.bitOffset += n;
return val;
}
/// <summary>Initialize bit reader.</summary>
/// <remarks>
/// Initialize bit reader.
/// <p> Initialisation turns bit reader to a ready state. Also a number of bytes is prefetched to
/// accumulator. Because of that this method may block until enough data could be read from input.
/// </remarks>
/// <param name="br">BitReader POJO</param>
/// <param name="input">data source</param>
internal static void Init(Org.Brotli.Dec.BitReader br, System.IO.Stream input)
{
if (br.input != null)
{
throw new System.InvalidOperationException("Bit reader already has associated input stream");
}
Org.Brotli.Dec.IntReader.Init(br.intReader, br.byteBuffer, br.intBuffer);
br.input = input;
br.accumulator = 0;
br.bitOffset = 64;
br.intOffset = Capacity;
br.endOfStreamReached = false;
Prepare(br);
}
private static void Prepare(Org.Brotli.Dec.BitReader br)
{
ReadMoreInput(br);
CheckHealth(br, false);
FillBitWindow(br);
FillBitWindow(br);
}
internal static void Reload(Org.Brotli.Dec.BitReader br)
{
if (br.bitOffset == 64)
{
Prepare(br);
}
}
/// <exception cref="System.IO.IOException"/>
internal static void Close(Org.Brotli.Dec.BitReader br)
{
System.IO.Stream @is = br.input;
br.input = null;
if (@is != null)
{
@is.Close();
}
}
internal static void JumpToByteBoundary(Org.Brotli.Dec.BitReader br)
{
int padding = (64 - br.bitOffset) & 7;
if (padding != 0)
{
int paddingBits = Org.Brotli.Dec.BitReader.ReadBits(br, padding);
if (paddingBits != 0)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Corrupted padding bits");
}
}
}
internal static int IntAvailable(Org.Brotli.Dec.BitReader br)
{
int limit = Capacity;
if (br.endOfStreamReached)
{
limit = (br.tailBytes + 3) >> 2;
}
return limit - br.intOffset;
}
internal static void CopyBytes(Org.Brotli.Dec.BitReader br, byte[] data, int offset, int length)
{
if ((br.bitOffset & 7) != 0)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Unaligned copyBytes");
}
// Drain accumulator.
while ((br.bitOffset != 64) && (length != 0))
{
data[offset++] = unchecked((byte)((long)(((ulong)br.accumulator) >> br.bitOffset)));
br.bitOffset += 8;
length--;
}
if (length == 0)
{
return;
}
// Get data from shadow buffer with "sizeof(int)" granularity.
int copyInts = System.Math.Min(IntAvailable(br), length >> 2);
if (copyInts > 0)
{
int readOffset = br.intOffset << 2;
System.Array.Copy(br.byteBuffer, readOffset, data, offset, copyInts << 2);
offset += copyInts << 2;
length -= copyInts << 2;
br.intOffset += copyInts;
}
if (length == 0)
{
return;
}
// Read tail bytes.
if (IntAvailable(br) > 0)
{
// length = 1..3
FillBitWindow(br);
while (length != 0)
{
data[offset++] = unchecked((byte)((long)(((ulong)br.accumulator) >> br.bitOffset)));
br.bitOffset += 8;
length--;
}
CheckHealth(br, false);
return;
}
// Now it is possible to copy bytes directly.
try
{
while (length > 0)
{
int len = br.input.Read(data, offset, length);
if (len == -1)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Unexpected end of input");
}
offset += len;
length -= len;
}
}
catch (System.IO.IOException e)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Failed to read input", e);
}
}
}
}
================================================
FILE: AssetStudio/Brotli/BrotliInputStream.cs
================================================
/* Copyright 2015 Google Inc. All Rights Reserved.
Distributed under MIT license.
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
*/
namespace Org.Brotli.Dec
{
/// <summary>
/// <see cref="System.IO.Stream"/>
/// decorator that decompresses brotli data.
/// <p> Not thread-safe.
/// </summary>
public class BrotliInputStream : System.IO.Stream
{
public const int DefaultInternalBufferSize = 16384;
/// <summary>Internal buffer used for efficient byte-by-byte reading.</summary>
private byte[] buffer;
/// <summary>Number of decoded but still unused bytes in internal buffer.</summary>
private int remainingBufferBytes;
/// <summary>Next unused byte offset.</summary>
private int bufferOffset;
/// <summary>Decoder state.</summary>
private readonly Org.Brotli.Dec.State state = new Org.Brotli.Dec.State();
/// <summary>
/// Creates a
/// <see cref="System.IO.Stream"/>
/// wrapper that decompresses brotli data.
/// <p> For byte-by-byte reading (
/// <see cref="ReadByte()"/>
/// ) internal buffer with
/// <see cref="DefaultInternalBufferSize"/>
/// size is allocated and used.
/// <p> Will block the thread until first kilobyte of data of source is available.
/// </summary>
/// <param name="source">underlying data source</param>
/// <exception cref="System.IO.IOException">in case of corrupted data or source stream problems</exception>
public BrotliInputStream(System.IO.Stream source)
: this(source, DefaultInternalBufferSize, null)
{
}
/// <summary>
/// Creates a
/// <see cref="System.IO.Stream"/>
/// wrapper that decompresses brotli data.
/// <p> For byte-by-byte reading (
/// <see cref="ReadByte()"/>
/// ) internal buffer of specified size is
/// allocated and used.
/// <p> Will block the thread until first kilobyte of data of source is available.
/// </summary>
/// <param name="source">compressed data source</param>
/// <param name="byteReadBufferSize">
/// size of internal buffer used in case of
/// byte-by-byte reading
/// </param>
/// <exception cref="System.IO.IOException">in case of corrupted data or source stream problems</exception>
public BrotliInputStream(System.IO.Stream source, int byteReadBufferSize)
: this(source, byteReadBufferSize, null)
{
}
/// <summary>
/// Creates a
/// <see cref="System.IO.Stream"/>
/// wrapper that decompresses brotli data.
/// <p> For byte-by-byte reading (
/// <see cref="ReadByte()"/>
/// ) internal buffer of specified size is
/// allocated and used.
/// <p> Will block the thread until first kilobyte of data of source is available.
/// </summary>
/// <param name="source">compressed data source</param>
/// <param name="byteReadBufferSize">
/// size of internal buffer used in case of
/// byte-by-byte reading
/// </param>
/// <param name="customDictionary">
/// custom dictionary data;
/// <see langword="null"/>
/// if not used
/// </param>
/// <exception cref="System.IO.IOException">in case of corrupted data or source stream problems</exception>
public BrotliInputStream(System.IO.Stream source, int byteReadBufferSize, byte[] customDictionary)
{
if (byteReadBufferSize <= 0)
{
throw new System.ArgumentException("Bad buffer size:" + byteReadBufferSize);
}
else if (source == null)
{
throw new System.ArgumentException("source is null");
}
this.buffer = new byte[byteReadBufferSize];
this.remainingBufferBytes = 0;
this.bufferOffset = 0;
try
{
Org.Brotli.Dec.State.SetInput(state, source);
}
catch (Org.Brotli.Dec.BrotliRuntimeException ex)
{
throw new System.IO.IOException("Brotli decoder initialization failed", ex);
}
if (customDictionary != null)
{
Org.Brotli.Dec.Decode.SetCustomDictionary(state, customDictionary);
}
}
/// <summary><inheritDoc/></summary>
/// <exception cref="System.IO.IOException"/>
public override void Close()
{
Org.Brotli.Dec.State.Close(state);
}
/// <summary><inheritDoc/></summary>
/// <exception cref="System.IO.IOException"/>
public override int ReadByte()
{
if (bufferOffset >= remainingBufferBytes)
{
remainingBufferBytes = Read(buffer, 0, buffer.Length);
bufferOffset = 0;
if (remainingBufferBytes == -1)
{
return -1;
}
}
return buffer[bufferOffset++] & unchecked((int)(0xFF));
}
/// <summary><inheritDoc/></summary>
/// <exception cref="System.IO.IOException"/>
public override int Read(byte[] destBuffer, int destOffset, int destLen)
{
if (destOffset < 0)
{
throw new System.ArgumentException("Bad offset: " + destOffset);
}
else if (destLen < 0)
{
throw new System.ArgumentException("Bad length: " + destLen);
}
else if (destOffset + destLen > destBuffer.Length)
{
throw new System.ArgumentException("Buffer overflow: " + (destOffset + destLen) + " > " + destBuffer.Length);
}
else if (destLen == 0)
{
return 0;
}
int copyLen = System.Math.Max(remainingBufferBytes - bufferOffset, 0);
if (copyLen != 0)
{
copyLen = System.Math.Min(copyLen, destLen);
System.Array.Copy(buffer, bufferOffset, destBuffer, destOffset, copyLen);
bufferOffset += copyLen;
destOffset += copyLen;
destLen -= copyLen;
if (destLen == 0)
{
return copyLen;
}
}
try
{
state.output = destBuffer;
state.outputOffset = destOffset;
state.outputLength = destLen;
state.outputUsed = 0;
Org.Brotli.Dec.Decode.Decompress(state);
if (state.outputUsed == 0)
{
return 0;
}
return state.outputUsed + copyLen;
}
catch (Org.Brotli.Dec.BrotliRuntimeException ex)
{
throw new System.IO.IOException("Brotli stream decoding failed", ex);
}
}
// <{[INJECTED CODE]}>
public override bool CanRead {
get {return true;}
}
public override bool CanSeek {
get {return false;}
}
public override long Length {
get {throw new System.NotSupportedException();}
}
public override long Position {
get {throw new System.NotSupportedException();}
set {throw new System.NotSupportedException();}
}
public override long Seek(long offset, System.IO.SeekOrigin origin) {
throw new System.NotSupportedException();
}
public override void SetLength(long value){
throw new System.NotSupportedException();
}
public override bool CanWrite{get{return false;}}
public override System.IAsyncResult BeginWrite(byte[] buffer, int offset,
int count, System.AsyncCallback callback, object state) {
throw new System.NotSupportedException();
}
public override void Write(byte[] buffer, int offset, int count) {
throw new System.NotSupportedException();
}
public override void Flush() {}
}
}
================================================
FILE: AssetStudio/Brotli/BrotliRuntimeException.cs
================================================
/* Copyright 2015 Google Inc. All Rights Reserved.
Distributed under MIT license.
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
*/
namespace Org.Brotli.Dec
{
/// <summary>Unchecked exception used internally.</summary>
[System.Serializable]
internal class BrotliRuntimeException : System.Exception
{
internal BrotliRuntimeException(string message)
: base(message)
{
}
internal BrotliRuntimeException(string message, System.Exception cause)
: base(message, cause)
{
}
}
}
================================================
FILE: AssetStudio/Brotli/Context.cs
================================================
/* Copyright 2015 Google Inc. All Rights Reserved.
Distributed under MIT license.
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
*/
namespace Org.Brotli.Dec
{
/// <summary>Common context lookup table for all context modes.</summary>
internal sealed class Context
{
internal static readonly int[] Lookup = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, 44, 44, 44, 44, 44, 44, 44, 44
, 44, 44, 32, 32, 24, 40, 28, 12, 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12, 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60
, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38
, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24,
25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,
40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54,
55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
internal static readonly int[] LookupOffsets = new int[] { 1024, 1536, 1280, 1536, 0, 256, 768, 512 };
// CONTEXT_UTF8, last byte.
// ASCII range.
// UTF8 continuation byte range.
// UTF8 lead byte range.
// CONTEXT_UTF8 second last byte.
// ASCII range.
// UTF8 continuation byte range.
// UTF8 lead byte range.
// CONTEXT_SIGNED, second last byte.
// CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits.
// CONTEXT_LSB6, last byte.
// CONTEXT_MSB6, last byte.
// CONTEXT_{M,L}SB6, second last byte,
// CONTEXT_LSB6
// CONTEXT_MSB6
// CONTEXT_UTF8
// CONTEXT_SIGNED
}
}
================================================
FILE: AssetStudio/Brotli/Decode.cs
================================================
/* Copyright 2015 Google Inc. All Rights Reserved.
Distributed under MIT license.
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
*/
namespace Org.Brotli.Dec
{
/// <summary>API for Brotli decompression.</summary>
internal sealed class Decode
{
private const int DefaultCodeLength = 8;
private const int CodeLengthRepeatCode = 16;
private const int NumLiteralCodes = 256;
private const int NumInsertAndCopyCodes = 704;
private const int NumBlockLengthCodes = 26;
private const int LiteralContextBits = 6;
private const int DistanceContextBits = 2;
private const int HuffmanTableBits = 8;
private const int HuffmanTableMask = unchecked((int)(0xFF));
private const int CodeLengthCodes = 18;
private static readonly int[] CodeLengthCodeOrder = new int[] { 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
private const int NumDistanceShortCodes = 16;
private static readonly int[] DistanceShortCodeIndexOffset = new int[] { 3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2 };
private static readonly int[] DistanceShortCodeValueOffset = new int[] { 0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3 };
/// <summary>Static Huffman code for the code length code lengths.</summary>
private static readonly int[] FixedTable = new int[] { unchecked((int)(0x020000)), unchecked((int)(0x020004)), unchecked((int)(0x020003)), unchecked((int)(0x030002)), unchecked((int)(0x020000)), unchecked((int)(0x020004)), unchecked((int)(0x020003
)), unchecked((int)(0x040001)), unchecked((int)(0x020000)), unchecked((int)(0x020004)), unchecked((int)(0x020003)), unchecked((int)(0x030002)), unchecked((int)(0x020000)), unchecked((int)(0x020004)), unchecked((int)(0x020003)), unchecked((int
)(0x040005)) };
/// <summary>Decodes a number in the range [0..255], by reading 1 - 11 bits.</summary>
private static int DecodeVarLenUnsignedByte(Org.Brotli.Dec.BitReader br)
{
if (Org.Brotli.Dec.BitReader.ReadBits(br, 1) != 0)
{
int n = Org.Brotli.Dec.BitReader.ReadBits(br, 3);
if (n == 0)
{
return 1;
}
else
{
return Org.Brotli.Dec.BitReader.ReadBits(br, n) + (1 << n);
}
}
return 0;
}
private static void DecodeMetaBlockLength(Org.Brotli.Dec.BitReader br, Org.Brotli.Dec.State state)
{
state.inputEnd = Org.Brotli.Dec.BitReader.ReadBits(br, 1) == 1;
state.metaBlockLength = 0;
state.isUncompressed = false;
state.isMetadata = false;
if (state.inputEnd && Org.Brotli.Dec.BitReader.ReadBits(br, 1) != 0)
{
return;
}
int sizeNibbles = Org.Brotli.Dec.BitReader.ReadBits(br, 2) + 4;
if (sizeNibbles == 7)
{
state.isMetadata = true;
if (Org.Brotli.Dec.BitReader.ReadBits(br, 1) != 0)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Corrupted reserved bit");
}
int sizeBytes = Org.Brotli.Dec.BitReader.ReadBits(br, 2);
if (sizeBytes == 0)
{
return;
}
for (int i = 0; i < sizeBytes; i++)
{
int bits = Org.Brotli.Dec.BitReader.ReadBits(br, 8);
if (bits == 0 && i + 1 == sizeBytes && sizeBytes > 1)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Exuberant nibble");
}
state.metaBlockLength |= bits << (i * 8);
}
}
else
{
for (int i = 0; i < sizeNibbles; i++)
{
int bits = Org.Brotli.Dec.BitReader.ReadBits(br, 4);
if (bits == 0 && i + 1 == sizeNibbles && sizeNibbles > 4)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Exuberant nibble");
}
state.metaBlockLength |= bits << (i * 4);
}
}
state.metaBlockLength++;
if (!state.inputEnd)
{
state.isUncompressed = Org.Brotli.Dec.BitReader.ReadBits(br, 1) == 1;
}
}
/// <summary>Decodes the next Huffman code from bit-stream.</summary>
private static int ReadSymbol(int[] table, int offset, Org.Brotli.Dec.BitReader br)
{
int val = (int)((long)(((ulong)br.accumulator) >> br.bitOffset));
offset += val & HuffmanTableMask;
int bits = table[offset] >> 16;
int sym = table[offset] & unchecked((int)(0xFFFF));
if (bits <= HuffmanTableBits)
{
br.bitOffset += bits;
return sym;
}
offset += sym;
int mask = (1 << bits) - 1;
offset += (int)(((uint)(val & mask)) >> HuffmanTableBits);
br.bitOffset += ((table[offset] >> 16) + HuffmanTableBits);
return table[offset] & unchecked((int)(0xFFFF));
}
private static int ReadBlockLength(int[] table, int offset, Org.Brotli.Dec.BitReader br)
{
Org.Brotli.Dec.BitReader.FillBitWindow(br);
int code = ReadSymbol(table, offset, br);
int n = Org.Brotli.Dec.Prefix.BlockLengthNBits[code];
return Org.Brotli.Dec.Prefix.BlockLengthOffset[code] + Org.Brotli.Dec.BitReader.ReadBits(br, n);
}
private static int TranslateShortCodes(int code, int[] ringBuffer, int index)
{
if (code < NumDistanceShortCodes)
{
index += DistanceShortCodeIndexOffset[code];
index &= 3;
return ringBuffer[index] + DistanceShortCodeValueOffset[code];
}
return code - NumDistanceShortCodes + 1;
}
private static void MoveToFront(int[] v, int index)
{
int value = v[index];
for (; index > 0; index--)
{
v[index] = v[index - 1];
}
v[0] = value;
}
private static void InverseMoveToFrontTransform(byte[] v, int vLen)
{
int[] mtf = new int[256];
for (int i = 0; i < 256; i++)
{
mtf[i] = i;
}
for (int i = 0; i < vLen; i++)
{
int index = v[i] & unchecked((int)(0xFF));
v[i] = unchecked((byte)mtf[index]);
if (index != 0)
{
MoveToFront(mtf, index);
}
}
}
private static void ReadHuffmanCodeLengths(int[] codeLengthCodeLengths, int numSymbols, int[] codeLengths, Org.Brotli.Dec.BitReader br)
{
int symbol = 0;
int prevCodeLen = DefaultCodeLength;
int repeat = 0;
int repeatCodeLen = 0;
int space = 32768;
int[] table = new int[32];
Org.Brotli.Dec.Huffman.BuildHuffmanTable(table, 0, 5, codeLengthCodeLengths, CodeLengthCodes);
while (symbol < numSymbols && space > 0)
{
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
Org.Brotli.Dec.BitReader.FillBitWindow(br);
int p = (int)(((long)(((ulong)br.accumulator) >> br.bitOffset))) & 31;
br.bitOffset += table[p] >> 16;
int codeLen = table[p] & unchecked((int)(0xFFFF));
if (codeLen < CodeLengthRepeatCode)
{
repeat = 0;
codeLengths[symbol++] = codeLen;
if (codeLen != 0)
{
prevCodeLen = codeLen;
space -= 32768 >> codeLen;
}
}
else
{
int extraBits = codeLen - 14;
int newLen = 0;
if (codeLen == CodeLengthRepeatCode)
{
newLen = prevCodeLen;
}
if (repeatCodeLen != newLen)
{
repeat = 0;
repeatCodeLen = newLen;
}
int oldRepeat = repeat;
if (repeat > 0)
{
repeat -= 2;
repeat <<= extraBits;
}
repeat += Org.Brotli.Dec.BitReader.ReadBits(br, extraBits) + 3;
int repeatDelta = repeat - oldRepeat;
if (symbol + repeatDelta > numSymbols)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("symbol + repeatDelta > numSymbols");
}
// COV_NF_LINE
for (int i = 0; i < repeatDelta; i++)
{
codeLengths[symbol++] = repeatCodeLen;
}
if (repeatCodeLen != 0)
{
space -= repeatDelta << (15 - repeatCodeLen);
}
}
}
if (space != 0)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Unused space");
}
// COV_NF_LINE
// TODO: Pass max_symbol to Huffman table builder instead?
Org.Brotli.Dec.Utils.FillWithZeroes(codeLengths, symbol, numSymbols - symbol);
}
// TODO: Use specialized versions for smaller tables.
internal static void ReadHuffmanCode(int alphabetSize, int[] table, int offset, Org.Brotli.Dec.BitReader br)
{
bool ok = true;
int simpleCodeOrSkip;
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
// TODO: Avoid allocation.
int[] codeLengths = new int[alphabetSize];
simpleCodeOrSkip = Org.Brotli.Dec.BitReader.ReadBits(br, 2);
if (simpleCodeOrSkip == 1)
{
// Read symbols, codes & code lengths directly.
int maxBitsCounter = alphabetSize - 1;
int maxBits = 0;
int[] symbols = new int[4];
int numSymbols = Org.Brotli.Dec.BitReader.ReadBits(br, 2) + 1;
while (maxBitsCounter != 0)
{
maxBitsCounter >>= 1;
maxBits++;
}
// TODO: uncomment when codeLengths is reused.
// Utils.fillWithZeroes(codeLengths, 0, alphabetSize);
for (int i = 0; i < numSymbols; i++)
{
symbols[i] = Org.Brotli.Dec.BitReader.ReadBits(br, maxBits) % alphabetSize;
codeLengths[symbols[i]] = 2;
}
codeLengths[symbols[0]] = 1;
switch (numSymbols)
{
case 1:
{
break;
}
case 2:
{
ok = symbols[0] != symbols[1];
codeLengths[symbols[1]] = 1;
break;
}
case 3:
{
ok = symbols[0] != symbols[1] && symbols[0] != symbols[2] && symbols[1] != symbols[2];
break;
}
case 4:
default:
{
ok = symbols[0] != symbols[1] && symbols[0] != symbols[2] && symbols[0] != symbols[3] && symbols[1] != symbols[2] && symbols[1] != symbols[3] && symbols[2] != symbols[3];
if (Org.Brotli.Dec.BitReader.ReadBits(br, 1) == 1)
{
codeLengths[symbols[2]] = 3;
codeLengths[symbols[3]] = 3;
}
else
{
codeLengths[symbols[0]] = 2;
}
break;
}
}
}
else
{
// Decode Huffman-coded code lengths.
int[] codeLengthCodeLengths = new int[CodeLengthCodes];
int space = 32;
int numCodes = 0;
for (int i = simpleCodeOrSkip; i < CodeLengthCodes && space > 0; i++)
{
int codeLenIdx = CodeLengthCodeOrder[i];
Org.Brotli.Dec.BitReader.FillBitWindow(br);
int p = (int)((long)(((ulong)br.accumulator) >> br.bitOffset)) & 15;
// TODO: Demultiplex FIXED_TABLE.
br.bitOffset += FixedTable[p] >> 16;
int v = FixedTable[p] & unchecked((int)(0xFFFF));
codeLengthCodeLengths[codeLenIdx] = v;
if (v != 0)
{
space -= (32 >> v);
numCodes++;
}
}
ok = (numCodes == 1 || space == 0);
ReadHuffmanCodeLengths(codeLengthCodeLengths, alphabetSize, codeLengths, br);
}
if (!ok)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Can't readHuffmanCode");
}
// COV_NF_LINE
Org.Brotli.Dec.Huffman.BuildHuffmanTable(table, offset, HuffmanTableBits, codeLengths, alphabetSize);
}
private static int DecodeContextMap(int contextMapSize, byte[] contextMap, Org.Brotli.Dec.BitReader br)
{
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
int numTrees = DecodeVarLenUnsignedByte(br) + 1;
if (numTrees == 1)
{
Org.Brotli.Dec.Utils.FillWithZeroes(contextMap, 0, contextMapSize);
return numTrees;
}
bool useRleForZeros = Org.Brotli.Dec.BitReader.ReadBits(br, 1) == 1;
int maxRunLengthPrefix = 0;
if (useRleForZeros)
{
maxRunLengthPrefix = Org.Brotli.Dec.BitReader.ReadBits(br, 4) + 1;
}
int[] table = new int[Org.Brotli.Dec.Huffman.HuffmanMaxTableSize];
ReadHuffmanCode(numTrees + maxRunLengthPrefix, table, 0, br);
for (int i = 0; i < contextMapSize; )
{
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
Org.Brotli.Dec.BitReader.FillBitWindow(br);
int code = ReadSymbol(table, 0, br);
if (code == 0)
{
contextMap[i] = 0;
i++;
}
else if (code <= maxRunLengthPrefix)
{
int reps = (1 << code) + Org.Brotli.Dec.BitReader.ReadBits(br, code);
while (reps != 0)
{
if (i >= contextMapSize)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Corrupted context map");
}
// COV_NF_LINE
contextMap[i] = 0;
i++;
reps--;
}
}
else
{
contextMap[i] = unchecked((byte)(code - maxRunLengthPrefix));
i++;
}
}
if (Org.Brotli.Dec.BitReader.ReadBits(br, 1) == 1)
{
InverseMoveToFrontTransform(contextMap, contextMapSize);
}
return numTrees;
}
private static void DecodeBlockTypeAndLength(Org.Brotli.Dec.State state, int treeType)
{
Org.Brotli.Dec.BitReader br = state.br;
int[] ringBuffers = state.blockTypeRb;
int offset = treeType * 2;
Org.Brotli.Dec.BitReader.FillBitWindow(br);
int blockType = ReadSymbol(state.blockTypeTrees, treeType * Org.Brotli.Dec.Huffman.HuffmanMaxTableSize, br);
state.blockLength[treeType] = ReadBlockLength(state.blockLenTrees, treeType * Org.Brotli.Dec.Huffman.HuffmanMaxTableSize, br);
if (blockType == 1)
{
blockType = ringBuffers[offset + 1] + 1;
}
else if (blockType == 0)
{
blockType = ringBuffers[offset];
}
else
{
blockType -= 2;
}
if (blockType >= state.numBlockTypes[treeType])
{
blockType -= state.numBlockTypes[treeType];
}
ringBuffers[offset] = ringBuffers[offset + 1];
ringBuffers[offset + 1] = blockType;
}
private static void DecodeLiteralBlockSwitch(Org.Brotli.Dec.State state)
{
DecodeBlockTypeAndLength(state, 0);
int literalBlockType = state.blockTypeRb[1];
state.contextMapSlice = literalBlockType << LiteralContextBits;
state.literalTreeIndex = state.contextMap[state.contextMapSlice] & unchecked((int)(0xFF));
state.literalTree = state.hGroup0.trees[state.literalTreeIndex];
int contextMode = state.contextModes[literalBlockType];
state.contextLookupOffset1 = Org.Brotli.Dec.Context.LookupOffsets[contextMode];
state.contextLookupOffset2 = Org.Brotli.Dec.Context.LookupOffsets[contextMode + 1];
}
private static void DecodeCommandBlockSwitch(Org.Brotli.Dec.State state)
{
DecodeBlockTypeAndLength(state, 1);
state.treeCommandOffset = state.hGroup1.trees[state.blockTypeRb[3]];
}
private static void DecodeDistanceBlockSwitch(Org.Brotli.Dec.State state)
{
DecodeBlockTypeAndLength(state, 2);
state.distContextMapSlice = state.blockTypeRb[5] << DistanceContextBits;
}
private static void MaybeReallocateRingBuffer(Org.Brotli.Dec.State state)
{
int newSize = state.maxRingBufferSize;
if ((long)newSize > state.expectedTotalSize)
{
/* TODO: Handle 2GB+ cases more gracefully. */
int minimalNewSize = (int)state.expectedTotalSize + state.customDictionary.Length;
while ((newSize >> 1) > minimalNewSize)
{
newSize >>= 1;
}
if (!state.inputEnd && newSize < 16384 && state.maxRingBufferSize >= 16384)
{
newSize = 16384;
}
}
if (newSize <= state.ringBufferSize)
{
return;
}
int ringBufferSizeWithSlack = newSize + Org.Brotli.Dec.Dictionary.MaxTransformedWordLength;
byte[] newBuffer = new byte[ringBufferSizeWithSlack];
if (state.ringBuffer != null)
{
System.Array.Copy(state.ringBuffer, 0, newBuffer, 0, state.ringBufferSize);
}
else if (state.customDictionary.Length != 0)
{
/* Prepend custom dictionary, if any. */
int length = state.customDictionary.Length;
int offset = 0;
if (length > state.maxBackwardDistance)
{
offset = length - state.maxBackwardDistance;
length = state.maxBackwardDistance;
}
System.Array.Copy(state.customDictionary, offset, newBuffer, 0, length);
state.pos = length;
state.bytesToIgnore = length;
}
state.ringBuffer = newBuffer;
state.ringBufferSize = newSize;
}
/// <summary>Reads next metablock header.</summary>
/// <param name="state">decoding state</param>
private static void ReadMetablockInfo(Org.Brotli.Dec.State state)
{
Org.Brotli.Dec.BitReader br = state.br;
if (state.inputEnd)
{
state.nextRunningState = Org.Brotli.Dec.RunningState.Finished;
state.bytesToWrite = state.pos;
state.bytesWritten = 0;
state.runningState = Org.Brotli.Dec.RunningState.Write;
return;
}
// TODO: Reset? Do we need this?
state.hGroup0.codes = null;
state.hGroup0.trees = null;
state.hGroup1.codes = null;
state.hGroup1.trees = null;
state.hGroup2.codes = null;
state.hGroup2.trees = null;
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
DecodeMetaBlockLength(br, state);
if (state.metaBlockLength == 0 && !state.isMetadata)
{
return;
}
if (state.isUncompressed || state.isMetadata)
{
Org.Brotli.Dec.BitReader.JumpToByteBoundary(br);
state.runningState = state.isMetadata ? Org.Brotli.Dec.RunningState.ReadMetadata : Org.Brotli.Dec.RunningState.CopyUncompressed;
}
else
{
state.runningState = Org.Brotli.Dec.RunningState.CompressedBlockStart;
}
if (state.isMetadata)
{
return;
}
state.expectedTotalSize += state.metaBlockLength;
if (state.ringBufferSize < state.maxRingBufferSize)
{
MaybeReallocateRingBuffer(state);
}
}
private static void ReadMetablockHuffmanCodesAndContextMaps(Org.Brotli.Dec.State state)
{
Org.Brotli.Dec.BitReader br = state.br;
for (int i = 0; i < 3; i++)
{
state.numBlockTypes[i] = DecodeVarLenUnsignedByte(br) + 1;
state.blockLength[i] = 1 << 28;
if (state.numBlockTypes[i] > 1)
{
ReadHuffmanCode(state.numBlockTypes[i] + 2, state.blockTypeTrees, i * Org.Brotli.Dec.Huffman.HuffmanMaxTableSize, br);
ReadHuffmanCode(NumBlockLengthCodes, state.blockLenTrees, i * Org.Brotli.Dec.Huffman.HuffmanMaxTableSize, br);
state.blockLength[i] = ReadBlockLength(state.blockLenTrees, i * Org.Brotli.Dec.Huffman.HuffmanMaxTableSize, br);
}
}
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
state.distancePostfixBits = Org.Brotli.Dec.BitReader.ReadBits(br, 2);
state.numDirectDistanceCodes = NumDistanceShortCodes + (Org.Brotli.Dec.BitReader.ReadBits(br, 4) << state.distancePostfixBits);
state.distancePostfixMask = (1 << state.distancePostfixBits) - 1;
int numDistanceCodes = state.numDirectDistanceCodes + (48 << state.distancePostfixBits);
// TODO: Reuse?
state.contextModes = new byte[state.numBlockTypes[0]];
for (int i = 0; i < state.numBlockTypes[0]; )
{
/* Ensure that less than 256 bits read between readMoreInput. */
int limit = System.Math.Min(i + 96, state.numBlockTypes[0]);
for (; i < limit; ++i)
{
state.contextModes[i] = unchecked((byte)(Org.Brotli.Dec.BitReader.ReadBits(br, 2) << 1));
}
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
}
// TODO: Reuse?
state.contextMap = new byte[state.numBlockTypes[0] << LiteralContextBits];
int numLiteralTrees = DecodeContextMap(state.numBlockTypes[0] << LiteralContextBits, state.contextMap, br);
state.trivialLiteralContext = true;
for (int j = 0; j < state.numBlockTypes[0] << LiteralContextBits; j++)
{
if (state.contextMap[j] != j >> LiteralContextBits)
{
state.trivialLiteralContext = false;
break;
}
}
// TODO: Reuse?
state.distContextMap = new byte[state.numBlockTypes[2] << DistanceContextBits];
int numDistTrees = DecodeContextMap(state.numBlockTypes[2] << DistanceContextBits, state.distContextMap, br);
Org.Brotli.Dec.HuffmanTreeGroup.Init(state.hGroup0, NumLiteralCodes, numLiteralTrees);
Org.Brotli.Dec.HuffmanTreeGroup.Init(state.hGroup1, NumInsertAndCopyCodes, state.numBlockTypes[1]);
Org.Brotli.Dec.HuffmanTreeGroup.Init(state.hGroup2, numDistanceCodes, numDistTrees);
Org.Brotli.Dec.HuffmanTreeGroup.Decode(state.hGroup0, br);
Org.Brotli.Dec.HuffmanTreeGroup.Decode(state.hGroup1, br);
Org.Brotli.Dec.HuffmanTreeGroup.Decode(state.hGroup2, br);
state.contextMapSlice = 0;
state.distContextMapSlice = 0;
state.contextLookupOffset1 = Org.Brotli.Dec.Context.LookupOffsets[state.contextModes[0]];
state.contextLookupOffset2 = Org.Brotli.Dec.Context.LookupOffsets[state.contextModes[0] + 1];
state.literalTreeIndex = 0;
state.literalTree = state.hGroup0.trees[0];
state.treeCommandOffset = state.hGroup1.trees[0];
// TODO: == 0?
state.blockTypeRb[0] = state.blockTypeRb[2] = state.blockTypeRb[4] = 1;
state.blockTypeRb[1] = state.blockTypeRb[3] = state.blockTypeRb[5] = 0;
}
private static void CopyUncompressedData(Org.Brotli.Dec.State state)
{
Org.Brotli.Dec.BitReader br = state.br;
byte[] ringBuffer = state.ringBuffer;
// Could happen if block ends at ring buffer end.
if (state.metaBlockLength <= 0)
{
Org.Brotli.Dec.BitReader.Reload(br);
state.runningState = Org.Brotli.Dec.RunningState.BlockStart;
return;
}
int chunkLength = System.Math.Min(state.ringBufferSize - state.pos, state.metaBlockLength);
Org.Brotli.Dec.BitReader.CopyBytes(br, ringBuffer, state.pos, chunkLength);
state.metaBlockLength -= chunkLength;
state.pos += chunkLength;
if (state.pos == state.ringBufferSize)
{
state.nextRunningState = Org.Brotli.Dec.RunningState.CopyUncompressed;
state.bytesToWrite = state.ringBufferSize;
state.bytesWritten = 0;
state.runningState = Org.Brotli.Dec.RunningState.Write;
return;
}
Org.Brotli.Dec.BitReader.Reload(br);
state.runningState = Org.Brotli.Dec.RunningState.BlockStart;
}
private static bool WriteRingBuffer(Org.Brotli.Dec.State state)
{
/* Ignore custom dictionary bytes. */
if (state.bytesToIgnore != 0)
{
state.bytesWritten += state.bytesToIgnore;
state.bytesToIgnore = 0;
}
int toWrite = System.Math.Min(state.outputLength - state.outputUsed, state.bytesToWrite - state.bytesWritten);
if (toWrite != 0)
{
System.Array.Copy(state.ringBuffer, state.bytesWritten, state.output, state.outputOffset + state.outputUsed, toWrite);
state.outputUsed += toWrite;
state.bytesWritten += toWrite;
}
return state.outputUsed < state.outputLength;
}
internal static void SetCustomDictionary(Org.Brotli.Dec.State state, byte[] data)
{
state.customDictionary = (data == null) ? new byte[0] : data;
}
/// <summary>Actual decompress implementation.</summary>
internal static void Decompress(Org.Brotli.Dec.State state)
{
if (state.runningState == Org.Brotli.Dec.RunningState.Uninitialized)
{
throw new System.InvalidOperationException("Can't decompress until initialized");
}
if (state.runningState == Org.Brotli.Dec.RunningState.Closed)
{
throw new System.InvalidOperationException("Can't decompress after close");
}
Org.Brotli.Dec.BitReader br = state.br;
int ringBufferMask = state.ringBufferSize - 1;
byte[] ringBuffer = state.ringBuffer;
while (state.runningState != Org.Brotli.Dec.RunningState.Finished)
{
switch (state.runningState)
{
case Org.Brotli.Dec.RunningState.BlockStart:
{
// TODO: extract cases to methods for the better readability.
if (state.metaBlockLength < 0)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Invalid metablock length");
}
ReadMetablockInfo(state);
/* Ring-buffer would be reallocated here. */
ringBufferMask = state.ringBufferSize - 1;
ringBuffer = state.ringBuffer;
continue;
}
case Org.Brotli.Dec.RunningState.CompressedBlockStart:
{
ReadMetablockHuffmanCodesAndContextMaps(state);
state.runningState = Org.Brotli.Dec.RunningState.MainLoop;
goto case Org.Brotli.Dec.RunningState.MainLoop;
}
case Org.Brotli.Dec.RunningState.MainLoop:
{
// Fall through
if (state.metaBlockLength <= 0)
{
state.runningState = Org.Brotli.Dec.RunningState.BlockStart;
continue;
}
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
if (state.blockLength[1] == 0)
{
DecodeCommandBlockSwitch(state);
}
state.blockLength[1]--;
Org.Brotli.Dec.BitReader.FillBitWindow(br);
int cmdCode = ReadSymbol(state.hGroup1.codes, state.treeCommandOffset, br);
int rangeIdx = (int)(((uint)cmdCode) >> 6);
state.distanceCode = 0;
if (rangeIdx >= 2)
{
rangeIdx -= 2;
state.distanceCode = -1;
}
int insertCode = Org.Brotli.Dec.Prefix.InsertRangeLut[rangeIdx] + (((int)(((uint)cmdCode) >> 3)) & 7);
int copyCode = Org.Brotli.Dec.Prefix.CopyRangeLut[rangeIdx] + (cmdCode & 7);
state.insertLength = Org.Brotli.Dec.Prefix.InsertLengthOffset[insertCode] + Org.Brotli.Dec.BitReader.ReadBits(br, Org.Brotli.Dec.Prefix.InsertLengthNBits[insertCode]);
state.copyLength = Org.Brotli.Dec.Prefix.CopyLengthOffset[copyCode] + Org.Brotli.Dec.BitReader.ReadBits(br, Org.Brotli.Dec.Prefix.CopyLengthNBits[copyCode]);
state.j = 0;
state.runningState = Org.Brotli.Dec.RunningState.InsertLoop;
goto case Org.Brotli.Dec.RunningState.InsertLoop;
}
case Org.Brotli.Dec.RunningState.InsertLoop:
{
// Fall through
if (state.trivialLiteralContext)
{
while (state.j < state.insertLength)
{
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
if (state.blockLength[0] == 0)
{
DecodeLiteralBlockSwitch(state);
}
state.blockLength[0]--;
Org.Brotli.Dec.BitReader.FillBitWindow(br);
ringBuffer[state.pos] = unchecked((byte)ReadSymbol(state.hGroup0.codes, state.literalTree, br));
state.j++;
if (state.pos++ == ringBufferMask)
{
state.nextRunningState = Org.Brotli.Dec.RunningState.InsertLoop;
state.bytesToWrite = state.ringBufferSize;
state.bytesWritten = 0;
state.runningState = Org.Brotli.Dec.RunningState.Write;
break;
}
}
}
else
{
int prevByte1 = ringBuffer[(state.pos - 1) & ringBufferMask] & unchecked((int)(0xFF));
int prevByte2 = ringBuffer[(state.pos - 2) & ringBufferMask] & unchecked((int)(0xFF));
while (state.j < state.insertLength)
{
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
if (state.blockLength[0] == 0)
{
DecodeLiteralBlockSwitch(state);
}
int literalTreeIndex = state.contextMap[state.contextMapSlice + (Org.Brotli.Dec.Context.Lookup[state.contextLookupOffset1 + prevByte1] | Org.Brotli.Dec.Context.Lookup[state.contextLookupOffset2 + prevByte2])] & unchecked((int)(0xFF));
state.blockLength[0]--;
prevByte2 = prevByte1;
Org.Brotli.Dec.BitReader.FillBitWindow(br);
prevByte1 = ReadSymbol(state.hGroup0.codes, state.hGroup0.trees[literalTreeIndex], br);
ringBuffer[state.pos] = unchecked((byte)prevByte1);
state.j++;
if (state.pos++ == ringBufferMask)
{
state.nextRunningState = Org.Brotli.Dec.RunningState.InsertLoop;
state.bytesToWrite = state.ringBufferSize;
state.bytesWritten = 0;
state.runningState = Org.Brotli.Dec.RunningState.Write;
break;
}
}
}
if (state.runningState != Org.Brotli.Dec.RunningState.InsertLoop)
{
continue;
}
state.metaBlockLength -= state.insertLength;
if (state.metaBlockLength <= 0)
{
state.runningState = Org.Brotli.Dec.RunningState.MainLoop;
continue;
}
if (state.distanceCode < 0)
{
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
if (state.blockLength[2] == 0)
{
DecodeDistanceBlockSwitch(state);
}
state.blockLength[2]--;
Org.Brotli.Dec.BitReader.FillBitWindow(br);
state.distanceCode = ReadSymbol(state.hGroup2.codes, state.hGroup2.trees[state.distContextMap[state.distContextMapSlice + (state.copyLength > 4 ? 3 : state.copyLength - 2)] & unchecked((int)(0xFF))], br);
if (state.distanceCode >= state.numDirectDistanceCodes)
{
state.distanceCode -= state.numDirectDistanceCodes;
int postfix = state.distanceCode & state.distancePostfixMask;
state.distanceCode = (int)(((uint)state.distanceCode) >> state.distancePostfixBits);
int n = ((int)(((uint)state.distanceCode) >> 1)) + 1;
int offset = ((2 + (state.distanceCode & 1)) << n) - 4;
state.distanceCode = state.numDirectDistanceCodes + postfix + ((offset + Org.Brotli.Dec.BitReader.ReadBits(br, n)) << state.distancePostfixBits);
}
}
// Convert the distance code to the actual distance by possibly looking up past distances
// from the ringBuffer.
state.distance = TranslateShortCodes(state.distanceCode, state.distRb, state.distRbIdx);
if (state.distance < 0)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Negative distance");
}
// COV_NF_LINE
if (state.maxDistance != state.maxBackwardDistance && state.pos < state.maxBackwardDistance)
{
state.maxDistance = state.pos;
}
else
{
state.maxDistance = state.maxBackwardDistance;
}
state.copyDst = state.pos;
if (state.distance > state.maxDistance)
{
state.runningState = Org.Brotli.Dec.RunningState.Transform;
continue;
}
if (state.distanceCode > 0)
{
state.distRb[state.distRbIdx & 3] = state.distance;
state.distRbIdx++;
}
if (state.copyLength > state.metaBlockLength)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Invalid backward reference");
}
// COV_NF_LINE
state.j = 0;
state.runningState = Org.Brotli.Dec.RunningState.CopyLoop;
goto case Org.Brotli.Dec.RunningState.CopyLoop;
}
case Org.Brotli.Dec.RunningState.CopyLoop:
{
// fall through
int src = (state.pos - state.distance) & ringBufferMask;
int dst = state.pos;
int copyLength = state.copyLength - state.j;
if ((src + copyLength < ringBufferMask) && (dst + copyLength < ringBufferMask))
{
for (int k = 0; k < copyLength; ++k)
{
ringBuffer[dst++] = ringBuffer[src++];
}
state.j += copyLength;
state.metaBlockLength -= copyLength;
state.pos += copyLength;
}
else
{
for (; state.j < state.copyLength; )
{
ringBuffer[state.pos] = ringBuffer[(state.pos - state.distance) & ringBufferMask];
state.metaBlockLength--;
state.j++;
if (state.pos++ == ringBufferMask)
{
state.nextRunningState = Org.Brotli.Dec.RunningState.CopyLoop;
state.bytesToWrite = state.ringBufferSize;
state.bytesWritten = 0;
state.runningState = Org.Brotli.Dec.RunningState.Write;
break;
}
}
}
if (state.runningState == Org.Brotli.Dec.RunningState.CopyLoop)
{
state.runningState = Org.Brotli.Dec.RunningState.MainLoop;
}
continue;
}
case Org.Brotli.Dec.RunningState.Transform:
{
if (state.copyLength >= Org.Brotli.Dec.Dictionary.MinWordLength && state.copyLength <= Org.Brotli.Dec.Dictionary.MaxWordLength)
{
int offset = Org.Brotli.Dec.Dictionary.OffsetsByLength[state.copyLength];
int wordId = state.distance - state.maxDistance - 1;
int shift = Org.Brotli.Dec.Dictionary.SizeBitsByLength[state.copyLength];
int mask = (1 << shift) - 1;
int wordIdx = wordId & mask;
int transformIdx = (int)(((uint)wordId) >> shift);
offset += wordIdx * state.copyLength;
if (transformIdx < Org.Brotli.Dec.Transform.Transforms.Length)
{
int len = Org.Brotli.Dec.Transform.TransformDictionaryWord(ringBuffer, state.copyDst, Org.Brotli.Dec.Dictionary.GetData(), offset, state.copyLength, Org.Brotli.Dec.Transform.Transforms[transformIdx]);
state.copyDst += len;
state.pos += len;
state.metaBlockLength -= len;
if (state.copyDst >= state.ringBufferSize)
{
state.nextRunningState = Org.Brotli.Dec.RunningState.CopyWrapBuffer;
state.bytesToWrite = state.ringBufferSize;
state.bytesWritten = 0;
state.runningState = Org.Brotli.Dec.RunningState.Write;
continue;
}
}
else
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Invalid backward reference");
}
}
else
{
// COV_NF_LINE
throw new Org.Brotli.Dec.BrotliRuntimeException("Invalid backward reference");
}
// COV_NF_LINE
state.runningState = Org.Brotli.Dec.RunningState.MainLoop;
continue;
}
case Org.Brotli.Dec.RunningState.CopyWrapBuffer:
{
System.Array.Copy(ringBuffer, state.ringBufferSize, ringBuffer, 0, state.copyDst - state.ringBufferSize);
state.runningState = Org.Brotli.Dec.RunningState.MainLoop;
continue;
}
case Org.Brotli.Dec.RunningState.ReadMetadata:
{
while (state.metaBlockLength > 0)
{
Org.Brotli.Dec.BitReader.ReadMoreInput(br);
// Optimize
Org.Brotli.Dec.BitReader.ReadBits(br, 8);
state.metaBlockLength--;
}
state.runningState = Org.Brotli.Dec.RunningState.BlockStart;
continue;
}
case Org.Brotli.Dec.RunningState.CopyUncompressed:
{
CopyUncompressedData(state);
continue;
}
case Org.Brotli.Dec.RunningState.Write:
{
if (!WriteRingBuffer(state))
{
// Output buffer is full.
return;
}
if (state.pos >= state.maxBackwardDistance)
{
state.maxDistance = state.maxBackwardDistance;
}
state.pos &= ringBufferMask;
state.runningState = state.nextRunningState;
continue;
}
default:
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Unexpected state " + state.runningState);
}
}
}
if (state.runningState == Org.Brotli.Dec.RunningState.Finished)
{
if (state.metaBlockLength < 0)
{
throw new Org.Brotli.Dec.BrotliRuntimeException("Invalid metablock length");
}
Org.Brotli.Dec.BitReader.JumpToByteBoundary(br);
Org.Brotli.Dec.BitReader.CheckHealth(state.br, true);
}
}
}
}
================================================
FILE: AssetStudio/Brotli/Dictionary.cs
================================================
/* Copyright 2015 Google Inc. All Rights Reserved.
Distributed under MIT license.
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
*/
namespace Org.Brotli.Dec
{
/// <summary>Collection of static dictionary words.</summary>
/// <remarks>
/// Collection of static dictionary words.
/// <p>Dictionary content is loaded from binary resource when
/// <see cref="GetData()"/>
/// is executed for the
/// first time. Consequently, it saves memory and CPU in case dictionary is not required.
/// <p>One possible drawback is that multiple threads that need dictionary data may be blocked (only
/// once in each classworld). To avoid this, it is enough to call
/// <see cref="GetData()"/>
/// proactively.
/// </remarks>
internal sealed class Dictionary
{
/// <summary>"Initialization-on-demand holder idiom" implementation.</summary>
/// <remarks>
/// "Initialization-on-demand holder idiom" implementation.
/// <p>This static class definition is not initialized until the JVM determines that it must be
/// executed (when the static method
/// <see cref="GetData()"/>
/// is invoked).
/// </remarks>
private class DataHolder0
{
internal static string GetData()
{
return "timedownlifeleftbackcodedatashowonlysitecityopenjustlikefreeworktextyearoverbodyloveformbookplaylivelinehelphomesidemorewordlongthemviewfindpagedaysfullheadtermeachareafromtruemarkableuponhighdatelandnewsevennextcasebothpostusedmadehandherewhatnameLinkblogsizebaseheldmakemainuser') +holdendswithNewsreadweresigntakehavegameseencallpathwellplusmenufilmpartjointhislistgoodneedwayswestjobsmindalsologorichuseslastteamarmyfoodkingwilleastwardbestfirePageknowaway.pngmovethanloadgiveselfnotemuchfeedmanyrockicononcelookhidediedHomerulehostajaxinfoclublawslesshalfsomesuchzone100%onescareTimeracebluefourweekfacehopegavehardlostwhenparkkeptpassshiproomHTMLplanTypedonesavekeepflaglinksoldfivetookratetownjumpthusdarkcardfilefearstaykillthatfallautoever.comtalkshopvotedeepmoderestturnbornbandfellroseurl(skinrolecomeactsagesmeetgold.jpgitemvaryfeltthensenddropViewcopy1.0\"</a>stopelseliestourpack.gifpastcss?graymean>rideshotlatesaidroadvar feeljohnrickportfast'UA-dead</b>poorbilltypeU.S.woodmust2px;Inforankwidewantwalllead[0];paulwavesure$('#waitmassarmsgoesgainlangpaid!-- lockunitrootwalkfirmwifexml\"songtest20pxkindrowstoolfontmailsafestarmapscorerainflowbabyspansays4px;6px;artsfootrealwikiheatsteptriporg/lakeweaktoldFormcastfansbankveryrunsjulytask1px;goalgrewslowedgeid=\"sets5px;.js?40pxif (soonseatnonetubezerosentreedfactintogiftharm18pxcamehillboldzoomvoideasyringfillpeakinitcost3px;jacktagsbitsrolleditknewnear<!--growJSONdutyNamesaleyou lotspainjazzcoldeyesfishwww.risktabsprev10pxrise25pxBlueding300,ballfordearnwildbox.fairlackverspairjunetechif(!pickevil$(\"#warmlorddoespull,000ideadrawhugespotfundburnhrefcellkeystickhourlossfuel12pxsuitdealRSS\"agedgreyGET\"easeaimsgirlaids8px;navygridtips#999warsladycars); }php?helltallwhomzh:\u00E5*/\r\n 100hall.\n\nA7px;pushchat0px;crew*/</hash75pxflatrare && tellcampontolaidmissskiptentfinemalegetsplot400,\r\n\r\ncoolfeet.php<br>ericmostguidbelldeschairmathatom/imgRluckcent000;tinygonehtmlselldrugFREEnodenick?id=losenullvastwindRSS wearrelybeensamedukenasacapewishgulfT23:hitsslotgatekickblurthey15px''););\">msiewinsbirdsortbetaseekT18:ordstreemall60pxfarm\u00E2\u0080\u0099sboys[0].');\"POSTbearkids);}}marytend(UK)quadzh:\u00E6-siz----prop');\rliftT19:viceandydebt>RSSpoolneckblowT16:doorevalT17:letsfailoralpollnovacolsgene \u00E2\u0080\u0094softrometillross<h3>pourfadepink<tr>mini)|!(minezh:\u00E8barshear00);milk -->ironfreddiskwentsoilputs/js/holyT22:ISBNT20:adamsees<h2>json', 'contT21: RSSloopasiamoon</p>soulLINEfortcartT14:<h1>80px!--<9px;T04:mike:46ZniceinchYorkricezh:\u00E4'));puremageparatonebond:37Z_of_']);000,zh:\u00E7tankyardbowlbush:56ZJava30px\n|}\n%C3%:34ZjeffEXPIcashvisagolfsnowzh:\u00E9quer.csssickmeatmin.binddellhirepicsrent:36ZHTTP-201fotowolfEND xbox:54ZBODYdick;\n}\nexit:35Zvarsbeat'});diet999;anne}}</[i].Langkm\u00C2\u00B2wiretoysaddssealalex;\n\t}echonine.org005)tonyjewssandlegsroof000) 200winegeardogsbootgarycutstyletemption.xmlcockgang$('.50pxPh.Dmiscalanloandeskmileryanunixdisc);}\ndustclip).\n\n70px-200DVDs7]><tapedemoi++)wageeurophiloptsholeFAQsasin-26TlabspetsURL bulkcook;}\r\nHEAD[0])abbrjuan(198leshtwin</i>sonyguysfuckpipe|-\n!002)ndow[1];[];\nLog salt\r\n\t\tbangtrimbath){\r\n00px\n});ko:\u00ECfeesad>\rs:// [];tollplug(){\n{\r\n .js'200pdualboat.JPG);\n}quot);\n\n');\n\r\n}\r201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037201320122011201020092008200720062005200420032002200120001999199819971996199519941993199219911990198919881987198619851984198319821981198019791978197719761975197419731972197119701969196819671966196519641963196219611960195919581957195619551954195319521951195010001024139400009999comom\u00C3\u00A1sesteestaperotodohacecadaa\u00C3\u00B1obiend\u00C3\u00ADaas\u00C3\u00ADvidacasootroforosolootracualdijosidograntipotemadebealgoqu\u00C3\u00A9estonadatrespococasabajotodasinoaguapuesunosantediceluisellamayozonaamorpisoobraclicellodioshoracasi\u00D0\u00B7\u00D0\u00B0\u00D0\u00BD\u00D0\u00B0\u00D0\u00BE\u00D0\u00BC\u00D1\u0080\u00D0\u00B0\u00D1\u0080\u00D1\u0083\u00D1\u0082\u00D0\u00B0\u00D0\u00BD\u00D0\u00B5\u00D0\u00BF\u00D0\u00BE\u00D0\u00BE\u00D1\u0082\u00D0\u00B8\u00D0\u00B7\u00D0\u00BD\u00D0\u00BE\u00D0\u00B4\u00D0\u00BE\u00D1\u0082\u00D0\u00BE\u00D0\u00B6\u00D0\u00B5\u00D0\u00BE\u00D0\u00BD\u00D0\u00B8\u00D1\u0085\u00D0\u009D\u00D0\u00B0\u00D0\u00B5\u00D0\u00B5\u00D0\u00B1\u00D1\u008B\u00D0\u00BC\u00D1\u008B\u00D0\u0092\u00D1\u008B\u00D1\u0081\u00D0\u00BE\u00D0\u00B2\u00D1\u008B\u00D0\u00B2\u00D0\u00BE\u00D0\u009D\u00D0\u00BE\u00D0\u00BE\u00D0\u00B1\u00D0\u009F\u00D0\u00BE\u00D0\u00BB\u00D0\u00B8\u00D0\u00BD\u00D0\u00B8\u00D0\u00A0\u00D0\u00A4\u00D0\u009D\u00D0\u00B5\u00D0\u009C\u00D1\u008B\u00D1\u0082\u00D1\u008B\u00D0\u009E\u00D0\u00BD\u00D0\u00B8\u00D0\u00BC\u00D0\u00B4\u00D0\u00B0\u00D0\u0097\u00D0\u00B0\u00D0\u0094\u00D0\u00B0\u00D0\u009D\u00D1\u0083\u00D0\u009E\u00D0\u00B1\u00D1\u0082\u00D0\u00B5\u00D0\u0098\u00D0\u00B7\u00D0\u00B5\u00D0\u00B9\u00D0\u00BD\u00D1\u0083\u00D0\u00BC\u00D0\u00BC\u00D0\u00A2\u00D1\u008B\u00D1\u0083\u00D0\u00B6\u00D9\u0081\u00D9\u008A\u00D8\u00A3\u00D9\u0086\u00D9\u0085\u00D8\u00A7\u00D9\u0085\u00D8\u00B9\u00D9\u0083\u00D9\u0084\u00D8\u00A3\u00D9\u0088\u00D8\u00B1\u00D8\u00AF\u00D9\u008A\u00D8\u00A7\u00D9\u0081\u00D9\u0089\u00D9\u0087\u00D9\u0088\u00D9\u0084\u00D9\u0085\u00D9\u0084\u00D9\u0083\u00D8\u00A7\u00D9\u0088\u00D9\u0084\u00D9\u0087\u00D8\u00A8\u00D8\u00B3\u00D8\u00A7\u00D9\u0084\u00D8\u00A5\u00D9\u0086\u00D9\u0087\u00D9\u008A\u00D8\u00A3\u00D9\u008A\u00D9\u0082\u00D8\u00AF\u00D9\u0087\u00D9\u0084\u00D8\u00AB\u00D9\u0085\u00D8\u00A8\u00D9\u0087\u00D9\u0084\u00D9\u0088\u00D9\u0084\u00D9\u008A\u00D8\u00A8\u00D9\u0084\u00D8\u00A7\u00D9\u008A\u00D8\u00A8\u00D9\u0083\u00D8\u00B4\u00D9\u008A\u00D8\u00A7\u00D9\u0085\u00D8\u00A3\u00D9\u0085\u00D9\u0086\u00D8\u00AA\u00D8\u00A8\u00D9\u008A\u00D9\u0084\u00D9\u0086\u00D8\u00AD\u00D8\u00A8\u00D9\u0087\u00D9\u0085\u00D9\u0085\u00D8\u00
gitextract_lz0c6kqe/
├── .gitattributes
├── .github/
│ └── workflows/
│ └── build.yml
├── .gitignore
├── AssetStudio/
│ ├── 7zip/
│ │ ├── Common/
│ │ │ ├── CRC.cs
│ │ │ ├── CommandLineParser.cs
│ │ │ ├── InBuffer.cs
│ │ │ └── OutBuffer.cs
│ │ ├── Compress/
│ │ │ ├── LZ/
│ │ │ │ ├── IMatchFinder.cs
│ │ │ │ ├── LzBinTree.cs
│ │ │ │ ├── LzInWindow.cs
│ │ │ │ └── LzOutWindow.cs
│ │ │ ├── LZMA/
│ │ │ │ ├── LzmaBase.cs
│ │ │ │ ├── LzmaDecoder.cs
│ │ │ │ └── LzmaEncoder.cs
│ │ │ └── RangeCoder/
│ │ │ ├── RangeCoder.cs
│ │ │ ├── RangeCoderBit.cs
│ │ │ └── RangeCoderBitTree.cs
│ │ └── ICoder.cs
│ ├── AssetStudio.csproj
│ ├── AssetsManager.cs
│ ├── BigArrayPool.cs
│ ├── Brotli/
│ │ ├── BitReader.cs
│ │ ├── BrotliInputStream.cs
│ │ ├── BrotliRuntimeException.cs
│ │ ├── Context.cs
│ │ ├── Decode.cs
│ │ ├── Dictionary.cs
│ │ ├── Huffman.cs
│ │ ├── HuffmanTreeGroup.cs
│ │ ├── IntReader.cs
│ │ ├── Prefix.cs
│ │ ├── RunningState.cs
│ │ ├── State.cs
│ │ ├── Transform.cs
│ │ ├── Utils.cs
│ │ └── WordTransformType.cs
│ ├── BuildTarget.cs
│ ├── BuildType.cs
│ ├── BundleFile.cs
│ ├── ClassIDType.cs
│ ├── Classes/
│ │ ├── Animation.cs
│ │ ├── AnimationClip.cs
│ │ ├── Animator.cs
│ │ ├── AnimatorController.cs
│ │ ├── AnimatorOverrideController.cs
│ │ ├── AssetBundle.cs
│ │ ├── AudioClip.cs
│ │ ├── Avatar.cs
│ │ ├── Behaviour.cs
│ │ ├── BuildSettings.cs
│ │ ├── Component.cs
│ │ ├── EditorExtension.cs
│ │ ├── Font.cs
│ │ ├── GameObject.cs
│ │ ├── Material.cs
│ │ ├── Mesh.cs
│ │ ├── MeshFilter.cs
│ │ ├── MeshRenderer.cs
│ │ ├── MonoBehaviour.cs
│ │ ├── MonoScript.cs
│ │ ├── MovieTexture.cs
│ │ ├── NamedObject.cs
│ │ ├── Object.cs
│ │ ├── PPtr.cs
│ │ ├── PlayerSettings.cs
│ │ ├── RectTransform.cs
│ │ ├── Renderer.cs
│ │ ├── ResourceManager.cs
│ │ ├── RuntimeAnimatorController.cs
│ │ ├── Shader.cs
│ │ ├── SkinnedMeshRenderer.cs
│ │ ├── Sprite.cs
│ │ ├── SpriteAtlas.cs
│ │ ├── TextAsset.cs
│ │ ├── Texture.cs
│ │ ├── Texture2D.cs
│ │ ├── Transform.cs
│ │ └── VideoClip.cs
│ ├── CommonString.cs
│ ├── EndianBinaryReader.cs
│ ├── EndianType.cs
│ ├── Extensions/
│ │ ├── BinaryReaderExtensions.cs
│ │ ├── BinaryWriterExtensions.cs
│ │ └── StreamExtensions.cs
│ ├── FileIdentifier.cs
│ ├── FileReader.cs
│ ├── FileType.cs
│ ├── IImported.cs
│ ├── ILogger.cs
│ ├── ImportHelper.cs
│ ├── LocalSerializedObjectIdentifier.cs
│ ├── Logger.cs
│ ├── Math/
│ │ ├── Color.cs
│ │ ├── Half.cs
│ │ ├── HalfHelper.cs
│ │ ├── Matrix4x4.cs
│ │ ├── Quaternion.cs
│ │ ├── Vector2.cs
│ │ ├── Vector3.cs
│ │ └── Vector4.cs
│ ├── ObjectInfo.cs
│ ├── ObjectReader.cs
│ ├── Progress.cs
│ ├── ResourceReader.cs
│ ├── SerializedFile.cs
│ ├── SerializedFileFormatVersion.cs
│ ├── SerializedFileHeader.cs
│ ├── SerializedType.cs
│ ├── SevenZipHelper.cs
│ ├── StreamFile.cs
│ ├── TypeTree.cs
│ ├── TypeTreeHelper.cs
│ ├── TypeTreeNode.cs
│ └── WebFile.cs
├── AssetStudio.PInvoke/
│ ├── AssetStudio.PInvoke.csproj
│ ├── DllLoader.cs
│ └── Utf8StringHandle.cs
├── AssetStudio.sln
├── AssetStudioFBXNative/
│ ├── AssetStudioFBXNative.rc
│ ├── AssetStudioFBXNative.vcxproj
│ ├── AssetStudioFBXNative.vcxproj.filters
│ ├── api.cpp
│ ├── api.h
│ ├── asfbx_anim_context.cpp
│ ├── asfbx_anim_context.h
│ ├── asfbx_context.cpp
│ ├── asfbx_context.h
│ ├── asfbx_morph_context.cpp
│ ├── asfbx_morph_context.h
│ ├── asfbx_skin_context.cpp
│ ├── asfbx_skin_context.h
│ ├── bool32_t.h
│ ├── cpp.hint
│ ├── dllexport.h
│ ├── resource.h
│ ├── utils.cpp
│ └── utils.h
├── AssetStudioFBXWrapper/
│ ├── AssetStudioFBXWrapper.csproj
│ ├── Fbx.PInvoke.cs
│ ├── Fbx.cs
│ ├── FbxDll.cs
│ ├── FbxExporter.cs
│ ├── FbxExporterContext.PInvoke.cs
│ └── FbxExporterContext.cs
├── AssetStudioGUI/
│ ├── AssetStudioGUI.csproj
│ ├── AssetStudioGUIForm.Designer.cs
│ ├── AssetStudioGUIForm.cs
│ ├── AssetStudioGUIForm.resx
│ ├── Components/
│ │ ├── AssetItem.cs
│ │ ├── GOHierarchy.cs
│ │ ├── GameObjectTreeNode.cs
│ │ ├── OpenFolderDialog.cs
│ │ └── TypeTreeItem.cs
│ ├── DirectBitmap.cs
│ ├── ExportOptions.Designer.cs
│ ├── ExportOptions.cs
│ ├── ExportOptions.resx
│ ├── Exporter.cs
│ ├── GUILogger.cs
│ ├── Program.cs
│ ├── Properties/
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ └── Studio.cs
├── AssetStudioUtility/
│ ├── AssemblyLoader.cs
│ ├── AssetStudioUtility.csproj
│ ├── AudioClipConverter.cs
│ ├── CSspv/
│ │ ├── Disassembler.cs
│ │ ├── EnumValuesExtensions.cs
│ │ ├── Instruction.cs
│ │ ├── LICENSE
│ │ ├── Module.cs
│ │ ├── OperandType.cs
│ │ ├── ParsedInstruction.cs
│ │ ├── Reader.cs
│ │ ├── SpirV.Core.Grammar.cs
│ │ ├── SpirV.Meta.cs
│ │ └── Types.cs
│ ├── FMOD Studio API/
│ │ ├── fmod.cs
│ │ ├── fmod_dsp.cs
│ │ └── fmod_errors.cs
│ ├── ImageExtensions.cs
│ ├── ImageFormat.cs
│ ├── ModelConverter.cs
│ ├── ModelExporter.cs
│ ├── MonoBehaviourConverter.cs
│ ├── MyAssemblyResolver.cs
│ ├── SerializedTypeHelper.cs
│ ├── ShaderConverter.cs
│ ├── Smolv/
│ │ ├── OpData.cs
│ │ ├── SmolvDecoder.cs
│ │ └── SpvOp.cs
│ ├── SpirVShaderConverter.cs
│ ├── SpriteHelper.cs
│ ├── Texture2DConverter.cs
│ ├── Texture2DExtensions.cs
│ ├── TypeDefinitionConverter.cs
│ ├── Unity.CecilTools/
│ │ ├── CecilUtils.cs
│ │ ├── ElementType.cs
│ │ └── Extensions/
│ │ ├── MethodDefinitionExtensions.cs
│ │ ├── ResolutionExtensions.cs
│ │ ├── TypeDefinitionExtensions.cs
│ │ └── TypeReferenceExtensions.cs
│ └── Unity.SerializationLogic/
│ ├── UnityEngineTypePredicates.cs
│ └── UnitySerializationLogic.cs
├── LICENSE
├── README.md
├── Texture2DDecoderNative/
│ ├── Texture2DDecoderNative.rc
│ ├── Texture2DDecoderNative.vcxproj
│ ├── Texture2DDecoderNative.vcxproj.filters
│ ├── astc.cpp
│ ├── astc.h
│ ├── atc.cpp
│ ├── atc.h
│ ├── bcn.cpp
│ ├── bcn.h
│ ├── bool32_t.h
│ ├── color.h
│ ├── cpp.hint
│ ├── crunch/
│ │ ├── crn_decomp.h
│ │ └── crnlib.h
│ ├── crunch.cpp
│ ├── crunch.h
│ ├── dllexport.h
│ ├── dllmain.cpp
│ ├── endianness.h
│ ├── etc.cpp
│ ├── etc.h
│ ├── fp16/
│ │ ├── bitcasts.h
│ │ └── fp16.h
│ ├── fp16.h
│ ├── pvrtc.cpp
│ ├── pvrtc.h
│ ├── resource.h
│ ├── unitycrunch/
│ │ ├── crn_decomp.h
│ │ ├── crn_defs.h
│ │ └── crnlib.h
│ ├── unitycrunch.cpp
│ └── unitycrunch.h
└── Texture2DDecoderWrapper/
├── T2DDll.cs
├── Texture2DDecoderWrapper.csproj
├── TextureDecoder.PInvoke.cs
└── TextureDecoder.cs
Showing preview only (352K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3846 symbols across 205 files)
FILE: AssetStudio.PInvoke/DllLoader.cs
class DllLoader (line 9) | public static class DllLoader
method PreloadDll (line 12) | public static void PreloadDll(string dllName)
method GetDirectedDllDirectory (line 28) | private static string GetDirectedDllDirectory()
class Win32 (line 40) | private static class Win32
method LoadDll (line 43) | internal static void LoadDll(string dllDir, string dllName)
method LoadLibraryEx (line 62) | [DllImport("kernel32.dll", SetLastError = true)]
class Posix (line 70) | private static class Posix
method LoadDll (line 73) | internal static void LoadDll(string dllDir, string dllName)
method DlOpen (line 110) | [DllImport("libdl", EntryPoint = "dlopen")]
method DlError (line 114) | [DllImport("libdl", EntryPoint = "dlerror")]
FILE: AssetStudio.PInvoke/Utf8StringHandle.cs
class Utf8StringHandle (line 9) | public class Utf8StringHandle : SafeHandleZeroOrMinusOneIsInvalid
method Utf8StringHandle (line 12) | static Utf8StringHandle()
method Utf8StringHandle (line 17) | public Utf8StringHandle(string str)
method ReadUtf8StringFromPointer (line 53) | public static string ReadUtf8StringFromPointer(IntPtr lpstr)
method ReleaseHandle (line 87) | protected override bool ReleaseHandle()
FILE: AssetStudio/7zip/Common/CRC.cs
class CRC (line 5) | public class CRC
method CRC (line 9) | static CRC()
method Init (line 27) | public void Init() { _value = 0xFFFFFFFF; }
method UpdateByte (line 29) | public void UpdateByte(byte b)
method Update (line 34) | public void Update(byte[] data, uint offset, uint size)
method GetDigest (line 40) | public uint GetDigest() { return _value ^ 0xFFFFFFFF; }
method CalculateDigest (line 42) | static uint CalculateDigest(byte[] data, uint offset, uint size)
method VerifyDigest (line 50) | static bool VerifyDigest(uint digest, byte[] data, uint offset, uint s...
FILE: AssetStudio/7zip/Common/CommandLineParser.cs
type SwitchType (line 8) | public enum SwitchType
class SwitchForm (line 17) | public class SwitchForm
method SwitchForm (line 26) | public SwitchForm(string idString, SwitchType type, bool multi,
method SwitchForm (line 36) | public SwitchForm(string idString, SwitchType type, bool multi, int mi...
method SwitchForm (line 40) | public SwitchForm(string idString, SwitchType type, bool multi):
class SwitchResult (line 46) | public class SwitchResult
method SwitchResult (line 52) | public SwitchResult()
class Parser (line 58) | public class Parser
method Parser (line 63) | public Parser(int numSwitches)
method ParseString (line 70) | bool ParseString(string srcString, SwitchForm[] switchForms)
method ParseStrings (line 171) | public void ParseStrings(SwitchForm[] switchForms, string[] commandStr...
method ParseCommand (line 191) | public static int ParseCommand(CommandForm[] commandForms, string comm...
method ParseSubCharsCommand (line 216) | static bool ParseSubCharsCommand(int numForms, CommandSubCharsSet[] fo...
method IsItSwitchChar (line 252) | static bool IsItSwitchChar(char c)
class CommandForm (line 258) | public class CommandForm
method CommandForm (line 262) | public CommandForm(string idString, bool postStringMode)
class CommandSubCharsSet (line 269) | class CommandSubCharsSet
FILE: AssetStudio/7zip/Common/InBuffer.cs
class InBuffer (line 5) | public class InBuffer
method InBuffer (line 15) | public InBuffer(uint bufferSize)
method Init (line 21) | public void Init(System.IO.Stream stream)
method ReadBlock (line 30) | public bool ReadBlock()
method ReleaseStream (line 43) | public void ReleaseStream()
method ReadByte (line 49) | public bool ReadByte(byte b) // check it
method ReadByte (line 58) | public byte ReadByte()
method GetProcessedSize (line 67) | public ulong GetProcessedSize()
FILE: AssetStudio/7zip/Common/OutBuffer.cs
class OutBuffer (line 5) | public class OutBuffer
method OutBuffer (line 13) | public OutBuffer(uint bufferSize)
method SetStream (line 19) | public void SetStream(System.IO.Stream stream) { m_Stream = stream; }
method FlushStream (line 20) | public void FlushStream() { m_Stream.Flush(); }
method CloseStream (line 21) | public void CloseStream() { m_Stream.Close(); }
method ReleaseStream (line 22) | public void ReleaseStream() { m_Stream = null; }
method Init (line 24) | public void Init()
method WriteByte (line 30) | public void WriteByte(byte b)
method FlushData (line 37) | public void FlushData()
method GetProcessedSize (line 45) | public ulong GetProcessedSize() { return m_ProcessedSize + m_Pos; }
FILE: AssetStudio/7zip/Compress/LZ/IMatchFinder.cs
type IInWindowStream (line 7) | interface IInWindowStream
method SetStream (line 9) | void SetStream(System.IO.Stream inStream);
method Init (line 10) | void Init();
method ReleaseStream (line 11) | void ReleaseStream();
method GetIndexByte (line 12) | Byte GetIndexByte(Int32 index);
method GetMatchLen (line 13) | UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit);
method GetNumAvailableBytes (line 14) | UInt32 GetNumAvailableBytes();
type IMatchFinder (line 17) | interface IMatchFinder : IInWindowStream
method Create (line 19) | void Create(UInt32 historySize, UInt32 keepAddBufferBefore,
method GetMatches (line 21) | UInt32 GetMatches(UInt32[] distances);
method Skip (line 22) | void Skip(UInt32 num);
FILE: AssetStudio/7zip/Compress/LZ/LzBinTree.cs
class BinTree (line 7) | public class BinTree : InWindow, IMatchFinder
method SetType (line 34) | public void SetType(int numHashBytes)
method SetStream (line 51) | public new void SetStream(System.IO.Stream stream) { base.SetStream(st...
method ReleaseStream (line 52) | public new void ReleaseStream() { base.ReleaseStream(); }
method Init (line 54) | public new void Init()
method MovePos (line 63) | public new void MovePos()
method GetIndexByte (line 72) | public new Byte GetIndexByte(Int32 index) { return base.GetIndexByte(i...
method GetMatchLen (line 74) | public new UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit)
method GetNumAvailableBytes (line 77) | public new UInt32 GetNumAvailableBytes() { return base.GetNumAvailable...
method Create (line 79) | public void Create(UInt32 historySize, UInt32 keepAddBufferBefore,
method GetMatches (line 118) | public UInt32 GetMatches(UInt32[] distances)
method Skip (line 252) | public void Skip(UInt32 num)
method NormalizeLinks (line 344) | void NormalizeLinks(UInt32[] items, UInt32 numItems, UInt32 subValue)
method Normalize (line 357) | void Normalize()
method SetCutValue (line 365) | public void SetCutValue(UInt32 cutValue) { _cutValue = cutValue; }
FILE: AssetStudio/7zip/Compress/LZ/LzInWindow.cs
class InWindow (line 7) | public class InWindow
method MoveBlock (line 24) | public void MoveBlock()
method ReadBlock (line 39) | public virtual void ReadBlock()
method Free (line 65) | void Free() { _bufferBase = null; }
method Create (line 67) | public void Create(UInt32 keepSizeBefore, UInt32 keepSizeAfter, UInt32...
method SetStream (line 81) | public void SetStream(System.IO.Stream stream) { _stream = stream; }
method ReleaseStream (line 82) | public void ReleaseStream() { _stream = null; }
method Init (line 84) | public void Init()
method MovePos (line 93) | public void MovePos()
method GetIndexByte (line 105) | public Byte GetIndexByte(Int32 index) { return _bufferBase[_bufferOffs...
method GetMatchLen (line 108) | public UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit)
method GetNumAvailableBytes (line 122) | public UInt32 GetNumAvailableBytes() { return _streamPos - _pos; }
method ReduceOffsets (line 124) | public void ReduceOffsets(Int32 subValue)
FILE: AssetStudio/7zip/Compress/LZ/LzOutWindow.cs
class OutWindow (line 5) | public class OutWindow
method Create (line 15) | public void Create(uint windowSize)
method Init (line 27) | public void Init(System.IO.Stream stream, bool solid)
method Train (line 39) | public bool Train(System.IO.Stream stream)
method ReleaseStream (line 63) | public void ReleaseStream()
method Flush (line 69) | public void Flush()
method CopyBlock (line 80) | public void CopyBlock(uint distance, uint len)
method PutByte (line 95) | public void PutByte(byte b)
method GetByte (line 102) | public byte GetByte(uint distance)
FILE: AssetStudio/7zip/Compress/LZMA/LzmaBase.cs
class Base (line 5) | internal abstract class Base
type State (line 15) | public struct State
method Init (line 18) | public void Init() { Index = 0; }
method UpdateChar (line 19) | public void UpdateChar()
method UpdateMatch (line 25) | public void UpdateMatch() { Index = (uint)(Index < 7 ? 7 : 10); }
method UpdateRep (line 26) | public void UpdateRep() { Index = (uint)(Index < 7 ? 8 : 11); }
method UpdateShortRep (line 27) | public void UpdateShortRep() { Index = (uint)(Index < 7 ? 9 : 11); }
method IsCharState (line 28) | public bool IsCharState() { return Index < 7; }
method GetLenToPosState (line 41) | public static uint GetLenToPosState(uint len)
FILE: AssetStudio/7zip/Compress/LZMA/LzmaDecoder.cs
class Decoder (line 9) | public class Decoder : ICoder, ISetDecoderProperties // ,System.IO.Stream
class LenDecoder (line 11) | class LenDecoder
method Create (line 20) | public void Create(uint numPosStates)
method Init (line 30) | public void Init()
method Decode (line 42) | public uint Decode(RangeCoder.Decoder rangeDecoder, uint posState)
class LiteralDecoder (line 61) | class LiteralDecoder
type Decoder2 (line 63) | struct Decoder2
method Create (line 66) | public void Create() { m_Decoders = new BitDecoder[0x300]; }
method Init (line 67) | public void Init() { for (int i = 0; i < 0x300; i++) m_Decoders[i]...
method DecodeNormal (line 69) | public byte DecodeNormal(RangeCoder.Decoder rangeDecoder)
method DecodeWithMatchByte (line 78) | public byte DecodeWithMatchByte(RangeCoder.Decoder rangeDecoder, b...
method Create (line 104) | public void Create(int numPosBits, int numPrevBits)
method Init (line 118) | public void Init()
method GetState (line 125) | uint GetState(uint pos, byte prevByte)
method DecodeNormal (line 128) | public byte DecodeNormal(RangeCoder.Decoder rangeDecoder, uint pos, ...
method DecodeWithMatchByte (line 131) | public byte DecodeWithMatchByte(RangeCoder.Decoder rangeDecoder, uin...
method Decoder (line 160) | public Decoder()
method SetDictionarySize (line 167) | void SetDictionarySize(uint dictionarySize)
method SetLiteralProperties (line 178) | void SetLiteralProperties(int lp, int lc)
method SetPosBitsProperties (line 187) | void SetPosBitsProperties(int pb)
method Init (line 198) | void Init(System.IO.Stream inStream, System.IO.Stream outStream)
method Code (line 230) | public void Code(System.IO.Stream inStream, System.IO.Stream outStream,
method SetDecoderProperties (line 349) | public void SetDecoderProperties(byte[] properties)
method Train (line 367) | public bool Train(System.IO.Stream stream)
FILE: AssetStudio/7zip/Compress/LZMA/LzmaEncoder.cs
class Encoder (line 9) | public class Encoder : ICoder, ISetCoderProperties, IWriteCoderProperties
type EMatchFinderType (line 11) | enum EMatchFinderType
method Encoder (line 21) | static Encoder()
method GetPosSlot (line 35) | static UInt32 GetPosSlot(UInt32 pos)
method GetPosSlot2 (line 44) | static UInt32 GetPosSlot2(UInt32 pos)
method BaseInit (line 57) | void BaseInit()
class LiteralEncoder (line 68) | class LiteralEncoder
type Encoder2 (line 70) | public struct Encoder2
method Create (line 74) | public void Create() { m_Encoders = new BitEncoder[0x300]; }
method Init (line 76) | public void Init() { for (int i = 0; i < 0x300; i++) m_Encoders[i]...
method Encode (line 78) | public void Encode(RangeCoder.Encoder rangeEncoder, byte symbol)
method EncodeMatched (line 89) | public void EncodeMatched(RangeCoder.Encoder rangeEncoder, byte ma...
method GetPrice (line 108) | public uint GetPrice(bool matchMode, byte matchByte, byte symbol)
method Create (line 143) | public void Create(int numPosBits, int numPrevBits)
method Init (line 156) | public void Init()
method GetSubCoder (line 163) | public Encoder2 GetSubCoder(UInt32 pos, Byte prevByte)
class LenEncoder (line 167) | class LenEncoder
method LenEncoder (line 175) | public LenEncoder()
method Init (line 184) | public void Init(UInt32 numPosStates)
method Encode (line 196) | public void Encode(RangeCoder.Encoder rangeEncoder, UInt32 symbol, U...
method SetPrices (line 220) | public void SetPrices(UInt32 posState, UInt32 numSymbols, UInt32[] p...
class LenPriceTableEncoder (line 246) | class LenPriceTableEncoder : LenEncoder
method SetTableSize (line 252) | public void SetTableSize(UInt32 tableSize) { _tableSize = tableSize; }
method GetPrice (line 254) | public UInt32 GetPrice(UInt32 symbol, UInt32 posState)
method UpdateTable (line 259) | void UpdateTable(UInt32 posState)
method UpdateTables (line 265) | public void UpdateTables(UInt32 numPosStates)
method Encode (line 271) | public new void Encode(RangeCoder.Encoder rangeEncoder, UInt32 symbo...
class Optimal (line 280) | class Optimal
method MakeAsChar (line 299) | public void MakeAsChar() { BackPrev = 0xFFFFFFFF; Prev1IsChar = fals...
method MakeAsShortRep (line 300) | public void MakeAsShortRep() { BackPrev = 0; ; Prev1IsChar = false; }
method IsShortRep (line 301) | public bool IsShortRep() { return (BackPrev == 0); }
method Create (line 362) | void Create()
method Encoder (line 382) | public Encoder()
method SetWriteEndMarkerMode (line 390) | void SetWriteEndMarkerMode(bool writeEndMarker)
method Init (line 395) | void Init()
method ReadMatchDistances (line 431) | void ReadMatchDistances(out UInt32 lenRes, out UInt32 numDistancePairs)
method MovePos (line 446) | void MovePos(UInt32 num)
method GetRepLen1Price (line 455) | UInt32 GetRepLen1Price(Base.State state, UInt32 posState)
method GetPureRepPrice (line 461) | UInt32 GetPureRepPrice(UInt32 repIndex, Base.State state, UInt32 posSt...
method GetRepPrice (line 483) | UInt32 GetRepPrice(UInt32 repIndex, UInt32 len, Base.State state, UInt...
method GetPosLenPrice (line 489) | UInt32 GetPosLenPrice(UInt32 pos, UInt32 len, UInt32 posState)
method Backward (line 501) | UInt32 Backward(out UInt32 backRes, UInt32 cur)
method GetOptimum (line 539) | UInt32 GetOptimum(UInt32 position, out UInt32 backRes)
method ChangePair (line 1030) | bool ChangePair(UInt32 smallDist, UInt32 bigDist)
method WriteEndMarker (line 1036) | void WriteEndMarker(UInt32 posState)
method Flush (line 1055) | void Flush(UInt32 nowPos)
method CodeOneBlock (line 1063) | public void CodeOneBlock(out Int64 inSize, out Int64 outSize, out bool...
method ReleaseMFStream (line 1231) | void ReleaseMFStream()
method SetOutStream (line 1240) | void SetOutStream(System.IO.Stream outStream) { _rangeEncoder.SetStrea...
method ReleaseOutStream (line 1241) | void ReleaseOutStream() { _rangeEncoder.ReleaseStream(); }
method ReleaseStreams (line 1243) | void ReleaseStreams()
method SetStreams (line 1249) | void SetStreams(System.IO.Stream inStream, System.IO.Stream outStream,
method Code (line 1273) | public void Code(System.IO.Stream inStream, System.IO.Stream outStream,
method WriteCoderProperties (line 1303) | public void WriteCoderProperties(System.IO.Stream outStream)
method FillDistancesPrices (line 1314) | void FillDistancesPrices()
method FillAlignPrices (line 1346) | void FillAlignPrices()
method FindMatchFinder (line 1360) | static int FindMatchFinder(string s)
method SetCoderProperties (line 1368) | public void SetCoderProperties(CoderPropID[] propIDs, object[] propert...
method SetTrainSize (line 1474) | public void SetTrainSize(uint trainSize)
FILE: AssetStudio/7zip/Compress/RangeCoder/RangeCoder.cs
class Encoder (line 5) | class Encoder
method SetStream (line 18) | public void SetStream(System.IO.Stream stream)
method ReleaseStream (line 23) | public void ReleaseStream()
method Init (line 28) | public void Init()
method FlushData (line 38) | public void FlushData()
method FlushStream (line 44) | public void FlushStream()
method CloseStream (line 49) | public void CloseStream()
method Encode (line 54) | public void Encode(uint start, uint size, uint total)
method ShiftLow (line 65) | public void ShiftLow()
method EncodeDirectBits (line 82) | public void EncodeDirectBits(uint v, int numTotalBits)
method EncodeBit (line 97) | public void EncodeBit(uint size0, int numTotalBits, uint symbol)
method GetProcessedSizeAdd (line 114) | public long GetProcessedSizeAdd()
class Decoder (line 122) | class Decoder
method Init (line 130) | public void Init(System.IO.Stream stream)
method ReleaseStream (line 141) | public void ReleaseStream()
method CloseStream (line 147) | public void CloseStream()
method Normalize (line 152) | public void Normalize()
method Normalize2 (line 161) | public void Normalize2()
method GetThreshold (line 170) | public uint GetThreshold(uint total)
method Decode (line 175) | public void Decode(uint start, uint size, uint total)
method DecodeDirectBits (line 182) | public uint DecodeDirectBits(int numTotalBits)
method DecodeBit (line 213) | public uint DecodeBit(uint size0, int numTotalBits)
FILE: AssetStudio/7zip/Compress/RangeCoder/RangeCoderBit.cs
type BitEncoder (line 5) | struct BitEncoder
method Init (line 15) | public void Init() { Prob = kBitModelTotal >> 1; }
method UpdateModel (line 17) | public void UpdateModel(uint symbol)
method Encode (line 25) | public void Encode(Encoder encoder, uint symbol)
method BitEncoder (line 50) | static BitEncoder()
method GetPrice (line 63) | public uint GetPrice(uint symbol)
method GetPrice0 (line 67) | public uint GetPrice0() { return ProbPrices[Prob >> kNumMoveReducingBi...
method GetPrice1 (line 68) | public uint GetPrice1() { return ProbPrices[(kBitModelTotal - Prob) >>...
type BitDecoder (line 71) | struct BitDecoder
method UpdateModel (line 79) | public void UpdateModel(int numMoveBits, uint symbol)
method Init (line 87) | public void Init() { Prob = kBitModelTotal >> 1; }
method Decode (line 89) | public uint Decode(RangeCoder.Decoder rangeDecoder)
FILE: AssetStudio/7zip/Compress/RangeCoder/RangeCoderBitTree.cs
type BitTreeEncoder (line 5) | struct BitTreeEncoder
method BitTreeEncoder (line 10) | public BitTreeEncoder(int numBitLevels)
method Init (line 16) | public void Init()
method Encode (line 22) | public void Encode(Encoder rangeEncoder, UInt32 symbol)
method ReverseEncode (line 34) | public void ReverseEncode(Encoder rangeEncoder, UInt32 symbol)
method GetPrice (line 46) | public UInt32 GetPrice(UInt32 symbol)
method ReverseGetPrice (line 60) | public UInt32 ReverseGetPrice(UInt32 symbol)
method ReverseGetPrice (line 74) | public static UInt32 ReverseGetPrice(BitEncoder[] Models, UInt32 start...
method ReverseEncode (line 89) | public static void ReverseEncode(BitEncoder[] Models, UInt32 startIndex,
type BitTreeDecoder (line 103) | struct BitTreeDecoder
method BitTreeDecoder (line 108) | public BitTreeDecoder(int numBitLevels)
method Init (line 114) | public void Init()
method Decode (line 120) | public uint Decode(RangeCoder.Decoder rangeDecoder)
method ReverseDecode (line 128) | public uint ReverseDecode(RangeCoder.Decoder rangeDecoder)
method ReverseDecode (line 142) | public static uint ReverseDecode(BitDecoder[] Models, UInt32 startIndex,
FILE: AssetStudio/7zip/ICoder.cs
class DataErrorException (line 10) | class DataErrorException : ApplicationException
method DataErrorException (line 12) | public DataErrorException(): base("Data Error") { }
class InvalidParamException (line 18) | class InvalidParamException : ApplicationException
method InvalidParamException (line 20) | public InvalidParamException(): base("Invalid Parameter") { }
type ICodeProgress (line 23) | public interface ICodeProgress
method SetProgress (line 34) | void SetProgress(Int64 inSize, Int64 outSize);
type ICoder (line 37) | public interface ICoder
method Code (line 60) | void Code(System.IO.Stream inStream, System.IO.Stream outStream,
type CoderPropID (line 78) | public enum CoderPropID
type ISetCoderProperties (line 143) | public interface ISetCoderProperties
method SetCoderProperties (line 145) | void SetCoderProperties(CoderPropID[] propIDs, object[] properties);
type IWriteCoderProperties (line 148) | public interface IWriteCoderProperties
method WriteCoderProperties (line 150) | void WriteCoderProperties(System.IO.Stream outStream);
type ISetDecoderProperties (line 153) | public interface ISetDecoderProperties
method SetDecoderProperties (line 155) | void SetDecoderProperties(byte[] properties);
FILE: AssetStudio/AssetsManager.cs
class AssetsManager (line 11) | public class AssetsManager
method LoadFiles (line 24) | public void LoadFiles(params string[] files)
method LoadFolder (line 32) | public void LoadFolder(string path)
method Load (line 40) | private void Load(string[] files)
method LoadFile (line 65) | private void LoadFile(string fullName)
method LoadFile (line 71) | private void LoadFile(FileReader reader)
method LoadAssetsFile (line 96) | private void LoadAssetsFile(FileReader reader)
method LoadAssetsFromMemory (line 151) | private void LoadAssetsFromMemory(FileReader reader, string originalPa...
method LoadBundleFile (line 177) | private void LoadBundleFile(FileReader reader, string originalPath = n...
method LoadWebFile (line 212) | private void LoadWebFile(FileReader reader)
method LoadZipFile (line 249) | private void LoadZipFile(FileReader reader)
method CheckStrippedVersion (line 349) | public void CheckStrippedVersion(SerializedFile assetsFile)
method Clear (line 361) | public void Clear()
method ReadAssets (line 379) | private void ReadAssets()
method ProcessAssets (line 503) | private void ProcessAssets()
FILE: AssetStudio/BigArrayPool.cs
class BigArrayPool (line 5) | public static class BigArrayPool<T>
FILE: AssetStudio/Brotli/BitReader.cs
class BitReader (line 9) | internal sealed class BitReader
method ReadMoreInput (line 55) | internal static void ReadMoreInput(Org.Brotli.Dec.BitReader br)
method CheckHealth (line 97) | internal static void CheckHealth(Org.Brotli.Dec.BitReader br, bool end...
method FillBitWindow (line 115) | internal static void FillBitWindow(Org.Brotli.Dec.BitReader br)
method ReadBits (line 125) | internal static int ReadBits(Org.Brotli.Dec.BitReader br, int n)
method Init (line 141) | internal static void Init(Org.Brotli.Dec.BitReader br, System.IO.Strea...
method Prepare (line 156) | private static void Prepare(Org.Brotli.Dec.BitReader br)
method Reload (line 164) | internal static void Reload(Org.Brotli.Dec.BitReader br)
method Close (line 173) | internal static void Close(Org.Brotli.Dec.BitReader br)
method JumpToByteBoundary (line 183) | internal static void JumpToByteBoundary(Org.Brotli.Dec.BitReader br)
method IntAvailable (line 196) | internal static int IntAvailable(Org.Brotli.Dec.BitReader br)
method CopyBytes (line 206) | internal static void CopyBytes(Org.Brotli.Dec.BitReader br, byte[] dat...
FILE: AssetStudio/Brotli/BrotliInputStream.cs
class BrotliInputStream (line 13) | public class BrotliInputStream : System.IO.Stream
method BrotliInputStream (line 42) | public BrotliInputStream(System.IO.Stream source)
method BrotliInputStream (line 63) | public BrotliInputStream(System.IO.Stream source, int byteReadBufferSize)
method BrotliInputStream (line 89) | public BrotliInputStream(System.IO.Stream source, int byteReadBufferSi...
method Close (line 118) | public override void Close()
method ReadByte (line 125) | public override int ReadByte()
method Read (line 141) | public override int Read(byte[] destBuffer, int destOffset, int destLen)
method Seek (line 205) | public override long Seek(long offset, System.IO.SeekOrigin origin) {
method SetLength (line 208) | public override void SetLength(long value){
method BeginWrite (line 213) | public override System.IAsyncResult BeginWrite(byte[] buffer, int offset,
method Write (line 217) | public override void Write(byte[] buffer, int offset, int count) {
method Flush (line 221) | public override void Flush() {}
FILE: AssetStudio/Brotli/BrotliRuntimeException.cs
class BrotliRuntimeException (line 9) | [System.Serializable]
method BrotliRuntimeException (line 12) | internal BrotliRuntimeException(string message)
method BrotliRuntimeException (line 17) | internal BrotliRuntimeException(string message, System.Exception cause)
FILE: AssetStudio/Brotli/Context.cs
class Context (line 9) | internal sealed class Context
FILE: AssetStudio/Brotli/Decode.cs
class Decode (line 9) | internal sealed class Decode
method DecodeVarLenUnsignedByte (line 45) | private static int DecodeVarLenUnsignedByte(Org.Brotli.Dec.BitReader br)
method DecodeMetaBlockLength (line 62) | private static void DecodeMetaBlockLength(Org.Brotli.Dec.BitReader br,...
method ReadSymbol (line 115) | private static int ReadSymbol(int[] table, int offset, Org.Brotli.Dec....
method ReadBlockLength (line 133) | private static int ReadBlockLength(int[] table, int offset, Org.Brotli...
method TranslateShortCodes (line 141) | private static int TranslateShortCodes(int code, int[] ringBuffer, int...
method MoveToFront (line 152) | private static void MoveToFront(int[] v, int index)
method InverseMoveToFrontTransform (line 162) | private static void InverseMoveToFrontTransform(byte[] v, int vLen)
method ReadHuffmanCodeLengths (line 180) | private static void ReadHuffmanCodeLengths(int[] codeLengthCodeLengths...
method ReadHuffmanCode (line 252) | internal static void ReadHuffmanCode(int alphabetSize, int[] table, in...
method DecodeContextMap (line 349) | private static int DecodeContextMap(int contextMapSize, byte[] context...
method DecodeBlockTypeAndLength (line 404) | private static void DecodeBlockTypeAndLength(Org.Brotli.Dec.State stat...
method DecodeLiteralBlockSwitch (line 432) | private static void DecodeLiteralBlockSwitch(Org.Brotli.Dec.State state)
method DecodeCommandBlockSwitch (line 444) | private static void DecodeCommandBlockSwitch(Org.Brotli.Dec.State state)
method DecodeDistanceBlockSwitch (line 450) | private static void DecodeDistanceBlockSwitch(Org.Brotli.Dec.State state)
method MaybeReallocateRingBuffer (line 456) | private static void MaybeReallocateRingBuffer(Org.Brotli.Dec.State state)
method ReadMetablockInfo (line 502) | private static void ReadMetablockInfo(Org.Brotli.Dec.State state)
method ReadMetablockHuffmanCodesAndContextMaps (line 546) | private static void ReadMetablockHuffmanCodesAndContextMaps(Org.Brotli...
method CopyUncompressedData (line 610) | private static void CopyUncompressedData(Org.Brotli.Dec.State state)
method WriteRingBuffer (line 637) | private static bool WriteRingBuffer(Org.Brotli.Dec.State state)
method SetCustomDictionary (line 655) | internal static void SetCustomDictionary(Org.Brotli.Dec.State state, b...
method Decompress (line 661) | internal static void Decompress(Org.Brotli.Dec.State state)
FILE: AssetStudio/Brotli/Dictionary.cs
class Dictionary (line 20) | internal sealed class Dictionary
class DataHolder0 (line 30) | private class DataHolder0
method GetData (line 32) | internal static string GetData()
class DataHolder1 (line 38) | private class DataHolder1
method GetData (line 40) | internal static string GetData()
class DataHolder2 (line 46) | private class DataHolder2
method GetData (line 48) | internal static string GetData()
class DataHolder (line 54) | private class DataHolder
method DataHolder (line 58) | static DataHolder()
method GetData (line 82) | internal static byte[] GetData()
FILE: AssetStudio/Brotli/Huffman.cs
class Huffman (line 9) | internal sealed class Huffman
method GetNextKey (line 24) | private static int GetNextKey(int key, int len)
method ReplicateValue (line 42) | private static void ReplicateValue(int[] table, int offset, int step, ...
method NextTableBitSize (line 55) | private static int NextTableBitSize(int[] count, int len, int rootBits)
method BuildHuffmanTable (line 72) | internal static void BuildHuffmanTable(int[] rootTable, int tableOffse...
FILE: AssetStudio/Brotli/HuffmanTreeGroup.cs
class HuffmanTreeGroup (line 9) | internal sealed class HuffmanTreeGroup
method Init (line 28) | internal static void Init(Org.Brotli.Dec.HuffmanTreeGroup group, int a...
method Decode (line 38) | internal static void Decode(Org.Brotli.Dec.HuffmanTreeGroup group, Org...
FILE: AssetStudio/Brotli/IntReader.cs
class IntReader (line 9) | internal sealed class IntReader
method Init (line 15) | internal static void Init(Org.Brotli.Dec.IntReader ir, byte[] byteBuff...
method Convert (line 27) | internal static void Convert(Org.Brotli.Dec.IntReader ir, int intLen)
FILE: AssetStudio/Brotli/Prefix.cs
class Prefix (line 15) | internal sealed class Prefix
FILE: AssetStudio/Brotli/RunningState.cs
class RunningState (line 9) | internal sealed class RunningState
FILE: AssetStudio/Brotli/State.cs
class State (line 8) | internal sealed class State
method DecodeWindowBits (line 116) | private static int DecodeWindowBits(Org.Brotli.Dec.BitReader br)
method SetInput (line 138) | internal static void SetInput(Org.Brotli.Dec.State state, System.IO.St...
method Close (line 157) | internal static void Close(Org.Brotli.Dec.State state)
FILE: AssetStudio/Brotli/Transform.cs
class Transform (line 9) | internal sealed class Transform
method Transform (line 17) | internal Transform(string prefix, int type, string suffix)
method ReadUniBytes (line 24) | internal static byte[] ReadUniBytes(string uniBytes)
method TransformDictionaryWord (line 82) | internal static int TransformDictionaryWord(byte[] dst, int dstOffset,...
FILE: AssetStudio/Brotli/Utils.cs
class Utils (line 9) | internal sealed class Utils
method FillWithZeroes (line 26) | internal static void FillWithZeroes(byte[] dest, int offset, int length)
method FillWithZeroes (line 48) | internal static void FillWithZeroes(int[] dest, int offset, int length)
FILE: AssetStudio/Brotli/WordTransformType.cs
class WordTransformType (line 14) | internal sealed class WordTransformType
method GetOmitFirst (line 58) | internal static int GetOmitFirst(int type)
method GetOmitLast (line 63) | internal static int GetOmitLast(int type)
FILE: AssetStudio/BuildTarget.cs
type BuildTarget (line 8) | public enum BuildTarget
FILE: AssetStudio/BuildType.cs
class BuildType (line 8) | public class BuildType
method BuildType (line 12) | public BuildType(string type)
FILE: AssetStudio/BundleFile.cs
type ArchiveFlags (line 8) | [Flags]
type StorageBlockFlags (line 18) | [Flags]
type CompressionType (line 25) | public enum CompressionType
class BundleFile (line 34) | public class BundleFile
class Header (line 36) | public class Header
class StorageBlock (line 48) | public class StorageBlock
class Node (line 55) | public class Node
method BundleFile (line 69) | public BundleFile(FileReader reader)
method ReadHeaderAndBlocksInfo (line 105) | private void ReadHeaderAndBlocksInfo(EndianBinaryReader reader)
method CreateBlocksStream (line 140) | private Stream CreateBlocksStream(string path)
method ReadBlocksAndDirectory (line 157) | private void ReadBlocksAndDirectory(EndianBinaryReader reader, Stream ...
method ReadFiles (line 190) | public void ReadFiles(Stream blocksStream, string path)
method ReadHeader (line 218) | private void ReadHeader(EndianBinaryReader reader)
method ReadBlocksInfoAndDirectory (line 230) | private void ReadBlocksInfoAndDirectory(EndianBinaryReader reader)
method ReadBlocks (line 317) | private void ReadBlocks(EndianBinaryReader reader, Stream blocksStream)
FILE: AssetStudio/ClassIDType.cs
type ClassIDType (line 4) | public enum ClassIDType
FILE: AssetStudio/Classes/Animation.cs
class Animation (line 8) | public sealed class Animation : Behaviour
method Animation (line 12) | public Animation(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/AnimationClip.cs
class Keyframe (line 8) | public class Keyframe<T>
method Keyframe (line 19) | public Keyframe(ObjectReader reader, Func<T> readerFunc)
class AnimationCurve (line 34) | public class AnimationCurve<T>
method AnimationCurve (line 41) | public AnimationCurve(ObjectReader reader, Func<T> readerFunc)
class QuaternionCurve (line 60) | public class QuaternionCurve
method QuaternionCurve (line 65) | public QuaternionCurve(ObjectReader reader)
class PackedFloatVector (line 72) | public class PackedFloatVector
method PackedFloatVector (line 80) | public PackedFloatVector(ObjectReader reader)
method UnpackFloats (line 94) | public float[] UnpackFloats(int itemCountInChunk, int chunkStride, int...
class PackedIntVector (line 133) | public class PackedIntVector
method PackedIntVector (line 139) | public PackedIntVector(ObjectReader reader)
method UnpackInts (line 151) | public int[] UnpackInts()
class PackedQuatVector (line 178) | public class PackedQuatVector
method PackedQuatVector (line 183) | public PackedQuatVector(ObjectReader reader)
method UnpackQuats (line 193) | public Quaternion[] UnpackQuats()
class CompressedAnimationCurve (line 258) | public class CompressedAnimationCurve
method CompressedAnimationCurve (line 267) | public CompressedAnimationCurve(ObjectReader reader)
class Vector3Curve (line 278) | public class Vector3Curve
method Vector3Curve (line 283) | public Vector3Curve(ObjectReader reader)
class FloatCurve (line 290) | public class FloatCurve
method FloatCurve (line 299) | public FloatCurve(ObjectReader reader)
class PPtrKeyframe (line 309) | public class PPtrKeyframe
method PPtrKeyframe (line 315) | public PPtrKeyframe(ObjectReader reader)
class PPtrCurve (line 322) | public class PPtrCurve
method PPtrCurve (line 331) | public PPtrCurve(ObjectReader reader)
class AABB (line 347) | public class AABB
method AABB (line 352) | public AABB(ObjectReader reader)
class xform (line 359) | public class xform
method xform (line 365) | public xform(ObjectReader reader)
class HandPose (line 374) | public class HandPose
method HandPose (line 383) | public HandPose(ObjectReader reader)
class HumanGoal (line 394) | public class HumanGoal
method HumanGoal (line 402) | public HumanGoal(ObjectReader reader)
class HumanPose (line 416) | public class HumanPose
method HumanPose (line 427) | public HumanPose(ObjectReader reader)
class StreamedClip (line 458) | public class StreamedClip
method StreamedClip (line 463) | public StreamedClip(ObjectReader reader)
class StreamedCurveKey (line 469) | public class StreamedCurveKey
method StreamedCurveKey (line 478) | public StreamedCurveKey(BinaryReader reader)
method CalculateNextInSlope (line 487) | public float CalculateNextInSlope(float dx, StreamedCurveKey rhs)
class StreamedFrame (line 504) | public class StreamedFrame
method StreamedFrame (line 509) | public StreamedFrame(BinaryReader reader)
method ReadData (line 522) | public List<StreamedFrame> ReadData()
class DenseClip (line 556) | public class DenseClip
method DenseClip (line 564) | public DenseClip(ObjectReader reader)
class ConstantClip (line 574) | public class ConstantClip
method ConstantClip (line 578) | public ConstantClip(ObjectReader reader)
class ValueConstant (line 584) | public class ValueConstant
method ValueConstant (line 591) | public ValueConstant(ObjectReader reader)
class ValueArrayConstant (line 604) | public class ValueArrayConstant
method ValueArrayConstant (line 608) | public ValueArrayConstant(ObjectReader reader)
class Clip (line 619) | public class Clip
method Clip (line 626) | public Clip(ObjectReader reader)
method ConvertValueArrayToGenericBinding (line 641) | public AnimationClipBindingConstant ConvertValueArrayToGenericBinding()
class ValueDelta (line 686) | public class ValueDelta
method ValueDelta (line 691) | public ValueDelta(ObjectReader reader)
class ClipMuscleConstant (line 698) | public class ClipMuscleConstant
method ClipMuscleConstant (line 730) | public ClipMuscleConstant(ObjectReader reader)
class GenericBinding (line 792) | public class GenericBinding
method GenericBinding (line 802) | public GenericBinding() { }
method GenericBinding (line 804) | public GenericBinding(ObjectReader reader)
class AnimationClipBindingConstant (line 828) | public class AnimationClipBindingConstant
method AnimationClipBindingConstant (line 833) | public AnimationClipBindingConstant() { }
method AnimationClipBindingConstant (line 835) | public AnimationClipBindingConstant(ObjectReader reader)
method FindBinding (line 852) | public GenericBinding FindBinding(int index)
class AnimationEvent (line 888) | public class AnimationEvent
method AnimationEvent (line 898) | public AnimationEvent(ObjectReader reader)
type AnimationType (line 915) | public enum AnimationType
class AnimationClip (line 922) | public sealed class AnimationClip : NamedObject
method AnimationClip (line 944) | public AnimationClip(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Animator.cs
class Animator (line 8) | public sealed class Animator : Behaviour
method Animator (line 14) | public Animator(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/AnimatorController.cs
class HumanPoseMask (line 8) | public class HumanPoseMask
method HumanPoseMask (line 14) | public HumanPoseMask(ObjectReader reader)
class SkeletonMaskElement (line 27) | public class SkeletonMaskElement
method SkeletonMaskElement (line 32) | public SkeletonMaskElement(ObjectReader reader)
class SkeletonMask (line 39) | public class SkeletonMask
method SkeletonMask (line 43) | public SkeletonMask(ObjectReader reader)
class LayerConstant (line 54) | public class LayerConstant
method LayerConstant (line 66) | public LayerConstant(ObjectReader reader)
class ConditionConstant (line 89) | public class ConditionConstant
method ConditionConstant (line 96) | public ConditionConstant(ObjectReader reader)
class TransitionConstant (line 105) | public class TransitionConstant
method TransitionConstant (line 122) | public TransitionConstant(ObjectReader reader)
class LeafInfoConstant (line 166) | public class LeafInfoConstant
method LeafInfoConstant (line 171) | public LeafInfoConstant(ObjectReader reader)
class MotionNeighborList (line 178) | public class MotionNeighborList
method MotionNeighborList (line 182) | public MotionNeighborList(ObjectReader reader)
class Blend2dDataConstant (line 188) | public class Blend2dDataConstant
method Blend2dDataConstant (line 196) | public Blend2dDataConstant(ObjectReader reader)
class Blend1dDataConstant (line 212) | public class Blend1dDataConstant // wrong labeled
method Blend1dDataConstant (line 216) | public Blend1dDataConstant(ObjectReader reader)
class BlendDirectDataConstant (line 222) | public class BlendDirectDataConstant
method BlendDirectDataConstant (line 227) | public BlendDirectDataConstant(ObjectReader reader)
class BlendTreeNodeConstant (line 235) | public class BlendTreeNodeConstant
method BlendTreeNodeConstant (line 251) | public BlendTreeNodeConstant(ObjectReader reader)
class BlendTreeConstant (line 300) | public class BlendTreeConstant
method BlendTreeConstant (line 305) | public BlendTreeConstant(ObjectReader reader)
class StateConstant (line 324) | public class StateConstant
method StateConstant (line 344) | public StateConstant(ObjectReader reader)
class SelectorTransitionConstant (line 418) | public class SelectorTransitionConstant
method SelectorTransitionConstant (line 423) | public SelectorTransitionConstant(ObjectReader reader)
class SelectorStateConstant (line 436) | public class SelectorStateConstant
method SelectorStateConstant (line 442) | public SelectorStateConstant(ObjectReader reader)
class StateMachineConstant (line 457) | public class StateMachineConstant
method StateMachineConstant (line 465) | public StateMachineConstant(ObjectReader reader)
class ValueArray (line 498) | public class ValueArray
method ValueArray (line 508) | public ValueArray(ObjectReader reader)
class ControllerConstant (line 553) | public class ControllerConstant
method ControllerConstant (line 560) | public ControllerConstant(ObjectReader reader)
class AnimatorController (line 581) | public sealed class AnimatorController : RuntimeAnimatorController
method AnimatorController (line 585) | public AnimatorController(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/AnimatorOverrideController.cs
class AnimationClipOverride (line 8) | public class AnimationClipOverride
method AnimationClipOverride (line 13) | public AnimationClipOverride(ObjectReader reader)
class AnimatorOverrideController (line 20) | public sealed class AnimatorOverrideController : RuntimeAnimatorController
method AnimatorOverrideController (line 25) | public AnimatorOverrideController(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/AssetBundle.cs
class AssetInfo (line 8) | public class AssetInfo
method AssetInfo (line 14) | public AssetInfo(ObjectReader reader)
class AssetBundle (line 22) | public sealed class AssetBundle : NamedObject
method AssetBundle (line 27) | public AssetBundle(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/AudioClip.cs
class AudioClip (line 9) | public sealed class AudioClip : NamedObject
method AudioClip (line 34) | public AudioClip(ObjectReader reader) : base(reader)
type FMODSoundType (line 95) | public enum FMODSoundType
type AudioCompressionFormat (line 129) | public enum AudioCompressionFormat
FILE: AssetStudio/Classes/Avatar.cs
class Node (line 6) | public class Node
method Node (line 11) | public Node(ObjectReader reader)
class Limit (line 18) | public class Limit
method Limit (line 23) | public Limit(ObjectReader reader)
class Axes (line 39) | public class Axes
method Axes (line 48) | public Axes(ObjectReader reader)
class Skeleton (line 67) | public class Skeleton
method Skeleton (line 74) | public Skeleton(ObjectReader reader)
class SkeletonPose (line 94) | public class SkeletonPose
method SkeletonPose (line 98) | public SkeletonPose(ObjectReader reader)
class Hand (line 109) | public class Hand
method Hand (line 113) | public Hand(ObjectReader reader)
class Handle (line 119) | public class Handle
method Handle (line 125) | public Handle(ObjectReader reader)
class Collider (line 133) | public class Collider
method Collider (line 145) | public Collider(ObjectReader reader)
class Human (line 159) | public class Human
method Human (line 183) | public Human(ObjectReader reader)
class AvatarConstant (line 236) | public class AvatarConstant
method AvatarConstant (line 251) | public AvatarConstant(ObjectReader reader)
class Avatar (line 286) | public sealed class Avatar : NamedObject
method Avatar (line 292) | public Avatar(ObjectReader reader) : base(reader)
method FindBonePath (line 307) | public string FindBonePath(uint hash)
FILE: AssetStudio/Classes/Behaviour.cs
class Behaviour (line 8) | public abstract class Behaviour : Component
method Behaviour (line 12) | protected Behaviour(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/BuildSettings.cs
class BuildSettings (line 8) | public sealed class BuildSettings : Object
method BuildSettings (line 12) | public BuildSettings(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Component.cs
class Component (line 8) | public abstract class Component : EditorExtension
method Component (line 12) | protected Component(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/EditorExtension.cs
class EditorExtension (line 8) | public abstract class EditorExtension : Object
method EditorExtension (line 10) | protected EditorExtension(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Font.cs
class Font (line 8) | public sealed class Font : NamedObject
method Font (line 12) | public Font(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/GameObject.cs
class GameObject (line 8) | public sealed class GameObject : EditorExtension
method GameObject (line 20) | public GameObject(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Material.cs
class UnityTexEnv (line 5) | public class UnityTexEnv
method UnityTexEnv (line 11) | public UnityTexEnv(ObjectReader reader)
class UnityPropertySheet (line 19) | public class UnityPropertySheet
method UnityPropertySheet (line 26) | public UnityPropertySheet(ObjectReader reader)
class Material (line 63) | public sealed class Material : NamedObject
method Material (line 68) | public Material(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Mesh.cs
class MinMaxAABB (line 9) | public class MinMaxAABB
method MinMaxAABB (line 14) | public MinMaxAABB(BinaryReader reader)
class CompressedMesh (line 21) | public class CompressedMesh
method CompressedMesh (line 37) | public CompressedMesh(ObjectReader reader)
class StreamInfo (line 72) | public class StreamInfo
method StreamInfo (line 81) | public StreamInfo() { }
method StreamInfo (line 83) | public StreamInfo(ObjectReader reader)
class ChannelInfo (line 104) | public class ChannelInfo
method ChannelInfo (line 111) | public ChannelInfo() { }
method ChannelInfo (line 113) | public ChannelInfo(ObjectReader reader)
class VertexData (line 122) | public class VertexData
method VertexData (line 130) | public VertexData(ObjectReader reader)
method GetStreams (line 181) | private void GetStreams(int[] version)
method GetChannels (line 216) | private void GetChannels(int[] version)
class BoneWeights4 (line 263) | public class BoneWeights4
method BoneWeights4 (line 268) | public BoneWeights4()
method BoneWeights4 (line 274) | public BoneWeights4(ObjectReader reader)
class BlendShapeVertex (line 281) | public class BlendShapeVertex
method BlendShapeVertex (line 288) | public BlendShapeVertex(ObjectReader reader)
class MeshBlendShape (line 297) | public class MeshBlendShape
method MeshBlendShape (line 304) | public MeshBlendShape(ObjectReader reader)
class MeshBlendShapeChannel (line 328) | public class MeshBlendShapeChannel
method MeshBlendShapeChannel (line 335) | public MeshBlendShapeChannel(ObjectReader reader)
class BlendShapeData (line 344) | public class BlendShapeData
method BlendShapeData (line 351) | public BlendShapeData(ObjectReader reader)
type GfxPrimitiveType (line 399) | public enum GfxPrimitiveType
class SubMesh (line 409) | public class SubMesh
method SubMesh (line 420) | public SubMesh(ObjectReader reader)
class Mesh (line 447) | public sealed class Mesh : NamedObject
method Mesh (line 475) | public Mesh(ObjectReader reader) : base(reader)
method ProcessData (line 683) | private void ProcessData()
method ReadVertexData (line 706) | private void ReadVertexData()
method DecompressCompressedMesh (line 866) | private void DecompressCompressedMesh()
method GetTriangles (line 1057) | private void GetTriangles()
method InitMSkin (line 1129) | private void InitMSkin()
method SetUV (line 1138) | private void SetUV(int uv, float[] m_UV)
method GetUV (line 1171) | public float[] GetUV(int uv)
class MeshHelper (line 1197) | public static class MeshHelper
type VertexChannelFormat (line 1199) | public enum VertexChannelFormat
type VertexFormat2017 (line 1208) | public enum VertexFormat2017
type VertexFormat (line 1225) | public enum VertexFormat
method ToVertexFormat (line 1241) | public static VertexFormat ToVertexFormat(int format, int[] version)
method GetFormatSize (line 1301) | public static uint GetFormatSize(VertexFormat format)
method IsIntFormat (line 1325) | public static bool IsIntFormat(VertexFormat format)
method BytesToFloatArray (line 1330) | public static float[] BytesToFloatArray(byte[] inputBytes, VertexForma...
method BytesToIntArray (line 1362) | public static int[] BytesToIntArray(byte[] inputBytes, VertexFormat fo...
FILE: AssetStudio/Classes/MeshFilter.cs
class MeshFilter (line 8) | public sealed class MeshFilter : Component
method MeshFilter (line 12) | public MeshFilter(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/MeshRenderer.cs
class MeshRenderer (line 8) | public sealed class MeshRenderer : Renderer
method MeshRenderer (line 10) | public MeshRenderer(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/MonoBehaviour.cs
class MonoBehaviour (line 8) | public sealed class MonoBehaviour : Behaviour
method MonoBehaviour (line 13) | public MonoBehaviour(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/MonoScript.cs
class MonoScript (line 8) | public sealed class MonoScript : NamedObject
method MonoScript (line 14) | public MonoScript(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/MovieTexture.cs
class MovieTexture (line 8) | public sealed class MovieTexture : Texture
method MovieTexture (line 13) | public MovieTexture(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/NamedObject.cs
class NamedObject (line 8) | public class NamedObject : EditorExtension
method NamedObject (line 12) | protected NamedObject(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Object.cs
class Object (line 5) | public class Object
method Object (line 17) | public Object(ObjectReader reader)
method Dump (line 36) | public string Dump()
method Dump (line 45) | public string Dump(TypeTree m_Type)
method ToType (line 54) | public OrderedDictionary ToType()
method ToType (line 63) | public OrderedDictionary ToType(TypeTree m_Type)
method GetRawData (line 72) | public byte[] GetRawData()
FILE: AssetStudio/Classes/PPtr.cs
class PPtr (line 5) | public sealed class PPtr<T> where T : Object
method PPtr (line 13) | public PPtr(ObjectReader reader)
method TryGetAssetsFile (line 20) | private bool TryGetAssetsFile(out SerializedFile result)
method TryGet (line 56) | public bool TryGet(out T result)
method TryGet (line 74) | public bool TryGet<T2>(out T2 result) where T2 : Object
method Set (line 92) | public void Set(T m_Object)
FILE: AssetStudio/Classes/PlayerSettings.cs
class PlayerSettings (line 8) | public sealed class PlayerSettings : Object
method PlayerSettings (line 13) | public PlayerSettings(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/RectTransform.cs
class RectTransform (line 8) | public sealed class RectTransform : Transform
method RectTransform (line 10) | public RectTransform(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Renderer.cs
class StaticBatchInfo (line 8) | public class StaticBatchInfo
method StaticBatchInfo (line 13) | public StaticBatchInfo(ObjectReader reader)
class Renderer (line 20) | public abstract class Renderer : Component
method Renderer (line 26) | protected Renderer(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/ResourceManager.cs
class ResourceManager (line 5) | public class ResourceManager : Object
method ResourceManager (line 9) | public ResourceManager(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/RuntimeAnimatorController.cs
class RuntimeAnimatorController (line 8) | public abstract class RuntimeAnimatorController : NamedObject
method RuntimeAnimatorController (line 10) | protected RuntimeAnimatorController(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Shader.cs
class Hash128 (line 8) | public class Hash128
method Hash128 (line 12) | public Hash128(BinaryReader reader)
class StructParameter (line 18) | public class StructParameter
method StructParameter (line 23) | public StructParameter(BinaryReader reader)
class SamplerParameter (line 46) | public class SamplerParameter
method SamplerParameter (line 51) | public SamplerParameter(BinaryReader reader)
type TextureDimension (line 57) | public enum TextureDimension
class SerializedTextureProperty (line 69) | public class SerializedTextureProperty
method SerializedTextureProperty (line 74) | public SerializedTextureProperty(BinaryReader reader)
type SerializedPropertyType (line 81) | public enum SerializedPropertyType
class SerializedProperty (line 91) | public class SerializedProperty
method SerializedProperty (line 101) | public SerializedProperty(BinaryReader reader)
class SerializedProperties (line 113) | public class SerializedProperties
method SerializedProperties (line 117) | public SerializedProperties(BinaryReader reader)
class SerializedShaderFloatValue (line 128) | public class SerializedShaderFloatValue
method SerializedShaderFloatValue (line 133) | public SerializedShaderFloatValue(BinaryReader reader)
class SerializedShaderRTBlendState (line 140) | public class SerializedShaderRTBlendState
method SerializedShaderRTBlendState (line 150) | public SerializedShaderRTBlendState(BinaryReader reader)
class SerializedStencilOp (line 162) | public class SerializedStencilOp
method SerializedStencilOp (line 169) | public SerializedStencilOp(BinaryReader reader)
class SerializedShaderVectorValue (line 178) | public class SerializedShaderVectorValue
method SerializedShaderVectorValue (line 186) | public SerializedShaderVectorValue(BinaryReader reader)
type FogMode (line 196) | public enum FogMode
class SerializedShaderState (line 205) | public class SerializedShaderState
method SerializedShaderState (line 234) | public SerializedShaderState(ObjectReader reader)
class ShaderBindChannel (line 279) | public class ShaderBindChannel
method ShaderBindChannel (line 284) | public ShaderBindChannel(BinaryReader reader)
class ParserBindChannels (line 291) | public class ParserBindChannels
method ParserBindChannels (line 296) | public ParserBindChannels(BinaryReader reader)
class VectorParameter (line 310) | public class VectorParameter
method VectorParameter (line 318) | public VectorParameter(BinaryReader reader)
class MatrixParameter (line 329) | public class MatrixParameter
method MatrixParameter (line 337) | public MatrixParameter(BinaryReader reader)
class TextureParameter (line 348) | public class TextureParameter
method TextureParameter (line 355) | public TextureParameter(ObjectReader reader)
class BufferBinding (line 371) | public class BufferBinding
method BufferBinding (line 377) | public BufferBinding(ObjectReader reader)
class ConstantBuffer (line 390) | public class ConstantBuffer
method ConstantBuffer (line 399) | public ConstantBuffer(ObjectReader reader)
class UAVParameter (line 441) | public class UAVParameter
method UAVParameter (line 447) | public UAVParameter(BinaryReader reader)
type ShaderGpuProgramType (line 455) | public enum ShaderGpuProgramType
class SerializedProgramParameters (line 492) | public class SerializedProgramParameters
method SerializedProgramParameters (line 503) | public SerializedProgramParameters(ObjectReader reader)
class SerializedSubProgram (line 563) | public class SerializedSubProgram
method SerializedSubProgram (line 580) | public SerializedSubProgram(ObjectReader reader)
class SerializedProgram (line 691) | public class SerializedProgram
method SerializedProgram (line 697) | public SerializedProgram(ObjectReader reader)
type PassType (line 725) | public enum PassType
class SerializedPass (line 732) | public class SerializedPass
method SerializedPass (line 755) | public SerializedPass(ObjectReader reader)
class SerializedTagMap (line 816) | public class SerializedTagMap
method SerializedTagMap (line 820) | public SerializedTagMap(BinaryReader reader)
class SerializedSubShader (line 831) | public class SerializedSubShader
method SerializedSubShader (line 837) | public SerializedSubShader(ObjectReader reader)
class SerializedShaderDependency (line 851) | public class SerializedShaderDependency
method SerializedShaderDependency (line 856) | public SerializedShaderDependency(BinaryReader reader)
class SerializedCustomEditorForRenderPipeline (line 863) | public class SerializedCustomEditorForRenderPipeline
method SerializedCustomEditorForRenderPipeline (line 868) | public SerializedCustomEditorForRenderPipeline(BinaryReader reader)
class SerializedShader (line 875) | public class SerializedShader
method SerializedShader (line 888) | public SerializedShader(ObjectReader reader)
type ShaderCompilerPlatform (line 934) | public enum ShaderCompilerPlatform
class Shader (line 964) | public class Shader : NamedObject
method Shader (line 978) | public Shader(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/SkinnedMeshRenderer.cs
class SkinnedMeshRenderer (line 8) | public sealed class SkinnedMeshRenderer : Renderer
method SkinnedMeshRenderer (line 14) | public SkinnedMeshRenderer(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Sprite.cs
class SecondarySpriteTexture (line 7) | public class SecondarySpriteTexture
method SecondarySpriteTexture (line 12) | public SecondarySpriteTexture(ObjectReader reader)
type SpritePackingRotation (line 19) | public enum SpritePackingRotation
type SpritePackingMode (line 28) | public enum SpritePackingMode
type SpriteMeshType (line 34) | public enum SpriteMeshType
class SpriteSettings (line 40) | public class SpriteSettings
method SpriteSettings (line 49) | public SpriteSettings(BinaryReader reader)
class SpriteVertex (line 61) | public class SpriteVertex
method SpriteVertex (line 66) | public SpriteVertex(ObjectReader reader)
class SpriteRenderData (line 78) | public class SpriteRenderData
method SpriteRenderData (line 97) | public SpriteRenderData(ObjectReader reader)
class Rectf (line 178) | public class Rectf
method Rectf (line 185) | public Rectf(BinaryReader reader)
class Sprite (line 194) | public sealed class Sprite : NamedObject
method Sprite (line 209) | public Sprite(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/SpriteAtlas.cs
class SpriteAtlasData (line 6) | public class SpriteAtlasData
method SpriteAtlasData (line 18) | public SpriteAtlasData(ObjectReader reader)
class SpriteAtlas (line 45) | public sealed class SpriteAtlas : NamedObject
method SpriteAtlas (line 51) | public SpriteAtlas(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/TextAsset.cs
class TextAsset (line 9) | public sealed class TextAsset : NamedObject
method TextAsset (line 13) | public TextAsset(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Texture.cs
class Texture (line 8) | public abstract class Texture : NamedObject
method Texture (line 10) | protected Texture(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/Texture2D.cs
class StreamingInfo (line 5) | public class StreamingInfo
method StreamingInfo (line 11) | public StreamingInfo(ObjectReader reader)
class GLTextureSettings (line 28) | public class GLTextureSettings
method GLTextureSettings (line 35) | public GLTextureSettings(ObjectReader reader)
class Texture2D (line 55) | public sealed class Texture2D : Texture
method Texture2D (line 66) | public Texture2D(ObjectReader reader) : base(reader)
type TextureFormat (line 147) | public enum TextureFormat
FILE: AssetStudio/Classes/Transform.cs
class Transform (line 8) | public class Transform : Component
method Transform (line 16) | public Transform(ObjectReader reader) : base(reader)
FILE: AssetStudio/Classes/VideoClip.cs
class StreamedResource (line 5) | public class StreamedResource
method StreamedResource (line 11) | public StreamedResource(BinaryReader reader)
class VideoClip (line 19) | public sealed class VideoClip : NamedObject
method VideoClip (line 25) | public VideoClip(ObjectReader reader) : base(reader)
FILE: AssetStudio/CommonString.cs
class CommonString (line 5) | public static class CommonString
FILE: AssetStudio/EndianBinaryReader.cs
class EndianBinaryReader (line 7) | public class EndianBinaryReader : BinaryReader
method EndianBinaryReader (line 13) | public EndianBinaryReader(Stream stream, EndianType endian = EndianTyp...
method ReadInt16 (line 25) | public override short ReadInt16()
method ReadInt32 (line 35) | public override int ReadInt32()
method ReadInt64 (line 45) | public override long ReadInt64()
method ReadUInt16 (line 55) | public override ushort ReadUInt16()
method ReadUInt32 (line 65) | public override uint ReadUInt32()
method ReadUInt64 (line 75) | public override ulong ReadUInt64()
method ReadSingle (line 85) | public override float ReadSingle()
method ReadDouble (line 96) | public override double ReadDouble()
FILE: AssetStudio/EndianType.cs
type EndianType (line 9) | public enum EndianType
FILE: AssetStudio/Extensions/BinaryReaderExtensions.cs
class BinaryReaderExtensions (line 8) | public static class BinaryReaderExtensions
method AlignStream (line 10) | public static void AlignStream(this BinaryReader reader)
method AlignStream (line 15) | public static void AlignStream(this BinaryReader reader, int alignment)
method ReadAlignedString (line 25) | public static string ReadAlignedString(this BinaryReader reader)
method ReadStringToNull (line 38) | public static string ReadStringToNull(this BinaryReader reader, int ma...
method ReadQuaternion (line 55) | public static Quaternion ReadQuaternion(this BinaryReader reader)
method ReadVector2 (line 60) | public static Vector2 ReadVector2(this BinaryReader reader)
method ReadVector3 (line 65) | public static Vector3 ReadVector3(this BinaryReader reader)
method ReadVector4 (line 70) | public static Vector4 ReadVector4(this BinaryReader reader)
method ReadColor4 (line 75) | public static Color ReadColor4(this BinaryReader reader)
method ReadMatrix (line 80) | public static Matrix4x4 ReadMatrix(this BinaryReader reader)
method ReadArray (line 85) | private static T[] ReadArray<T>(Func<T> del, int length)
method ReadBooleanArray (line 95) | public static bool[] ReadBooleanArray(this BinaryReader reader)
method ReadUInt8Array (line 100) | public static byte[] ReadUInt8Array(this BinaryReader reader)
method ReadUInt16Array (line 105) | public static ushort[] ReadUInt16Array(this BinaryReader reader)
method ReadInt32Array (line 110) | public static int[] ReadInt32Array(this BinaryReader reader)
method ReadInt32Array (line 115) | public static int[] ReadInt32Array(this BinaryReader reader, int length)
method ReadUInt32Array (line 120) | public static uint[] ReadUInt32Array(this BinaryReader reader)
method ReadUInt32ArrayArray (line 125) | public static uint[][] ReadUInt32ArrayArray(this BinaryReader reader)
method ReadUInt32Array (line 130) | public static uint[] ReadUInt32Array(this BinaryReader reader, int len...
method ReadSingleArray (line 135) | public static float[] ReadSingleArray(this BinaryReader reader)
method ReadSingleArray (line 140) | public static float[] ReadSingleArray(this BinaryReader reader, int le...
method ReadStringArray (line 145) | public static string[] ReadStringArray(this BinaryReader reader)
method ReadVector2Array (line 150) | public static Vector2[] ReadVector2Array(this BinaryReader reader)
method ReadVector4Array (line 155) | public static Vector4[] ReadVector4Array(this BinaryReader reader)
method ReadMatrixArray (line 160) | public static Matrix4x4[] ReadMatrixArray(this BinaryReader reader)
FILE: AssetStudio/Extensions/BinaryWriterExtensions.cs
class BinaryWriterExtensions (line 7) | public static class BinaryWriterExtensions
method AlignStream (line 9) | public static void AlignStream(this BinaryWriter writer, int alignment)
method WriteAlignedString (line 19) | public static void WriteAlignedString(this BinaryWriter writer, string...
FILE: AssetStudio/Extensions/StreamExtensions.cs
class StreamExtensions (line 5) | public static class StreamExtensions
method CopyTo (line 9) | public static void CopyTo(this Stream source, Stream destination, long...
FILE: AssetStudio/FileIdentifier.cs
class FileIdentifier (line 8) | public class FileIdentifier
FILE: AssetStudio/FileReader.cs
class FileReader (line 6) | public class FileReader : EndianBinaryReader
method FileReader (line 17) | public FileReader(string path) : this(path, File.Open(path, FileMode.O...
method FileReader (line 19) | public FileReader(string path, Stream stream) : base(stream, EndianTyp...
method CheckFileType (line 26) | private FileType CheckFileType()
method IsSerializedFile (line 67) | private bool IsSerializedFile()
FILE: AssetStudio/FileType.cs
type FileType (line 9) | public enum FileType
FILE: AssetStudio/IImported.cs
type IImported (line 7) | public interface IImported
class ImportedFrame (line 17) | public class ImportedFrame
method ImportedFrame (line 46) | public ImportedFrame(int childrenCount = 0)
method AddChild (line 51) | public void AddChild(ImportedFrame obj)
method Remove (line 58) | public void Remove(ImportedFrame frame)
method FindFrameByPath (line 63) | public ImportedFrame FindFrameByPath(string path)
method FindRelativeFrameWithPath (line 76) | public ImportedFrame FindRelativeFrameWithPath(string path)
method FindFrame (line 98) | public ImportedFrame FindFrame(string name)
method FindChild (line 115) | public ImportedFrame FindChild(string name, bool recursive = true)
method FindChilds (line 138) | public IEnumerable<ImportedFrame> FindChilds(string name)
class ImportedMesh (line 154) | public class ImportedMesh
class ImportedSubmesh (line 166) | public class ImportedSubmesh
class ImportedVertex (line 173) | public class ImportedVertex
class ImportedFace (line 184) | public class ImportedFace
class ImportedBone (line 189) | public class ImportedBone
class ImportedMaterial (line 195) | public class ImportedMaterial
class ImportedMaterialTexture (line 208) | public class ImportedMaterialTexture
class ImportedTexture (line 216) | public class ImportedTexture
method ImportedTexture (line 221) | public ImportedTexture(MemoryStream stream, string name)
class ImportedKeyframedAnimation (line 228) | public class ImportedKeyframedAnimation
method FindTrack (line 234) | public ImportedAnimationKeyframedTrack FindTrack(string path)
class ImportedAnimationKeyframedTrack (line 247) | public class ImportedAnimationKeyframedTrack
class ImportedKeyframe (line 256) | public class ImportedKeyframe<T>
method ImportedKeyframe (line 261) | public ImportedKeyframe(float time, T value)
class ImportedBlendShape (line 268) | public class ImportedBlendShape
class ImportedMorph (line 274) | public class ImportedMorph
class ImportedMorphChannel (line 280) | public class ImportedMorphChannel
class ImportedMorphKeyframe (line 286) | public class ImportedMorphKeyframe
class ImportedMorphVertex (line 294) | public class ImportedMorphVertex
class ImportedHelpers (line 300) | public static class ImportedHelpers
method FindMesh (line 302) | public static ImportedMesh FindMesh(string path, List<ImportedMesh> im...
method FindMaterial (line 315) | public static ImportedMaterial FindMaterial(string name, List<Imported...
method FindTexture (line 328) | public static ImportedTexture FindTexture(string name, List<ImportedTe...
FILE: AssetStudio/ILogger.cs
type LoggerEvent (line 8) | public enum LoggerEvent
type ILogger (line 17) | public interface ILogger
method Log (line 19) | void Log(LoggerEvent loggerEvent, string message);
class DummyLogger (line 22) | public sealed class DummyLogger : ILogger
method Log (line 24) | public void Log(LoggerEvent loggerEvent, string message) { }
FILE: AssetStudio/ImportHelper.cs
class ImportHelper (line 9) | public static class ImportHelper
method MergeSplitAssets (line 11) | public static void MergeSplitAssets(string path, bool allDirectories =...
method ProcessingSplitFiles (line 37) | public static string[] ProcessingSplitFiles(List<string> selectFile)
method DecompressGZip (line 54) | public static FileReader DecompressGZip(FileReader reader)
method DecompressBrotli (line 68) | public static FileReader DecompressBrotli(FileReader reader)
FILE: AssetStudio/LocalSerializedObjectIdentifier.cs
class LocalSerializedObjectIdentifier (line 8) | public class LocalSerializedObjectIdentifier
FILE: AssetStudio/Logger.cs
class Logger (line 8) | public static class Logger
method Verbose (line 12) | public static void Verbose(string message) => Default.Log(LoggerEvent....
method Debug (line 13) | public static void Debug(string message) => Default.Log(LoggerEvent.De...
method Info (line 14) | public static void Info(string message) => Default.Log(LoggerEvent.Inf...
method Warning (line 15) | public static void Warning(string message) => Default.Log(LoggerEvent....
method Error (line 16) | public static void Error(string message) => Default.Log(LoggerEvent.Er...
method Error (line 18) | public static void Error(string message, Exception e)
FILE: AssetStudio/Math/Color.cs
type Color (line 6) | [StructLayout(LayoutKind.Sequential, Pack = 4)]
method Color (line 14) | public Color(float r, float g, float b, float a)
method GetHashCode (line 22) | public override int GetHashCode()
method Equals (line 27) | public override bool Equals(object other)
method Equals (line 34) | public bool Equals(Color other)
FILE: AssetStudio/Math/Half.cs
type Half (line 25) | [Serializable]
method Half (line 66) | public Half(float value) { this = HalfHelper.SingleToHalf(value); }
method Half (line 71) | public Half(int value) : this((float)value) { }
method Half (line 76) | public Half(long value) : this((float)value) { }
method Half (line 81) | public Half(double value) : this((float)value) { }
method Half (line 86) | public Half(decimal value) : this((float)value) { }
method Half (line 91) | public Half(uint value) : this((float)value) { }
method Half (line 96) | public Half(ulong value) : this((float)value) { }
method Negate (line 106) | public static Half Negate(Half half) { return -half; }
method Add (line 113) | public static Half Add(Half half1, Half half2) { return half1 + half2; }
method Subtract (line 120) | public static Half Subtract(Half half1, Half half2) { return half1 - h...
method Multiply (line 127) | public static Half Multiply(Half half1, Half half2) { return half1 * h...
method Divide (line 135) | public static Half Divide(Half half1, Half half2) { return half1 / hal...
method CompareTo (line 389) | public int CompareTo(Half other)
method CompareTo (line 425) | public int CompareTo(object obj)
method Equals (line 451) | public bool Equals(Half other)
method Equals (line 461) | public override bool Equals(object obj)
method GetHashCode (line 479) | public override int GetHashCode()
method GetTypeCode (line 487) | public TypeCode GetTypeCode()
method GetBytes (line 498) | public static byte[] GetBytes(Half value)
method GetBits (line 507) | public static ushort GetBits(Half value)
method ToHalf (line 524) | public static Half ToHalf(byte[] value, int startIndex)
method ToHalf (line 533) | public static Half ToHalf(ushort bits)
method Sign (line 547) | public static int Sign(Half value)
method Abs (line 572) | public static Half Abs(Half value)
method Max (line 585) | public static Half Max(Half value1, Half value2)
method Min (line 598) | public static Half Min(Half value1, Half value2)
method IsNaN (line 609) | public static bool IsNaN(Half half)
method IsInfinity (line 618) | public static bool IsInfinity(Half half)
method IsNegativeInfinity (line 627) | public static bool IsNegativeInfinity(Half half)
method IsPositiveInfinity (line 636) | public static bool IsPositiveInfinity(Half half)
method Parse (line 650) | public static Half Parse(string value)
method Parse (line 664) | public static Half Parse(string value, IFormatProvider provider)
method Parse (line 685) | public static Half Parse(string value, NumberStyles style)
method Parse (line 708) | public static Half Parse(string value, NumberStyles style, IFormatProv...
method TryParse (line 725) | public static bool TryParse(string value, out Half result)
method TryParse (line 760) | public static bool TryParse(string value, NumberStyles style, IFormatP...
method ToString (line 780) | public override string ToString()
method ToString (line 790) | public string ToString(IFormatProvider formatProvider)
method ToString (line 799) | public string ToString(string format)
method ToString (line 811) | public string ToString(string format, IFormatProvider formatProvider)
method ToSingle (line 818) | float IConvertible.ToSingle(IFormatProvider provider)
method GetTypeCode (line 822) | TypeCode IConvertible.GetTypeCode()
method ToBoolean (line 826) | bool IConvertible.ToBoolean(IFormatProvider provider)
method ToByte (line 830) | byte IConvertible.ToByte(IFormatProvider provider)
method ToChar (line 834) | char IConvertible.ToChar(IFormatProvider provider)
method ToDateTime (line 838) | DateTime IConvertible.ToDateTime(IFormatProvider provider)
method ToDecimal (line 842) | decimal IConvertible.ToDecimal(IFormatProvider provider)
method ToDouble (line 846) | double IConvertible.ToDouble(IFormatProvider provider)
method ToInt16 (line 850) | short IConvertible.ToInt16(IFormatProvider provider)
method ToInt32 (line 854) | int IConvertible.ToInt32(IFormatProvider provider)
method ToInt64 (line 858) | long IConvertible.ToInt64(IFormatProvider provider)
method ToSByte (line 862) | sbyte IConvertible.ToSByte(IFormatProvider provider)
method ToString (line 866) | string IConvertible.ToString(IFormatProvider provider)
method ToType (line 870) | object IConvertible.ToType(Type conversionType, IFormatProvider provider)
method ToUInt16 (line 874) | ushort IConvertible.ToUInt16(IFormatProvider provider)
method ToUInt32 (line 878) | uint IConvertible.ToUInt32(IFormatProvider provider)
method ToUInt64 (line 882) | ulong IConvertible.ToUInt64(IFormatProvider provider)
FILE: AssetStudio/Math/HalfHelper.cs
class HalfHelper (line 14) | [ComVisible(false)]
method ConvertMantissa (line 24) | private static uint ConvertMantissa(int i)
method GenerateMantissaTable (line 40) | private static uint[] GenerateMantissaTable()
method GenerateExponentTable (line 55) | private static uint[] GenerateExponentTable()
method GenerateOffsetTable (line 73) | private static ushort[] GenerateOffsetTable()
method GenerateBaseTable (line 89) | private static ushort[] GenerateBaseTable()
method GenerateShiftTable (line 124) | private static sbyte[] GenerateShiftTable()
method HalfToSingle (line 172) | public static float HalfToSingle(Half half)
method SingleToHalf (line 178) | public static Half SingleToHalf(float single)
method Negate (line 186) | public static Half Negate(Half half)
method Abs (line 190) | public static Half Abs(Half half)
method IsNaN (line 195) | public static bool IsNaN(Half half)
method IsInfinity (line 199) | public static bool IsInfinity(Half half)
method IsPositiveInfinity (line 203) | public static bool IsPositiveInfinity(Half half)
method IsNegativeInfinity (line 207) | public static bool IsNegativeInfinity(Half half)
FILE: AssetStudio/Math/Matrix4x4.cs
type Matrix4x4 (line 6) | [StructLayout(LayoutKind.Sequential, Pack = 4)]
method Matrix4x4 (line 29) | public Matrix4x4(float[] values)
method GetHashCode (line 115) | public override int GetHashCode()
method Equals (line 120) | public override bool Equals(object other)
method Equals (line 127) | public bool Equals(Matrix4x4 other)
method GetColumn (line 135) | public Vector4 GetColumn(int index)
method GetRow (line 147) | public Vector4 GetRow(int index)
method Scale (line 198) | public static Matrix4x4 Scale(Vector3 vector)
method Translate (line 208) | public static Matrix4x4 Translate(Vector3 vector)
method Rotate (line 218) | public static Matrix4x4 Rotate(Quaternion q)
FILE: AssetStudio/Math/Quaternion.cs
type Quaternion (line 6) | [StructLayout(LayoutKind.Sequential, Pack = 4)]
method Quaternion (line 14) | public Quaternion(float x, float y, float z, float w)
method GetHashCode (line 49) | public override int GetHashCode()
method Equals (line 54) | public override bool Equals(object other)
method Equals (line 61) | public bool Equals(Quaternion other)
method Dot (line 66) | public static float Dot(Quaternion a, Quaternion b)
method IsEqualUsingDot (line 71) | private static bool IsEqualUsingDot(float dot)
FILE: AssetStudio/Math/Vector2.cs
type Vector2 (line 6) | [StructLayout(LayoutKind.Sequential, Pack = 4)]
method Vector2 (line 12) | public Vector2(float x, float y)
method GetHashCode (line 41) | public override int GetHashCode()
method Equals (line 46) | public override bool Equals(object other)
method Equals (line 53) | public bool Equals(Vector2 other)
method Normalize (line 58) | public void Normalize()
method Length (line 74) | public float Length()
method LengthSquared (line 79) | public float LengthSquared()
FILE: AssetStudio/Math/Vector3.cs
type Vector3 (line 6) | [StructLayout(LayoutKind.Sequential, Pack = 4)]
method Vector3 (line 13) | public Vector3(float x, float y, float z)
method GetHashCode (line 45) | public override int GetHashCode()
method Equals (line 50) | public override bool Equals(object other)
method Equals (line 57) | public bool Equals(Vector3 other)
method Normalize (line 62) | public void Normalize()
method Length (line 80) | public float Length()
method LengthSquared (line 85) | public float LengthSquared()
FILE: AssetStudio/Math/Vector4.cs
type Vector4 (line 6) | [StructLayout(LayoutKind.Sequential, Pack = 4)]
method Vector4 (line 14) | public Vector4(float x, float y, float z, float w)
method Vector4 (line 22) | public Vector4(Vector3 value, float w)
method GetHashCode (line 57) | public override int GetHashCode()
method Equals (line 62) | public override bool Equals(object other)
method Equals (line 69) | public bool Equals(Vector4 other)
method Normalize (line 74) | public void Normalize()
method Length (line 94) | public float Length()
method LengthSquared (line 99) | public float LengthSquared()
FILE: AssetStudio/ObjectInfo.cs
class ObjectInfo (line 8) | public class ObjectInfo
FILE: AssetStudio/ObjectReader.cs
class ObjectReader (line 9) | public class ObjectReader : EndianBinaryReader
method ObjectReader (line 23) | public ObjectReader(EndianBinaryReader reader, SerializedFile assetsFi...
method Reset (line 42) | public void Reset()
FILE: AssetStudio/Progress.cs
class Progress (line 5) | public static class Progress
method Reset (line 10) | public static void Reset()
method Report (line 16) | public static void Report(int current, int total)
method Report (line 22) | private static void Report(int value)
FILE: AssetStudio/ResourceReader.cs
class ResourceReader (line 5) | public class ResourceReader
method ResourceReader (line 16) | public ResourceReader(string path, SerializedFile assetsFile, long off...
method ResourceReader (line 25) | public ResourceReader(BinaryReader reader, long offset, long size)
method GetReader (line 32) | private BinaryReader GetReader()
method GetData (line 67) | public byte[] GetData()
method GetData (line 74) | public void GetData(byte[] buff)
method WriteData (line 81) | public void WriteData(string path)
FILE: AssetStudio/SerializedFile.cs
class SerializedFile (line 9) | public class SerializedFile
method SerializedFile (line 34) | public SerializedFile(FileReader reader, AssetsManager assetsManager)
method SetVersion (line 220) | public void SetVersion(string stringVersion)
method ReadSerializedType (line 232) | private SerializedType ReadSerializedType(bool isRefType)
method ReadTypeTree (line 291) | private void ReadTypeTree(TypeTree m_Type, int level = 0)
method TypeTreeBlobRead (line 321) | private void TypeTreeBlobRead(TypeTree m_Type)
method AddObject (line 371) | public void AddObject(Object obj)
FILE: AssetStudio/SerializedFileFormatVersion.cs
type SerializedFileFormatVersion (line 9) | public enum SerializedFileFormatVersion
FILE: AssetStudio/SerializedFileHeader.cs
class SerializedFileHeader (line 8) | public class SerializedFileHeader
FILE: AssetStudio/SerializedType.cs
class SerializedType (line 8) | public class SerializedType
FILE: AssetStudio/SevenZipHelper.cs
class SevenZipHelper (line 8) | public static class SevenZipHelper
method StreamDecompress (line 10) | public static MemoryStream StreamDecompress(MemoryStream inStream)
method StreamDecompress (line 37) | public static void StreamDecompress(Stream compressedStream, Stream de...
FILE: AssetStudio/StreamFile.cs
class StreamFile (line 5) | public class StreamFile
FILE: AssetStudio/TypeTree.cs
class TypeTree (line 9) | public class TypeTree
FILE: AssetStudio/TypeTreeHelper.cs
class TypeTreeHelper (line 9) | public static class TypeTreeHelper
method ReadTypeString (line 11) | public static string ReadTypeString(TypeTree m_Type, ObjectReader reader)
method ReadStringValue (line 28) | private static void ReadStringValue(StringBuilder sb, List<TypeTreeNod...
method ReadType (line 166) | public static OrderedDictionary ReadType(TypeTree m_Types, ObjectReade...
method ReadValue (line 185) | private static object ReadValue(List<TypeTreeNode> m_Nodes, BinaryRead...
method GetNodes (line 308) | private static List<TypeTreeNode> GetNodes(List<TypeTreeNode> m_Nodes,...
FILE: AssetStudio/TypeTreeNode.cs
class TypeTreeNode (line 8) | public class TypeTreeNode
method TypeTreeNode (line 22) | public TypeTreeNode() { }
method TypeTreeNode (line 24) | public TypeTreeNode(string type, string name, int level, bool align)
FILE: AssetStudio/WebFile.cs
class WebFile (line 7) | public class WebFile
class WebData (line 11) | private class WebData
method WebFile (line 18) | public WebFile(EndianBinaryReader reader)
FILE: AssetStudioFBXNative/api.cpp
function AsUtilQuaternionToEuler (line 13) | AsUtilQuaternionToEuler(float qx, float qy, float qz, float qw, float* v...
function AsUtilEulerToQuaternion (line 35) | AsUtilEulerToQuaternion(float vx, float vy, float vz, float* qx, float* ...
function AsFbxCreateContext (line 74) | AsFbxCreateContext()
function AsFbxInitializeContext (line 79) | AsFbxInitializeContext(AsFbxContext* pContext, const char* pFileName, fl...
function AsFbxDisposeContext (line 158) | AsFbxDisposeContext(AsFbxContext** ppContext)
function AsFbxSetFramePaths (line 168) | AsFbxSetFramePaths(AsFbxContext* pContext, const char* ppPaths[], int32_...
function AsFbxExportScene (line 183) | AsFbxExportScene(AsFbxContext* pContext)
function AsFbxGetSceneRootNode (line 199) | AsFbxGetSceneRootNode(AsFbxContext* pContext)
function AsFbxExportSingleFrame (line 214) | AsFbxExportSingleFrame(AsFbxContext* pContext, FbxNode* pParentNode, con...
function AsFbxSetJointsNode_CastToBone (line 245) | AsFbxSetJointsNode_CastToBone(AsFbxContext* pContext, FbxNode* pNode, fl...
function AsFbxSetJointsNode_BoneInPath (line 263) | AsFbxSetJointsNode_BoneInPath(AsFbxContext* pContext, FbxNode* pNode, fl...
function AsFbxSetJointsNode_Generic (line 286) | AsFbxSetJointsNode_Generic(AsFbxContext* pContext, FbxNode* pNode)
function AsFbxPrepareMaterials (line 308) | AsFbxPrepareMaterials(AsFbxContext* pContext, int32_t materialCount, int...
function AsFbxCreateTexture (line 322) | AsFbxCreateTexture(AsFbxContext* pContext, const char* pMatTexName)
function AsFbxLinkTexture (line 347) | AsFbxLinkTexture(int32_t dest, FbxFileTexture* pTexture, FbxSurfacePhong...
function AsFbxMeshCreateClusterArray (line 383) | AsFbxMeshCreateClusterArray(int32_t boneCount)
function AsFbxMeshDisposeClusterArray (line 388) | AsFbxMeshDisposeClusterArray(FbxArray<FbxCluster*>** ppArray)
function AsFbxMeshCreateCluster (line 398) | AsFbxMeshCreateCluster(AsFbxContext* pContext, FbxNode* pBoneNode)
function AsFbxMeshAddCluster (line 416) | AsFbxMeshAddCluster(FbxArray<FbxCluster*>* pArray, FbxCluster* pCluster)
function AsFbxMeshCreateMesh (line 425) | AsFbxMeshCreateMesh(AsFbxContext* pContext, FbxNode* pFrameNode)
function AsFbxMeshInitControlPoints (line 443) | AsFbxMeshInitControlPoints(FbxMesh* pMesh, int32_t vertexCount)
function AsFbxMeshCreateElementNormal (line 453) | AsFbxMeshCreateElementNormal(FbxMesh* pMesh)
function AsFbxMeshCreateDiffuseUV (line 465) | AsFbxMeshCreateDiffuseUV(FbxMesh* pMesh, int32_t uv)
function AsFbxMeshCreateNormalMapUV (line 477) | AsFbxMeshCreateNormalMapUV(FbxMesh* pMesh, int32_t uv)
function AsFbxMeshCreateElementTangent (line 489) | AsFbxMeshCreateElementTangent(FbxMesh* pMesh)
function AsFbxMeshCreateElementVertexColor (line 501) | AsFbxMeshCreateElementVertexColor(FbxMesh* pMesh)
function AsFbxMeshCreateElementMaterial (line 513) | AsFbxMeshCreateElementMaterial(FbxMesh* pMesh)
function AsFbxCreateMaterial (line 525) | AsFbxCreateMaterial(AsFbxContext* pContext, const char* pMatName,
function AsFbxAddMaterialToFrame (line 562) | AsFbxAddMaterialToFrame(FbxNode* pFrameNode, FbxSurfacePhong* pMaterial)
function AsFbxSetFrameShadingModeToTextureShading (line 572) | AsFbxSetFrameShadingModeToTextureShading(FbxNode* pFrameNode)
function AsFbxMeshSetControlPoint (line 582) | AsFbxMeshSetControlPoint(FbxMesh* pMesh, int32_t index, float x, float y...
function AsFbxMeshAddPolygon (line 594) | AsFbxMeshAddPolygon(FbxMesh* pMesh, int32_t materialIndex, int32_t index...
function AsFbxMeshElementNormalAdd (line 608) | AsFbxMeshElementNormalAdd(FbxMesh* pMesh, int32_t elementIndex, float x,...
function AsFbxMeshElementUVAdd (line 621) | AsFbxMeshElementUVAdd(FbxMesh* pMesh, int32_t elementIndex, float u, flo...
function AsFbxMeshElementTangentAdd (line 634) | AsFbxMeshElementTangentAdd(FbxMesh* pMesh, int32_t elementIndex, float x...
function AsFbxMeshElementVertexColorAdd (line 647) | AsFbxMeshElementVertexColorAdd(FbxMesh* pMesh, int32_t elementIndex, flo...
function AsFbxMeshSetBoneWeight (line 660) | AsFbxMeshSetBoneWeight(FbxArray<FbxCluster*>* pClusterArray, int32_t bon...
function AsFbxMeshCreateSkinContext (line 675) | AsFbxMeshCreateSkinContext(AsFbxContext* pContext, FbxNode* pFrameNode)
function AsFbxMeshDisposeSkinContext (line 680) | AsFbxMeshDisposeSkinContext(AsFbxSkinContext** ppSkinContext)
function FbxClusterArray_HasItemAt (line 691) | FbxClusterArray_HasItemAt(FbxArray<FbxCluster*>* pClusterArray, int32_t ...
function IndexFrom4x4 (line 703) | static inline int32_t IndexFrom4x4(int32_t m, int32_t n)
function AsFbxMeshSkinAddCluster (line 708) | AsFbxMeshSkinAddCluster(AsFbxSkinContext* pSkinContext, FbxArray<FbxClus...
function AsFbxMeshAddDeformer (line 752) | AsFbxMeshAddDeformer(AsFbxSkinContext* pSkinContext, FbxMesh* pMesh)
function AsFbxAnimCreateContext (line 770) | AsFbxAnimCreateContext(bool32_t eulerFilter)
function AsFbxAnimDisposeContext (line 775) | AsFbxAnimDisposeContext(AsFbxAnimContext** ppAnimContext)
function AsFbxAnimPrepareStackAndLayer (line 786) | AsFbxAnimPrepareStackAndLayer(AsFbxContext* pContext, AsFbxAnimContext* ...
function AsFbxAnimLoadCurves (line 809) | AsFbxAnimLoadCurves(FbxNode* pNode, AsFbxAnimContext* pAnimContext)
function AsFbxAnimBeginKeyModify (line 832) | AsFbxAnimBeginKeyModify(AsFbxAnimContext* pAnimContext)
function AsFbxAnimEndKeyModify (line 850) | AsFbxAnimEndKeyModify(AsFbxAnimContext* pAnimContext)
function AsFbxAnimAddScalingKey (line 868) | AsFbxAnimAddScalingKey(AsFbxAnimContext* pAnimContext, float time, float...
function AsFbxAnimAddRotationKey (line 883) | AsFbxAnimAddRotationKey(AsFbxAnimContext* pAnimContext, float time, floa...
function AsFbxAnimAddTranslationKey (line 898) | AsFbxAnimAddTranslationKey(AsFbxAnimContext* pAnimContext, float time, f...
function AsFbxAnimApplyEulerFilter (line 913) | AsFbxAnimApplyEulerFilter(AsFbxAnimContext* pAnimContext, float filterPr...
function AsFbxAnimGetCurrentBlendShapeChannelCount (line 932) | AsFbxAnimGetCurrentBlendShapeChannelCount(AsFbxAnimContext* pAnimContext...
function AsFbxAnimIsBlendShapeChannelMatch (line 972) | AsFbxAnimIsBlendShapeChannelMatch(AsFbxAnimContext* pAnimContext, int32_...
function AsFbxAnimBeginBlendShapeAnimCurve (line 992) | AsFbxAnimBeginBlendShapeAnimCurve(AsFbxAnimContext* pAnimContext, int32_...
function AsFbxAnimEndBlendShapeAnimCurve (line 1003) | AsFbxAnimEndBlendShapeAnimCurve(AsFbxAnimContext* pAnimContext)
function AsFbxAnimAddBlendShapeKeyframe (line 1013) | AsFbxAnimAddBlendShapeKeyframe(AsFbxAnimContext* pAnimContext, float tim...
function AsFbxMorphCreateContext (line 1028) | AsFbxMorphCreateContext()
function AsFbxMorphInitializeContext (line 1033) | AsFbxMorphInitializeContext(AsFbxContext* pContext, AsFbxMorphContext* p...
function AsFbxMorphDisposeContext (line 1059) | AsFbxMorphDisposeContext(AsFbxMorphContext** ppMorphContext)
function AsFbxMorphAddBlendShapeChannel (line 1070) | AsFbxMorphAddBlendShapeChannel(AsFbxContext* pContext, AsFbxMorphContext...
function AsFbxMorphAddBlendShapeChannelShape (line 1096) | AsFbxMorphAddBlendShapeChannelShape(AsFbxContext* pContext, AsFbxMorphCo...
function AsFbxMorphCopyBlendShapeControlPoints (line 1116) | AsFbxMorphCopyBlendShapeControlPoints(AsFbxMorphContext* pMorphContext)
function AsFbxMorphSetBlendShapeVertex (line 1135) | AsFbxMorphSetBlendShapeVertex(AsFbxMorphContext* pMorphContext, uint32_t...
function AsFbxMorphCopyBlendShapeControlPointsNormal (line 1145) | AsFbxMorphCopyBlendShapeControlPointsNormal(AsFbxMorphContext* pMorphCon...
function AsFbxMorphSetBlendShapeVertexNormal (line 1155) | AsFbxMorphSetBlendShapeVertexNormal(AsFbxMorphContext* pMorphContext, ui...
FILE: AssetStudioFBXNative/api.h
function namespace (line 6) | namespace fbxsdk
type AsFbxContext (line 17) | struct AsFbxContext
type AsFbxSkinContext (line 18) | struct AsFbxSkinContext
type AsFbxAnimContext (line 19) | struct AsFbxAnimContext
type AsFbxMorphContext (line 20) | struct AsFbxMorphContext
FILE: AssetStudioFBXNative/asfbx_anim_context.h
type AsFbxAnimContext (line 7) | struct AsFbxAnimContext
FILE: AssetStudioFBXNative/asfbx_context.h
type AsFbxContext (line 7) | struct AsFbxContext
FILE: AssetStudioFBXNative/asfbx_morph_context.h
type AsFbxMorphContext (line 5) | struct AsFbxMorphContext
FILE: AssetStudioFBXNative/asfbx_skin_context.h
type AsFbxContext (line 5) | struct AsFbxContext
type AsFbxSkinContext (line 7) | struct AsFbxSkinContext
FILE: AssetStudioFBXNative/bool32_t.h
type bool32_t (line 5) | typedef uint32_t bool32_t;
FILE: AssetStudioFBXNative/utils.cpp
function Vector3 (line 31) | Vector3 QuaternionToEuler(Quaternion q) {
function Quaternion (line 38) | Quaternion EulerToQuaternion(Vector3 v) {
FILE: AssetStudioFBXNative/utils.h
type Vector3 (line 3) | struct Vector3 {
type Quaternion (line 14) | struct Quaternion {
FILE: AssetStudioFBXWrapper/Fbx.PInvoke.cs
class Fbx (line 6) | partial class Fbx
method AsUtilQuaternionToEuler (line 9) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsUtilEulerToQuaternion (line 12) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
FILE: AssetStudioFBXWrapper/Fbx.cs
class Fbx (line 7) | public static partial class Fbx
method Fbx (line 10) | static Fbx()
method QuaternionToEuler (line 15) | public static Vector3 QuaternionToEuler(Quaternion q)
method EulerToQuaternion (line 21) | public static Quaternion EulerToQuaternion(Vector3 v)
class Exporter (line 27) | public static class Exporter
method Export (line 30) | public static void Export(string path, IImported imported, bool eule...
FILE: AssetStudioFBXWrapper/FbxDll.cs
class FbxDll (line 3) | internal static class FbxDll
FILE: AssetStudioFBXWrapper/FbxExporter.cs
class FbxExporter (line 7) | internal sealed class FbxExporter : IDisposable
method FbxExporter (line 23) | internal FbxExporter(string fileName, IImported imported, bool allNode...
method Dispose (line 44) | public void Dispose()
method Dispose (line 57) | private void Dispose(bool disposing)
method Initialize (line 67) | internal void Initialize()
method ExportAll (line 81) | internal void ExportAll(bool blendShape, bool animation, bool eulerFil...
method ExportMorphs (line 115) | private void ExportMorphs()
method ExportAnimations (line 120) | private void ExportAnimations(bool eulerFilter, float filterPrecision)
method ExportRootFrame (line 125) | private void ExportRootFrame(List<ImportedFrame> meshFrames)
method ExportScene (line 130) | private void ExportScene()
method SetJointsFromImportedMeshes (line 135) | private void SetJointsFromImportedMeshes()
method SetJointsNode (line 162) | private void SetJointsNode(ImportedFrame rootFrame, HashSet<string> bo...
method PrepareMaterials (line 167) | private void PrepareMaterials()
method ExportMeshFrames (line 172) | private void ExportMeshFrames(ImportedFrame rootFrame, List<ImportedFr...
method SearchHierarchy (line 180) | private HashSet<string> SearchHierarchy()
method SearchHierarchy (line 194) | private static void SearchHierarchy(ImportedFrame rootFrame, List<Impo...
FILE: AssetStudioFBXWrapper/FbxExporterContext.PInvoke.cs
class FbxExporterContext (line 7) | partial class FbxExporterContext
method AsFbxCreateContext (line 10) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxInitializeContext (line 13) | private static bool AsFbxInitializeContext(IntPtr context, string file...
method AsFbxInitializeContext (line 29) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxDisposeContext (line 33) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxSetFramePaths (line 36) | private static void AsFbxSetFramePaths(IntPtr context, string[] frameP...
method AsFbxSetFramePaths (line 74) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxExportScene (line 77) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxGetSceneRootNode (line 80) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxExportSingleFrame (line 83) | private static IntPtr AsFbxExportSingleFrame(IntPtr context, IntPtr pa...
method AsFbxExportSingleFrame (line 94) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxSetJointsNode_CastToBone (line 97) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxSetJointsNode_BoneInPath (line 100) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxSetJointsNode_Generic (line 103) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxPrepareMaterials (line 106) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxCreateTexture (line 109) | private static IntPtr AsFbxCreateTexture(IntPtr context, string matTex...
method AsFbxCreateTexture (line 117) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxLinkTexture (line 120) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateClusterArray (line 123) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshDisposeClusterArray (line 126) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateCluster (line 129) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshAddCluster (line 132) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateMesh (line 135) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshInitControlPoints (line 138) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateElementNormal (line 141) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateDiffuseUV (line 144) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateNormalMapUV (line 147) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateElementTangent (line 150) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateElementVertexColor (line 153) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateElementMaterial (line 156) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxCreateMaterial (line 159) | private static IntPtr AsFbxCreateMaterial(IntPtr pContext, string matN...
method AsFbxCreateMaterial (line 167) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAddMaterialToFrame (line 176) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxSetFrameShadingModeToTextureShading (line 179) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshSetControlPoint (line 182) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshAddPolygon (line 185) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshElementNormalAdd (line 188) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshElementUVAdd (line 191) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshElementTangentAdd (line 194) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshElementVertexColorAdd (line 197) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshSetBoneWeight (line 200) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshCreateSkinContext (line 203) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshDisposeSkinContext (line 206) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method FbxClusterArray_HasItemAt (line 209) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshSkinAddCluster (line 213) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMeshAddDeformer (line 216) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimCreateContext (line 219) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimDisposeContext (line 222) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimPrepareStackAndLayer (line 225) | private static void AsFbxAnimPrepareStackAndLayer(IntPtr pContext, Int...
method AsFbxAnimPrepareStackAndLayer (line 233) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimLoadCurves (line 236) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimBeginKeyModify (line 239) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimEndKeyModify (line 242) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimAddScalingKey (line 245) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimAddRotationKey (line 248) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimAddTranslationKey (line 251) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimApplyEulerFilter (line 254) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimGetCurrentBlendShapeChannelCount (line 257) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimIsBlendShapeChannelMatch (line 260) | private static bool AsFbxAnimIsBlendShapeChannelMatch(IntPtr pAnimCont...
method AsFbxAnimIsBlendShapeChannelMatch (line 268) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimBeginBlendShapeAnimCurve (line 272) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimEndBlendShapeAnimCurve (line 275) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxAnimAddBlendShapeKeyframe (line 278) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMorphCreateContext (line 281) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMorphInitializeContext (line 284) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMorphDisposeContext (line 287) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMorphAddBlendShapeChannel (line 290) | private static void AsFbxMorphAddBlendShapeChannel(IntPtr pContext, In...
method AsFbxMorphAddBlendShapeChannel (line 298) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMorphAddBlendShapeChannelShape (line 301) | private static void AsFbxMorphAddBlendShapeChannelShape(IntPtr pContex...
method AsFbxMorphAddBlendShapeChannelShape (line 309) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMorphCopyBlendShapeControlPoints (line 312) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMorphSetBlendShapeVertex (line 315) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMorphCopyBlendShapeControlPointsNormal (line 318) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
method AsFbxMorphSetBlendShapeVertexNormal (line 321) | [DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
FILE: AssetStudioFBXWrapper/FbxExporterContext.cs
class FbxExporterContext (line 9) | internal sealed partial class FbxExporterContext : IDisposable
method FbxExporterContext (line 17) | public FbxExporterContext()
method Dispose (line 30) | public void Dispose()
method Dispose (line 43) | private void Dispose(bool disposing)
method EnsureNotDisposed (line 54) | private void EnsureNotDisposed()
method Initialize (line 62) | internal void Initialize(string fileName, float scaleFactor, int versi...
method SetFramePaths (line 75) | internal void SetFramePaths(HashSet<string> framePaths)
method ExportScene (line 90) | internal void ExportScene()
method ExportFrame (line 97) | internal void ExportFrame(List<ImportedMesh> meshList, List<ImportedFr...
method SetJointsNode (line 131) | internal void SetJointsNode(ImportedFrame rootFrame, HashSet<string> b...
method PrepareMaterials (line 171) | internal void PrepareMaterials(int materialCount, int textureCount)
method ExportMeshFromFrame (line 176) | internal void ExportMeshFromFrame(ImportedFrame rootFrame, ImportedFra...
method ExportTexture (line 184) | private IntPtr ExportTexture(ImportedTexture texture)
method ExportMesh (line 210) | private void ExportMesh(ImportedFrame rootFrame, List<ImportedMaterial...
method CopyMatrix4x4 (line 448) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method IndexFrom4x4 (line 461) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method ExportAnimations (line 467) | internal void ExportAnimations(ImportedFrame rootFrame, List<ImportedK...
method ExportKeyframedAnimation (line 505) | private void ExportKeyframedAnimation(ImportedFrame rootFrame, Importe...
method ExportMorphs (line 578) | internal void ExportMorphs(ImportedFrame rootFrame, List<ImportedMorph...
FILE: AssetStudioGUI/AssetStudioGUIForm.Designer.cs
class AssetStudioGUIForm (line 3) | partial class AssetStudioGUIForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: AssetStudioGUI/AssetStudioGUIForm.cs
class AssetStudioGUIForm (line 32) | partial class AssetStudioGUIForm : Form
method AddFontMemResourceEx (line 93) | [DllImport("gdi32.dll")]
method AssetStudioGUIForm (line 96) | public AssetStudioGUIForm()
method AssetStudioGUIForm_DragEnter (line 114) | private void AssetStudioGUIForm_DragEnter(object sender, DragEventArgs e)
method AssetStudioGUIForm_DragDrop (line 122) | private async void AssetStudioGUIForm_DragDrop(object sender, DragEven...
method loadFile_Click (line 141) | private async void loadFile_Click(object sender, EventArgs e)
method loadFolder_Click (line 154) | private async void loadFolder_Click(object sender, EventArgs e)
method extractFileToolStripMenuItem_Click (line 168) | private async void extractFileToolStripMenuItem_Click(object sender, E...
method extractFolderToolStripMenuItem_Click (line 184) | private async void extractFolderToolStripMenuItem_Click(object sender,...
method BuildAssetStructures (line 201) | private async void BuildAssetStructures()
method typeToolStripMenuItem_Click (line 267) | private void typeToolStripMenuItem_Click(object sender, EventArgs e)
method AssetStudioForm_KeyDown (line 285) | private void AssetStudioForm_KeyDown(object sender, KeyEventArgs e)
method exportClassStructuresMenuItem_Click (line 348) | private void exportClassStructuresMenuItem_Click(object sender, EventA...
method displayAll_CheckedChanged (line 375) | private void displayAll_CheckedChanged(object sender, EventArgs e)
method enablePreview_Check (line 381) | private void enablePreview_Check(object sender, EventArgs e)
method displayAssetInfo_Check (line 442) | private void displayAssetInfo_Check(object sender, EventArgs e)
method showExpOpt_Click (line 457) | private void showExpOpt_Click(object sender, EventArgs e)
method assetListView_RetrieveVirtualItem (line 463) | private void assetListView_RetrieveVirtualItem(object sender, Retrieve...
method tabPageSelected (line 468) | private void tabPageSelected(object sender, TabControlEventArgs e)
method treeSearch_Enter (line 481) | private void treeSearch_Enter(object sender, EventArgs e)
method treeSearch_Leave (line 490) | private void treeSearch_Leave(object sender, EventArgs e)
method treeSearch_TextChanged (line 499) | private void treeSearch_TextChanged(object sender, EventArgs e)
method treeSearch_KeyDown (line 505) | private void treeSearch_KeyDown(object sender, KeyEventArgs e)
method TreeNodeSearch (line 529) | private void TreeNodeSearch(TreeNode treeNode)
method sceneTreeView_AfterCheck (line 542) | private void sceneTreeView_AfterCheck(object sender, TreeViewEventArgs e)
method listSearch_Enter (line 550) | private void listSearch_Enter(object sender, EventArgs e)
method listSearch_Leave (line 560) | private void listSearch_Leave(object sender, EventArgs e)
method ListSearchTextChanged (line 570) | private void ListSearchTextChanged(object sender, EventArgs e)
method delayTimer_Elapsed (line 586) | private void delayTimer_Elapsed(object sender, ElapsedEventArgs e)
method assetListView_ColumnClick (line 592) | private void assetListView_ColumnClick(object sender, ColumnClickEvent...
method selectAsset (line 635) | private void selectAsset(object sender, ListViewItemSelectionChangedEv...
method classesListView_ItemSelectionChanged (line 670) | private void classesListView_ItemSelectionChanged(object sender, ListV...
method preview_Resize (line 686) | private void preview_Resize(object sender, EventArgs e)
method PreviewAsset (line 695) | private void PreviewAsset(AssetItem assetItem)
method PreviewTexture2D (line 753) | private void PreviewTexture2D(AssetItem assetItem, Texture2D m_Texture2D)
method PreviewAudioClip (line 811) | private void PreviewAudioClip(AssetItem assetItem, AudioClip m_AudioClip)
method PreviewShader (line 937) | private void PreviewShader(Shader m_Shader)
method PreviewTextAsset (line 943) | private void PreviewTextAsset(TextAsset m_TextAsset)
method PreviewMonoBehaviour (line 950) | private void PreviewMonoBehaviour(MonoBehaviour m_MonoBehaviour)
method PreviewFont (line 962) | private void PreviewFont(Font m_Font)
method PreviewMesh (line 1012) | private void PreviewMesh(Mesh m_Mesh)
method PreviewSprite (line 1161) | private void PreviewSprite(AssetItem assetItem, Sprite m_Sprite)
method PreviewTexture (line 1177) | private void PreviewTexture(DirectBitmap bitmap)
method PreviewText (line 1188) | private void PreviewText(string text)
method SetProgressBarValue (line 1194) | private void SetProgressBarValue(int value)
method StatusStripUpdate (line 1206) | private void StatusStripUpdate(string statusText)
method ResetForm (line 1218) | private void ResetForm()
method assetListView_MouseClick (line 1254) | private void assetListView_MouseClick(object sender, MouseEventArgs e)
method copyToolStripMenuItem_Click (line 1281) | private void copyToolStripMenuItem_Click(object sender, EventArgs e)
method exportSelectedAssetsToolStripMenuItem_Click (line 1286) | private void exportSelectedAssetsToolStripMenuItem_Click(object sender...
method showOriginalFileToolStripMenuItem_Click (line 1291) | private void showOriginalFileToolStripMenuItem_Click(object sender, Ev...
method exportAnimatorwithAnimationClipMenuItem_Click (line 1299) | private void exportAnimatorwithAnimationClipMenuItem_Click(object send...
method exportSelectedObjectsToolStripMenuItem_Click (line 1329) | private void exportSelectedObjectsToolStripMenuItem_Click(object sende...
method exportObjectswithAnimationClipMenuItem_Click (line 1334) | private void exportObjectswithAnimationClipMenuItem_Click(object sende...
method ExportObjects (line 1339) | private void ExportObjects(bool animation)
method exportSelectedObjectsmergeToolStripMenuItem_Click (line 1367) | private void exportSelectedObjectsmergeToolStripMenuItem_Click(object ...
method exportSelectedObjectsmergeWithAnimationClipToolStripMenuItem_Click (line 1372) | private void exportSelectedObjectsmergeWithAnimationClipToolStripMenuI...
method ExportMergeObjects (line 1377) | private void ExportMergeObjects(bool animation)
method goToSceneHierarchyToolStripMenuItem_Click (line 1413) | private void goToSceneHierarchyToolStripMenuItem_Click(object sender, ...
method exportAllAssetsMenuItem_Click (line 1423) | private void exportAllAssetsMenuItem_Click(object sender, EventArgs e)
method exportSelectedAssetsMenuItem_Click (line 1428) | private void exportSelectedAssetsMenuItem_Click(object sender, EventAr...
method exportFilteredAssetsMenuItem_Click (line 1433) | private void exportFilteredAssetsMenuItem_Click(object sender, EventAr...
method toolStripMenuItem4_Click (line 1438) | private void toolStripMenuItem4_Click(object sender, EventArgs e)
method toolStripMenuItem5_Click (line 1443) | private void toolStripMenuItem5_Click(object sender, EventArgs e)
method toolStripMenuItem6_Click (line 1448) | private void toolStripMenuItem6_Click(object sender, EventArgs e)
method toolStripMenuItem7_Click (line 1453) | private void toolStripMenuItem7_Click(object sender, EventArgs e)
method toolStripMenuItem8_Click (line 1458) | private void toolStripMenuItem8_Click(object sender, EventArgs e)
method toolStripMenuItem9_Click (line 1463) | private void toolStripMenuItem9_Click(object sender, EventArgs e)
method toolStripMenuItem11_Click (line 1468) | private void toolStripMenuItem11_Click(object sender, EventArgs e)
method toolStripMenuItem12_Click (line 1473) | private void toolStripMenuItem12_Click(object sender, EventArgs e)
method toolStripMenuItem13_Click (line 1478) | private void toolStripMenuItem13_Click(object sender, EventArgs e)
method exportAllObjectssplitToolStripMenuItem1_Click (line 1483) | private void exportAllObjectssplitToolStripMenuItem1_Click(object send...
method GetSelectedAssets (line 1502) | private List<AssetItem> GetSelectedAssets()
method FilterAssetList (line 1513) | private void FilterAssetList()
method ExportAssets (line 1545) | private void ExportAssets(ExportFilter type, ExportType exportType)
method ExportAssetsList (line 1577) | private void ExportAssetsList(ExportFilter type)
method FMODinit (line 1612) | private void FMODinit()
method FMODreset (line 1637) | private void FMODreset()
method FMODplayButton_Click (line 1653) | private void FMODplayButton_Click(object sender, EventArgs e)
method FMODpauseButton_Click (line 1695) | private void FMODpauseButton_Click(object sender, EventArgs e)
method FMODstopButton_Click (line 1728) | private void FMODstopButton_Click(object sender, EventArgs e)
method FMODloopButton_CheckedChanged (line 1753) | private void FMODloopButton_CheckedChanged(object sender, EventArgs e)
method FMODvolumeBar_ValueChanged (line 1787) | private void FMODvolumeBar_ValueChanged(object sender, EventArgs e)
method FMODprogressBar_Scroll (line 1795) | private void FMODprogressBar_Scroll(object sender, EventArgs e)
method FMODprogressBar_MouseDown (line 1804) | private void FMODprogressBar_MouseDown(object sender, MouseEventArgs e)
method FMODprogressBar_MouseUp (line 1809) | private void FMODprogressBar_MouseUp(object sender, MouseEventArgs e)
method timer_Tick (line 1832) | private void timer_Tick(object sender, EventArgs e)
method ERRCHECK (line 1869) | private bool ERRCHECK(FMOD.RESULT result)
method InitOpenTK (line 1882) | private void InitOpenTK()
method LoadShader (line 1909) | private static void LoadShader(string filename, ShaderType type, int p...
method CreateVBO (line 1919) | private static void CreateVBO(out int vboAddress, Vector3[] data, int ...
method CreateVBO (line 1931) | private static void CreateVBO(out int vboAddress, Vector4[] data, int ...
method CreateVBO (line 1943) | private static void CreateVBO(out int vboAddress, Matrix4 data, int ad...
method CreateEBO (line 1949) | private static void CreateEBO(out int address, int[] data)
method CreateVAO (line 1959) | private void CreateVAO()
method ChangeGLSize (line 1983) | private void ChangeGLSize(Size size)
method glControl1_Load (line 1999) | private void glControl1_Load(object sender, EventArgs e)
method glControl1_Paint (line 2005) | private void glControl1_Paint(object sender, PaintEventArgs e)
method tabControl2_SelectedIndexChanged (line 2039) | private void tabControl2_SelectedIndexChanged(object sender, EventArgs e)
method toolStripMenuItem15_Click (line 2047) | private void toolStripMenuItem15_Click(object sender, EventArgs e)
method glControl1_MouseWheel (line 2052) | private void glControl1_MouseWheel(object sender, MouseEventArgs e)
method glControl1_MouseDown (line 2061) | private void glControl1_MouseDown(object sender, MouseEventArgs e)
method glControl1_MouseMove (line 2075) | private void glControl1_MouseMove(object sender, MouseEventArgs e)
method glControl1_MouseUp (line 2100) | private void glControl1_MouseUp(object sender, MouseEventArgs e)
FILE: AssetStudioGUI/Components/AssetItem.cs
class AssetItem (line 6) | internal class AssetItem : ListViewItem
method AssetItem (line 19) | public AssetItem(Object asset)
method SetSubItems (line 29) | public void SetSubItems()
FILE: AssetStudioGUI/Components/GOHierarchy.cs
class GOHierarchy (line 9) | internal class GOHierarchy : TreeView
method WndProc (line 11) | protected override void WndProc(ref Message m)
FILE: AssetStudioGUI/Components/GameObjectTreeNode.cs
class GameObjectTreeNode (line 6) | internal class GameObjectTreeNode : TreeNode
method GameObjectTreeNode (line 10) | public GameObjectTreeNode(GameObject gameObject)
FILE: AssetStudioGUI/Components/OpenFolderDialog.cs
class OpenFolderDialog (line 8) | internal class OpenFolderDialog
method ShowDialog (line 15) | internal DialogResult ShowDialog(IWin32Window owner = null)
method ShowVistaDialog (line 26) | private DialogResult ShowVistaDialog(IWin32Window owner)
method ShowFolderBrowserDialog (line 77) | private DialogResult ShowFolderBrowserDialog(IWin32Window owner)
class NativeMethods (line 103) | internal static class NativeMethods
class FileOpenDialogRCW (line 123) | [ComImport, ClassInterface(ClassInterfaceType.None), TypeLibType(TypeL...
type IFileDialog (line 127) | [ComImport(), Guid("42F85136-DB7E-439C-85F1-E4075D135FC8"), InterfaceT...
method Show (line 130) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetFileTypes (line 135) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetFileTypeIndex (line 138) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method GetFileTypeIndex (line 141) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method Advise (line 144) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method Unadvise (line 147) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetOptions (line 150) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method GetOptions (line 153) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetDefaultFolder (line 156) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetFolder (line 159) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method GetFolder (line 162) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method GetCurrentSelection (line 165) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetFileName (line 168) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method GetFileName (line 171) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetTitle (line 174) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetOkButtonLabel (line 177) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetFileNameLabel (line 180) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method GetResult (line 183) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method AddPlace (line 186) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetDefaultExtension (line 189) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method Close (line 192) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetClientGuid (line 195) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method ClearClientData (line 198) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SetFilter (line 201) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
type IShellItem (line 206) | [ComImport, Guid("43826D1E-E718-42EE-BC55-A1E261C37BFE"), InterfaceTyp...
method BindToHandler (line 209) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method GetParent (line 212) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method GetDisplayName (line 215) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method GetAttributes (line 218) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method Compare (line 221) | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodC...
method SHCreateItemFromParsingName (line 228) | [DllImport("shell32.dll", CharSet = CharSet.Unicode, SetLastError = tr...
FILE: AssetStudioGUI/Components/TypeTreeItem.cs
class TypeTreeItem (line 8) | internal class TypeTreeItem : ListViewItem
method TypeTreeItem (line 12) | public TypeTreeItem(int typeID, TypeTree m_Type)
method ToString (line 19) | public override string ToString()
FILE: AssetStudioGUI/DirectBitmap.cs
class DirectBitmap (line 8) | public sealed class DirectBitmap : IDisposable
method DirectBitmap (line 10) | public DirectBitmap(byte[] buff, int width, int height)
method Dispose (line 19) | private void Dispose(bool disposing)
method Dispose (line 29) | public void Dispose()
FILE: AssetStudioGUI/ExportOptions.Designer.cs
class ExportOptions (line 3) | partial class ExportOptions
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: AssetStudioGUI/ExportOptions.cs
class ExportOptions (line 7) | public partial class ExportOptions : Form
method ExportOptions (line 9) | public ExportOptions()
method OKbutton_Click (line 41) | private void OKbutton_Click(object sender, EventArgs e)
method Cancel_Click (line 73) | private void Cancel_Click(object sender, EventArgs e)
FILE: AssetStudioGUI/Exporter.cs
class Exporter (line 10) | internal static class Exporter
method ExportTexture2D (line 12) | public static bool ExportTexture2D(AssetItem item, string exportPath)
method ExportAudioClip (line 41) | public static bool ExportAudioClip(AssetItem item, string exportPath)
method ExportShader (line 66) | public static bool ExportShader(AssetItem item, string exportPath)
method ExportTextAsset (line 76) | public static bool ExportTextAsset(AssetItem item, string exportPath)
method ExportMonoBehaviour (line 93) | public static bool ExportMonoBehaviour(AssetItem item, string exportPath)
method ExportFont (line 109) | public static bool ExportFont(AssetItem item, string exportPath)
method ExportMesh (line 127) | public static bool ExportMesh(AssetItem item, string exportPath)
method ExportVideoClip (line 209) | public static bool ExportVideoClip(AssetItem item, string exportPath)
method ExportMovieTexture (line 222) | public static bool ExportMovieTexture(AssetItem item, string exportPath)
method ExportSprite (line 231) | public static bool ExportSprite(AssetItem item, string exportPath)
method ExportRawFile (line 251) | public static bool ExportRawFile(AssetItem item, string exportPath)
method TryExportFile (line 259) | private static bool TryExportFile(string dir, AssetItem item, string e...
method ExportAnimator (line 277) | public static bool ExportAnimator(AssetItem item, string exportPath, L...
method ExportGameObject (line 292) | public static void ExportGameObject(GameObject gameObject, string expo...
method ExportGameObjectMerge (line 301) | public static void ExportGameObjectMerge(List<GameObject> gameObject, ...
method ExportFbx (line 310) | private static void ExportFbx(IImported convert, string exportPath)
method ExportDumpFile (line 328) | public static bool ExportDumpFile(AssetItem item, string exportPath)
method ExportConvertFile (line 346) | public static bool ExportConvertFile(AssetItem item, string exportPath)
method FixFileName (line 379) | public static string FixFileName(string str)
FILE: AssetStudioGUI/GUILogger.cs
class GUILogger (line 7) | class GUILogger : ILogger
method GUILogger (line 12) | public GUILogger(Action<string> action)
method Log (line 17) | public void Log(LoggerEvent loggerEvent, string message)
FILE: AssetStudioGUI/Program.cs
class Program (line 9) | static class Program
method Main (line 14) | [STAThread]
FILE: AssetStudioGUI/Properties/Resources.Designer.cs
class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: AssetStudioGUI/Properties/Settings.Designer.cs
class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
FILE: AssetStudioGUI/Studio.cs
type ExportType (line 16) | internal enum ExportType
type ExportFilter (line 23) | internal enum ExportFilter
type ExportListType (line 30) | internal enum ExportListType
class Studio (line 35) | internal static class Studio
method ExtractFolder (line 43) | public static int ExtractFolder(string path, string savePath)
method ExtractFile (line 59) | public static int ExtractFile(string[] fileNames, string savePath)
method ExtractFile (line 72) | public static int ExtractFile(string fileName, string savePath)
method ExtractBundleFile (line 85) | private static int ExtractBundleFile(FileReader reader, string savePath)
method ExtractWebDataFile (line 98) | private static int ExtractWebDataFile(FileReader reader, string savePath)
method ExtractStreamFile (line 111) | private static int ExtractStreamFile(string extractPath, StreamFile[] ...
method BuildAssetData (line 135) | public static (string, List<TreeNode>) BuildAssetData()
method BuildClassStructure (line 338) | public static Dictionary<string, SortedDictionary<int, TypeTreeItem>> ...
method ExportAssets (line 374) | public static void ExportAssets(string savePath, List<AssetItem> toExp...
method ExportAssetsList (line 466) | public static void ExportAssetsList(string savePath, List<AssetItem> t...
method ExportSplitObjects (line 511) | public static void ExportSplitObjects(string savePath, TreeNodeCollect...
method CollectNode (line 572) | private static void CollectNode(GameObjectTreeNode node, List<GameObje...
method ExportAnimatorWithAnimationClip (line 581) | public static void ExportAnimatorWithAnimationClip(AssetItem animator,...
method ExportObjectsWithAnimationClip (line 605) | public static void ExportObjectsWithAnimationClip(string exportPath, T...
method ExportObjectsMergeWithAnimationClip (line 644) | public static void ExportObjectsMergeWithAnimationClip(string exportPa...
method GetSelectedParentNode (line 669) | public static void GetSelectedParentNode(TreeNodeCollection nodes, Lis...
method MonoBehaviourToTypeTree (line 684) | public static TypeTree MonoBehaviourToTypeTree(MonoBehaviour m_MonoBeh...
method DumpAsset (line 702) | public static string DumpAsset(Object obj)
method OpenFolderInExplorer (line 713) | public static void OpenFolderInExplorer(string path)
FILE: AssetStudioUtility/AssemblyLoader.cs
class AssemblyLoader (line 7) | public class AssemblyLoader
method Load (line 12) | public void Load(string path)
method GetTypeDefinition (line 34) | public TypeDefinition GetTypeDefinition(string assemblyName, string fu...
method Clear (line 55) | public void Clear()
FILE: AssetStudioUtility/AudioClipConverter.cs
class AudioClipConverter (line 8) | public class AudioClipConverter
method AudioClipConverter (line 12) | public AudioClipConverter(AudioClip audioClip)
method ConvertToWav (line 17) | public byte[] ConvertToWav()
method SoundToWav (line 55) | public byte[] SoundToWav(Sound sound)
method GetExtensionName (line 91) | public string GetExtensionName()
FILE: AssetStudioUtility/CSspv/Disassembler.cs
type ModuleHeader (line 7) | public struct ModuleHeader
type DisassemblyOptions (line 17) | [Flags]
class Disassembler (line 26) | public class Disassembler
method Disassemble (line 28) | public string Disassemble (Module module)
method Disassemble (line 33) | public string Disassemble(Module module, DisassemblyOptions options)
method PrintInstruction (line 99) | private static void PrintInstruction(StringBuilder sb, ParsedInstructi...
method PrintOperandValue (line 142) | private static void PrintOperandValue(StringBuilder sb, object value, ...
method PrintBitEnumValue (line 189) | private static void PrintBitEnumValue(StringBuilder sb, IBitEnumOperan...
method PrintValueEnumValue (line 206) | private static void PrintValueEnumValue(StringBuilder sb, IValueEnumOp...
FILE: AssetStudioUtility/CSspv/EnumValuesExtensions.cs
class EnumValuesExtensions (line 8) | public static class EnumValuesExtensions
method GetEnumValues (line 10) | public static Array GetEnumValues(this System.Type _this)
method GetEnumName (line 26) | public static string GetEnumName(this System.Type _this, object value)
FILE: AssetStudioUtility/CSspv/Instruction.cs
type OperandQuantifier (line 5) | public enum OperandQuantifier
class Operand (line 21) | public class Operand
method Operand (line 23) | public Operand(OperandType kind, string name, OperandQuantifier quanti...
class Instruction (line 35) | public class Instruction
method Instruction (line 37) | public Instruction (string name)
method Instruction (line 42) | public Instruction (string name, IReadOnlyList<Operand> operands)
FILE: AssetStudioUtility/CSspv/Module.cs
class Module (line 9) | public class Module
type FloatUIntUnion (line 11) | [StructLayout(LayoutKind.Explicit)]
type DoubleULongUnion (line 20) | [StructLayout(LayoutKind.Explicit)]
method Module (line 29) | public Module(ModuleHeader header, IReadOnlyList<ParsedInstruction> in...
method IsDebugInstruction (line 37) | public static bool IsDebugInstruction(ParsedInstruction instruction)
method Read (line 42) | private static void Read(IReadOnlyList<ParsedInstruction> instructions...
method ReadFrom (line 121) | public static Module ReadFrom(Stream stream)
method ProcessTypeInstruction (line 179) | private static void ProcessTypeInstruction(ParsedInstruction i, IReadO...
method ConvertConstant (line 348) | private static object ConvertConstant(ScalarType type, IReadOnlyList<u...
FILE: AssetStudioUtility/CSspv/OperandType.cs
class OperandType (line 9) | public class OperandType
method ReadValue (line 11) | public virtual bool ReadValue(IReadOnlyList<uint> words, int index, ou...
class Literal (line 20) | public class Literal : OperandType
class LiteralNumber (line 24) | public class LiteralNumber : Literal
class LiteralInteger (line 29) | public class LiteralInteger : LiteralNumber
method ReadValue (line 31) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class LiteralString (line 39) | public class LiteralString : Literal
method ReadValue (line 41) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class LiteralContextDependentNumber (line 97) | public class LiteralContextDependentNumber : Literal
class LiteralExtInstInteger (line 102) | public class LiteralExtInstInteger : Literal
method ReadValue (line 104) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class LiteralSpecConstantOpInteger (line 112) | public class LiteralSpecConstantOpInteger : Literal
method ReadValue (line 114) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class Parameter (line 129) | public class Parameter
class ParameterFactory (line 134) | public class ParameterFactory
method CreateParameter (line 136) | public virtual Parameter CreateParameter(object value)
class EnumType (line 142) | public class EnumType<T> : EnumType<T, ParameterFactory>
method ReadValue (line 151) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class EnumType (line 147) | public class EnumType<T, U> : OperandType
method ReadValue (line 151) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class IdScope (line 213) | public class IdScope : OperandType
method ReadValue (line 215) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class IdMemorySemantics (line 223) | public class IdMemorySemantics : OperandType
method ReadValue (line 225) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class IdType (line 233) | public class IdType : OperandType
method ReadValue (line 235) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class IdResult (line 243) | public class IdResult : IdType
method ReadValue (line 245) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class IdResultType (line 253) | public class IdResultType : IdType
class IdRef (line 257) | public class IdRef : IdType
method ReadValue (line 259) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class PairIdRefIdRef (line 267) | public class PairIdRefIdRef : OperandType
method ReadValue (line 269) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class PairIdRefLiteralInteger (line 279) | public class PairIdRefLiteralInteger : OperandType
method ReadValue (line 281) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
class PairLiteralIntegerIdRef (line 291) | public class PairLiteralIntegerIdRef : OperandType
method ReadValue (line 293) | public override bool ReadValue(IReadOnlyList<uint> words, int index, o...
FILE: AssetStudioUtility/CSspv/ParsedInstruction.cs
class ParsedOperand (line 7) | public class ParsedOperand
method ParsedOperand (line 9) | public ParsedOperand(IReadOnlyList<uint> words, int index, int count, ...
method GetSingleEnumValue (line 22) | public T GetSingleEnumValue<T>()
method GetId (line 39) | public uint GetId()
method GetBitEnumValue (line 44) | public T GetBitEnumValue<T>()
class VaryingOperandValue (line 63) | public class VaryingOperandValue
method VaryingOperandValue (line 65) | public VaryingOperandValue(IReadOnlyList<object> values)
method ToString (line 70) | public override string ToString()
method ToString (line 77) | public StringBuilder ToString(StringBuilder sb)
type IEnumOperandValue (line 100) | public interface IEnumOperandValue
type IBitEnumOperandValue (line 105) | public interface IBitEnumOperandValue : IEnumOperandValue
type IValueEnumOperandValue (line 110) | public interface IValueEnumOperandValue : IEnumOperandValue
class ValueEnumOperandValue (line 116) | public class ValueEnumOperandValue<T> : IValueEnumOperandValue
method ValueEnumOperandValue (line 119) | public ValueEnumOperandValue(T key, IReadOnlyList<object> value)
class BitEnumOperandValue (line 130) | public class BitEnumOperandValue<T> : IBitEnumOperandValue
method BitEnumOperandValue (line 133) | public BitEnumOperandValue(Dictionary<uint, IReadOnlyList<object>> val...
class ObjectReference (line 142) | public class ObjectReference
method ObjectReference (line 144) | public ObjectReference(uint id)
method Resolve (line 149) | public void Resolve(IReadOnlyDictionary<uint, ParsedInstruction> objects)
method ToString (line 154) | public override string ToString()
method ToString (line 159) | public StringBuilder ToString(StringBuilder sb)
class ParsedInstruction (line 168) | public class ParsedInstruction
method ParsedInstruction (line 170) | public ParsedInstruction(int opCode, IReadOnlyList<uint> words)
method ParseOperands (line 177) | private void ParseOperands()
method ResolveResultType (line 223) | public void ResolveResultType(IReadOnlyDictionary<uint, ParsedInstruct...
method ResolveReferences (line 231) | public void ResolveReferences (IReadOnlyDictionary<uint, ParsedInstruc...
FILE: AssetStudioUtility/CSspv/Reader.cs
class Reader (line 7) | internal sealed class Reader
method Reader (line 9) | public Reader(BinaryReader reader)
method ReadDWord (line 27) | public uint ReadDWord()
method Reverse (line 39) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
FILE: AssetStudioUtility/CSspv/SpirV.Core.Grammar.cs
type ImageOperands (line 6) | [Flags]
class ImageOperandsParameterFactory (line 19) | public class ImageOperandsParameterFactory : ParameterFactory
class BiasParameter (line 21) | public class BiasParameter : Parameter
class LodParameter (line 32) | public class LodParameter : Parameter
class GradParameter (line 43) | public class GradParameter : Parameter
class ConstOffsetParameter (line 54) | public class ConstOffsetParameter : Parameter
class OffsetParameter (line 65) | public class OffsetParameter : Parameter
class ConstOffsetsParameter (line 76) | public class ConstOffsetsParameter : Parameter
class SampleParameter (line 87) | public class SampleParameter : Parameter
class MinLodParameter (line 98) | public class MinLodParameter : Parameter
method CreateParameter (line 109) | public override Parameter CreateParameter(object value)
type FPFastMathMode (line 134) | [Flags]
class FPFastMathModeParameterFactory (line 144) | public class FPFastMathModeParameterFactory : ParameterFactory
type SelectionControl (line 147) | [Flags]
class SelectionControlParameterFactory (line 154) | public class SelectionControlParameterFactory : ParameterFactory
type LoopControl (line 157) | [Flags]
class LoopControlParameterFactory (line 166) | public class LoopControlParameterFactory : ParameterFactory
class DependencyLengthParameter (line 168) | public class DependencyLengthParameter : Parameter
method CreateParameter (line 179) | public override Parameter CreateParameter(object value)
type FunctionControl (line 190) | [Flags]
class FunctionControlParameterFactory (line 199) | public class FunctionControlParameterFactory : ParameterFactory
type MemorySemantics (line 202) | [Flags]
class MemorySemanticsParameterFactory (line 218) | public class MemorySemanticsParameterFactory : ParameterFactory
type MemoryAccess (line 221) | [Flags]
class MemoryAccessParameterFactory (line 229) | public class MemoryAccessParameterFactory : ParameterFactory
class AlignedParameter (line 231) | public class AlignedParameter : Parameter
method CreateParameter (line 242) | public override Parameter CreateParameter(object value)
type KernelProfilingInfo (line 253) | [Flags]
class KernelProfilingInfoParameterFactory (line 259) | public class KernelProfilingInfoParameterFactory : ParameterFactory
type SourceLanguage (line 262) | public enum SourceLanguage : uint
class SourceLanguageParameterFactory (line 271) | public class SourceLanguageParameterFactory : ParameterFactory
type ExecutionModel (line 274) | public enum ExecutionModel : uint
class ExecutionModelParameterFactory (line 284) | public class ExecutionModelParameterFactory : ParameterFactory
type AddressingModel (line 287) | public enum AddressingModel : uint
class AddressingModelParameterFactory (line 293) | public class AddressingModelParameterFactory : ParameterFactory
type MemoryModel (line 296) | public enum MemoryModel : uint
class MemoryModelParameterFactory (line 302) | public class MemoryModelParameterFactory : ParameterFactory
type ExecutionMode (line 305) | public enum ExecutionMode : uint
class ExecutionModeParameterFactory (line 348) | public class ExecutionModeParameterFactory : ParameterFactory
class InvocationsParameter (line 350) | public class InvocationsParameter : Parameter
class LocalSizeParameter (line 361) | public class LocalSizeParameter : Parameter
class LocalSizeHintParameter (line 372) | public class LocalSizeHintParameter : Parameter
class OutputVerticesParameter (line 383) | public class OutputVerticesParameter : Parameter
class VecTypeHintParameter (line 394) | public class VecTypeHintParameter : Parameter
class SubgroupSizeParameter (line 405) | public class SubgroupSizeParameter : Parameter
class SubgroupsPerWorkgroupParameter (line 416) | public class SubgroupsPerWorkgroupParameter : Parameter
class SubgroupsPerWorkgroupIdParameter (line 427) | public class SubgroupsPerWorkgroupIdParameter : Parameter
class LocalSizeIdParameter (line 438) | public class LocalSizeIdParameter : Parameter
class LocalSizeHintIdParameter (line 449) | public class LocalSizeHintIdParameter : Parameter
method CreateParameter (line 460) | public override Parameter CreateParameter(object value)
type StorageClass (line 489) | public enum StorageClass : uint
class StorageClassParameterFactory (line 505) | public class StorageClassParameterFactory : ParameterFactory
type Dim (line 508) | public enum Dim : uint
class DimParameterFactory (line 518) | public class DimParameterFactory : ParameterFactory
type SamplerAddressingMode (line 521) | public enum SamplerAddressingMode : uint
class SamplerAddressingModeParameterFactory (line 529) | public class SamplerAddressingModeParameterFactory : ParameterFactory
type SamplerFilterMode (line 532) | public enum SamplerFilterMode : uint
class SamplerFilterModeParameterFactory (line 537) | public class SamplerFilterModeParameterFactory : ParameterFactory
type ImageFormat (line 540) | public enum ImageFormat : uint
class ImageFormatParameterFactory (line 583) | public class ImageFormatParameterFactory : ParameterFactory
type ImageChannelOrder (line 586) | public enum ImageChannelOrder : uint
class ImageChannelOrderParameterFactory (line 609) | public class ImageChannelOrderParameterFactory : ParameterFactory
type ImageChannelDataType (line 612) | public enum ImageChannelDataType : uint
class ImageChannelDataTypeParameterFactory (line 632) | public class ImageChannelDataTypeParameterFactory : ParameterFactory
type FPRoundingMode (line 635) | public enum FPRoundingMode : uint
class FPRoundingModeParameterFactory (line 642) | public class FPRoundingModeParameterFactory : ParameterFactory
type LinkageType (line 645) | public enum LinkageType : uint
class LinkageTypeParameterFactory (line 650) | public class LinkageTypeParameterFactory : ParameterFactory
type AccessQualifier (line 653) | public enum AccessQualifier : uint
class AccessQualifierParameterFactory (line 659) | public class AccessQualifierParameterFactory : ParameterFactory
type FunctionParameterAttribute (line 662) | public enum FunctionParameterAttribute : uint
class FunctionParameterAttributeParameterFactory (line 673) | public class FunctionParameterAttributeParameterFactory : ParameterFactory
type Decoration (line 676) | public enum Decoration : uint
class DecorationParameterFactory (line 730) | public class DecorationParameterFactory : ParameterFactory
class SpecIdParameter (line 732) | public class SpecIdParameter : Parameter
class ArrayStrideParameter (line 743) | public class ArrayStrideParameter : Parameter
class MatrixStrideParameter (line 754) | public class MatrixStrideParameter : Parameter
class BuiltInParameter (line 765) | public class BuiltInParameter : Parameter
class StreamParameter (line 776) | public class StreamParameter : Parameter
class LocationParameter (line 787) | public class LocationParameter : Parameter
class ComponentParameter (line 798) | public class ComponentParameter : Parameter
class IndexParameter (line 809) | public class IndexParameter : Parameter
class BindingParameter (line 820) | public class BindingParameter : Parameter
class DescriptorSetParameter (line 831) | public class DescriptorSetParameter : Parameter
class OffsetParameter (line 842) | public class OffsetParameter : Parameter
class XfbBufferParameter (line 853) | public class XfbBufferParameter : Parameter
class XfbStrideParameter (line 864) | public class XfbStrideParameter : Parameter
class FuncParamAttrParameter (line 875) | public class FuncParamAttrParameter : Parameter
class FPRoundingModeParameter (line 886) | public class FPRoundingModeParameter : Parameter
class FPFastMathModeParameter (line 897) | public class FPFastMathModeParameter : Parameter
class LinkageAttributesParameter (line 908) | public class LinkageAttributesParameter : Parameter
class InputAttachmentIndexParameter (line 919) | public class InputAttachmentIndexParameter : Parameter
class AlignmentParameter (line 930) | public class AlignmentParameter : Parameter
class MaxByteOffsetParameter (line 941) | public class MaxByteOffsetParameter : Parameter
class AlignmentIdParameter (line 952) | public class AlignmentIdParameter : Parameter
class MaxByteOffsetIdParameter (line 963) | public class MaxByteOffsetIdParameter : Parameter
class SecondaryViewportRelativeNVParameter (line 974) | public class SecondaryViewportRelativeNVParameter : Parameter
method CreateParameter (line 985) | public override Parameter CreateParameter(object value)
type BuiltIn (line 1040) | public enum BuiltIn : uint
class BuiltInParameterFactory (line 1107) | public class BuiltInParameterFactory : ParameterFactory
type Scope (line 1110) | public enum Scope : uint
class ScopeParameterFactory (line 1118) | public class ScopeParameterFactory : ParameterFactory
type GroupOperation (line 1121) | public enum GroupOperation : uint
class GroupOperationParameterFactory (line 1127) | public class GroupOperationParameterFactory : ParameterFactory
type KernelEnqueueFlags (line 1130) | public enum KernelEnqueueFlags : uint
class KernelEnqueueFlagsParameterFactory (line 1136) | public class KernelEnqueueFlagsParameterFactory : ParameterFactory
type Capability (line 1139) | public enum Capability : uint
class CapabilityParameterFactory (line 1230) | public class CapabilityParameterFactory : ParameterFactory
class OpNop (line 1233) | public class OpNop : Instruction
method OpNop (line 1235) | public OpNop() : base("OpNop")
class OpUndef (line 1239) | public class OpUndef : Instruction
method OpUndef (line 1241) | public OpUndef() : base("OpUndef", new List<Operand>()
class OpSourceContinued (line 1246) | public class OpSourceContinued : Instruction
method OpSourceContinued (line 1248) | public OpSourceContinued() : base("OpSourceContinued", new List<Operan...
class OpSource (line 1253) | public class OpSource : Instruction
method OpSource (line 1255) | public OpSource() : base("OpSource", new List<Operand>()
class OpSourceExtension (line 1260) | public class OpSourceExtension : Instruction
method OpSourceExtension (line 1262) | public OpSourceExtension() : base("OpSourceExtension", new List<Operan...
class OpName (line 1267) | public class OpName : Instruction
method OpName (line 1269) | public OpName() : base("OpName", new List<Operand>()
class OpMemberName (line 1274) | public class OpMemberName : Instruction
method OpMemberName (line 1276) | public OpMemberName() : base("OpMemberName", new List<Operand>()
class OpString (line 1281) | public class OpString : Instruction
method OpString (line 1283) | public OpString() : base("OpString", new List<Operand>()
class OpLine (line 1288) | public class OpLine : Instruction
method OpLine (line 1290) | public OpLine() : base("OpLine", new List<Operand>()
class OpExtension (line 1295) | public class OpExtension : Instruction
method OpExtension (line 1297) | public OpExtension() : base("OpExtension", new List<Operand>()
class OpExtInstImport (line 1302) | public class OpExtInstImport : Instruction
method OpExtInstImport (line 1304) | public OpExtInstImport() : base("OpExtInstImport", new List<Operand>()
class OpExtInst (line 1309) | public class OpExtInst : Instruction
method OpExtInst (line 1311) | public OpExtInst() : base("OpExtInst", new List<Operand>()
class OpMemoryModel (line 1316) | public class OpMemoryModel : Instruction
method OpMemoryModel (line 1318) | public OpMemoryModel() : base("OpMemoryModel", new List<Operand>()
class OpEntryPoint (line 1323) | public class OpEntryPoint : Instruction
method OpEntryPoint (line 1325) | public OpEntryPoint() : base("OpEntryPoint", new List<Operand>()
class OpExecutionMode (line 1330) | public class OpExecutionMode : Instruction
method OpExecutionMode (line 1332) | public OpExecutionMode() : base("OpExecutionMode", new List<Operand>()
class OpCapability (line 1337) | public class OpCapability : Instruction
method OpCapability (line 1339) | public OpCapability() : base("OpCapability", new List<Operand>()
class OpTypeVoid (line 1344) | public class OpTypeVoid : Instruction
method OpTypeVoid (line 1346) | public OpTypeVoid() : base("OpTypeVoid", new List<Operand>()
class OpTypeBool (line 1351) | public class OpTypeBool : Instruction
method OpTypeBool (line 1353) | public OpTypeBool() : base("OpTypeBool", new List<Operand>()
class OpTypeInt (line 1358) | public class OpTypeInt : Instruction
method OpTypeInt (line 1360) | public OpTypeInt() : base("OpTypeInt", new List<Operand>()
class OpTypeFloat (line 1365) | public class OpTypeFloat : Instruction
method OpTypeFloat (line 1367) | public OpTypeFloat() : base("OpTypeFloat", new List<Operand>()
class OpTypeVector (line 1372) | public class OpTypeVector : Instruction
method OpTypeVector (line 1374) | public OpTypeVector() : base("OpTypeVector", new List<Operand>()
class OpTypeMatrix (line 1379) | public class OpTypeMatrix : Instruction
method OpTypeMatrix (line 1381) | public OpTypeMatrix() : base("OpTypeMatrix", new List<Operand>()
class OpTypeImage (line 1386) | public class OpTypeImage : Instruction
method OpTypeImage (line 1388) | public OpTypeImage() : base("OpTypeImage", new List<Operand>()
class OpTypeSampler (line 1393) | public class OpTypeSampler : Instruction
method OpTypeSampler (line 1395) | public OpTypeSampler() : base("OpTypeSampler", new List<Operand>()
class OpTypeSampledImage (line 1400) | public class OpTypeSampledImage : Instruction
method OpTypeSampledImage (line 1402) | public OpTypeSampledImage() : base("OpTypeSampledImage", new List<Oper...
class OpTypeArray (line 1407) | public class OpTypeArray : Instruction
method OpTypeArray (line 1409) | public OpTypeArray() : base("OpTypeArray", new List<Operand>()
class OpTypeRuntimeArray (line 1414) | public class OpTypeRuntimeArray : Instruction
method OpTypeRuntimeArray (line 1416) | public OpTypeRuntimeArray() : base("OpTypeRuntimeArray", new List<Oper...
class OpTypeStruct (line 1421) | public class OpTypeStruct : Instruction
method OpTypeStruct (line 1423) | public OpTypeStruct() : base("OpTypeStruct", new List<Operand>()
class OpTypeOpaque (line 1428) | public class OpTypeOpaque : Instruction
method OpTypeOpaque (line 1430) | public OpTypeOpaque() : base("OpTypeOpaque", new List<Operand>()
class OpTypePointer (line 1435) | public class OpTypePointer : Instruction
method OpTypePointer (line 1437) | public OpTypePointer() : base("OpTypePointer", new List<Operand>()
class OpTypeFunction (line 1442) | public class OpTypeFunction : Instruction
method OpTypeFunction (line 1444) | public OpTypeFunction() : base("OpTypeFunction", new List<Operand>()
class OpTypeEvent (line 1449) | public class OpTypeEvent : Instruction
method OpTypeEvent (line 1451) | public OpTypeEvent() : base("OpTypeEvent", new List<Operand>()
class OpTypeDeviceEvent (line 1456) | public class OpTypeDeviceEvent : Instruction
method OpTypeDeviceEvent (line 1458) | public OpTypeDeviceEvent() : base("OpTypeDeviceEvent", new List<Operan...
class OpTypeReserveId (line 1463) | public class OpTypeReserveId : Instruction
method OpTypeReserveId (line 1465) | public OpTypeReserveId() : base("OpTypeReserveId", new List<Operand>()
class OpTypeQueue (line 1470) | public class OpTypeQueue : Instruction
method OpTypeQueue (line 1472) | public OpTypeQueue() : base("OpTypeQueue", new List<Operand>()
class OpTypePipe (line 1477) | public class OpTypePipe : Instruction
method OpTypePipe (line 1479) | public OpTypePipe() : base("OpTypePipe", new List<Operand>()
class OpTypeForwardPointer (line 1484) | public class OpTypeForwardPointer : Instruction
method OpTypeForwardPointer (line 1486) | public OpTypeForwardPointer() : base("OpTypeForwardPointer", new List<...
class OpConstantTrue (line 1491) | public class OpConstantTrue : Instruction
method OpConstantTrue (line 1493) | public OpConstantTrue() : base("OpConstantTrue", new List<Operand>()
class OpConstantFalse (line 1498) | public class OpConstantFalse : Instruction
method OpConstantFalse (line 1500) | public OpConstantFalse() : base("OpConstantFalse", new List<Operand>()
class OpConstant (line 1505) | public class OpConstant : Instruction
method OpConstant (line 1507) | public OpConstant() : base("OpConstant", new List<Operand>()
class OpConstantComposite (line 1512) | public class OpConstantComposite : Instruction
method OpConstantComposite (line 1514) | public OpConstantComposite() : base("OpConstantComposite", new List<Op...
class OpConstantSampler (line 1519) | public class OpConstantSampler : Instruction
method OpConstantSampler (line 1521) | public OpConstantSampler() : base("OpConstantSampler", new List<Operan...
class OpConstantNull (line 1526) | public class OpConstantNull : Instruction
method OpConstantNull (line 1528) | public OpConstantNull() : base("OpConstantNull", new List<Operand>()
class OpSpecConstantTrue (line 1533) | public class OpSpecConstantTrue : Instruction
method OpSpecConstantTrue (line 1535) | public OpSpecConstantTrue() : base("OpSpecConstantTrue", new List<Oper...
class OpSpecConstantFalse (line 1540) | public class OpSpecConstantFalse : Instruction
method OpSpecConstantFalse (line 1542) | public OpSpecConstantFalse() : base("OpSpecConstantFalse", new List<Op...
class OpSpecConstant (line 1547) | public class OpSpecConstant : Instruction
method OpSpecConstant (line 1549) | public OpSpecConstant() : base("OpSpecConstant", new List<Operand>()
class OpSpecConstantComposite (line 1554) | public class OpSpecConstantComposite : Instruction
method OpSpecConstantComposite (line 1556) | public OpSpecConstantComposite() : base("OpSpecConstantComposite", new...
class OpSpecConstantOp (line 1561) | public class OpSpecConstantOp : Instruction
method OpSpecConstantOp (line 1563) | public OpSpecConstantOp() : base("OpSpecConstantOp", new List<Operand>()
class OpFunction (line 1568) | public class OpFunction : Instruction
method OpFunction (line 1570) | public OpFunction() : base("OpFunction", new List<Operand>()
class OpFunctionParameter (line 1575) | public class OpFunctionParameter : Instruction
method OpFunctionParameter (line 1577) | public OpFunctionParameter() : base("OpFunctionParameter", new List<Op...
class OpFunctionEnd (line 1582) | public class OpFunctionEnd : Instruction
method OpFunctionEnd (line 1584) | public OpFunctionEnd() : base("OpFunctionEnd")
class OpFunctionCall (line 1588) | public class OpFunctionCall : Instruction
method OpFunctionCall (line 1590) | public OpFunctionCall() : base("OpFunctionCall", new List<Operand>()
class OpVariable (line 1595) | public class OpVariable : Instruction
method OpVariable (line 1597) | public OpVariable() : base("OpVariable", new List<Operand>()
class OpImageTexelPointer (line 1602) | public class OpImageTexelPointer : Instruction
method OpImageTexelPointer (line 1604) | public OpImageTexelPointer() : base("OpImageTexelPointer", new List<Op...
class OpLoad (line 1609) | public class OpLoad : Instruction
method OpLoad (line 1611) | public OpLoad() : base("OpLoad", new List<Operand>()
class OpStore (line 1616) | public class OpStore : Instruction
method OpStore (line 1618) | public OpStore() : base("OpStore", new List<Operand>()
class OpCopyMemory (line 1623) | public class OpCopyMemory : Instruction
method OpCopyMemory (line 1625) | public OpCopyMemory() : base("OpCopyMemory", new List<Operand>()
class OpCopyMemorySized (line 1630) | public class OpCopyMemorySized : Instruction
method OpCopyMemorySized (line 1632) | public OpCopyMemorySized() : base("OpCopyMemorySized", new List<Operan...
class OpAccessChain (line 1637) | public class OpAccessChain : Instruction
method OpAccessChain (line 1639) | public OpAccessChain() : base("OpAccessChain", new List<Operand>()
class OpInBoundsAccessChain (line 1644) | public class OpInBoundsAccessChain : Instruction
method OpInBoundsAccessChain (line 1646) | public OpInBoundsAccessChain() : base("OpInBoundsAccessChain", new Lis...
class OpPtrAccessChain (line 1651) | public class OpPtrAccessChain : Instruction
method OpPtrAccessChain (line 1653) | public OpPtrAccessChain() : base("OpPtrAccessChain", new List<Operand>()
class OpArrayLength (line 1658) | public class OpArrayLength : Instruction
method OpArrayLength (line 1660) | public OpArrayLength() : base("OpArrayLength", new List<Operand>()
class OpGenericPtrMemSemantics (line 1665) | public class OpGenericPtrMemSemantics : Instruction
method OpGenericPtrMemSemantics (line 1667) | public OpGenericPtrMemSemantics() : base("OpGenericPtrMemSemantics", n...
class OpInBoundsPtrAccessChain (line 1672) | public class OpInBoundsPtrAccessChain : Instruction
method OpInBoundsPtrAccessChain (line 1674) | public OpInBoundsPtrAccessChain() : base("OpInBoundsPtrAccessChain", n...
class OpDecorate (line 1679) | public class OpDecorate : Instruction
method OpDecorate (line 1681) | public OpDecorate() : base("OpDecorate", new List<Operand>()
class OpMemberDecorate (line 1686) | public class OpMemberDecorate : Instruction
method OpMemberDecorate (line 1688) | public OpMemberDecorate() : base("OpMemberDecorate", new List<Operand>()
class OpDecorationGroup (line 1693) | public class OpDecorationGroup : Instruction
method OpDecorationGroup (line 1695) | public OpDecorationGroup() : base("OpDecorationGroup", new List<Operan...
class OpGroupDecorate (line 1700) | public class OpGroupDecorate : Instruction
method OpGroupDecorate (line 1702) | public OpGroupDecorate() : base("OpGroupDecorate", new List<Operand>()
class OpGroupMemberDecorate (line 1707) | public class OpGroupMemberDecorate : Instruction
method OpGroupMemberDecorate (line 1709) | public OpGroupMemberDecorate() : base("OpGroupMemberDecorate", new Lis...
class OpVectorExtractDynamic (line 1714) | public class OpVectorExtractDynamic : Instruction
method OpVectorExtractDynamic (line 1716) | public OpVectorExtractDynamic() : base("OpVectorExtractDynamic", new L...
class OpVectorInsertDynamic (line 1721) | public class OpVectorInsertDynamic : Instruction
method OpVectorInsertDynamic (line 1723) | public OpVectorInsertDynamic() : base("OpVectorInsertDynamic", new Lis...
class OpVectorShuffle (line 1728) | public class OpVectorShuffle : Instruction
method OpVectorShuffle (line 1730) | public OpVectorShuffle() : base("OpVectorShuffle", new List<Operand>()
class OpCompositeConstruct (line 1735) | public class OpCompositeConstruct : Instruction
method OpCompositeConstruct (line 1737) | public OpCompositeConstruct() : base("OpCompositeConstruct", new List<...
class OpCompositeExtract (line 1742) | public class OpCompositeExtract : Instruction
method OpCompositeExtract (line 1744) | public OpCompositeExtract() : base("OpCompositeExtract", new List<Oper...
class OpCompositeInsert (line 1749) | public class OpCompositeInsert : Instruction
method OpCompositeInsert (line 1751) | public OpCompositeInsert() : base("OpCompositeInsert", new List<Operan...
class OpCopyObject (line 1756) | public class OpCopyObject : Instruction
method OpCopyObject (line 1758) | public OpCopyObject() : base("OpCopyObject", new List<Operand>()
class OpTranspose (line 1763) | public class OpTranspose : Instruction
method OpTranspose (line 1765) | public OpTranspose() : base("OpTranspose", new List<Operand>()
class OpSampledImage (line 1770) | public class OpSampledImage : Instruction
method OpSampledImage (line 1772) | public OpSampledImage() : base("OpSampledImage", new List<Operand>()
class OpImageSampleImplicitLod (line 1777) | public class OpImageSampleImplicitLod : Instruction
method OpImageSampleImplicitLod (line 1779) | public OpImageSampleImplicitLod() : base("OpImageSampleImplicitLod", n...
class OpImageSampleExplicitLod (line 1784) | public class OpImageSampleExplicitLod : Instruction
method OpImageSampleExplicitLod (line 1786) | public OpImageSampleExplicitLod() : base("OpImageSampleExplicitLod", n...
class OpImageSampleDrefImplicitLod (line 1791) | public class OpImageSampleDrefImplicitLod : Instruction
method OpImageSampleDrefImplicitLod (line 1793) | public OpImageSampleDrefImplicitLod() : base("OpImageSampleDrefImplici...
class OpImageSampleDrefExplicitLod (line 1798) | public class OpImageSampleDrefExplicitLod : Instruction
method OpImageSampleDrefExplicitLod (line 1800) | public OpImageSampleDrefExplicitLod() : base("OpImageSampleDrefExplici...
class OpImageSampleProjImplicitLod (line 1805) | public class OpImageSampleProjImplicitLod : Instruction
method OpImageSampleProjImplicitLod (line 1807) | public OpImageSampleProjImplicitLod() : base("OpImageSampleProjImplici...
class OpImageSampleProjExplicitLod (line 1812) | public class OpImageSampleProjExplicitLod : Instruction
method OpImageSampleProjExplicitLod (line 1814) | public OpImageSampleProjExplicitLod() : base("OpImageSampleProjExplici...
class OpImageSampleProjDrefImplicitLod (line 1819) | public class OpImageSampleProjDrefImplicitLod : Instruction
method OpImageSampleProjDrefImplicitLod (line 1821) | public OpImageSampleProjDrefImplicitLod() : base("OpImageSampleProjDre...
class OpImageSampleProjDrefExplicitLod (line 1826) | public class OpImageSampleProjDrefExplicitLod : Instruction
method OpImageSampleProjDrefExplicitLod (line 1828) | public OpImageSampleProjDrefExplicitLod() : base("OpImageSampleProjDre...
class OpImageFetch (line 1833) | public class OpImageFetch : Instruction
method OpImageFetch (line 1835) | public OpImageFetch() : base("OpImageFetch", new List<Operand>()
class OpImageGather (line 1840) | public class OpImageGather : Instruction
method OpImageGather (line 1842) | public OpImageGather() : base("OpImageGather", new List<Operand>()
class OpImageDrefGather (line 1847) | public class OpImageDrefGather : Instruction
method OpImageDrefGather (line 1849) | public OpImageDrefGather() : base("OpImageDrefGather", new List<Operan...
class OpImageRead (line 1854) | public class OpImageRead : Instruction
method OpImageRead (line 1856) | public OpImageRead() : base("OpImageRead", new List<Operand>()
class OpImageWrite (line 1861) | public class OpImageWrite : Instruction
method OpImageWrite (line 1863) | public OpImageWrite() : base("OpImageWrite", new List<Operand>()
class OpImage (line 1868) | public class OpImage : Instruction
method OpImage (line 1870) | public OpImage() : base("OpImage", new List<Operand>()
class OpImageQueryFormat (line 1875) | public class OpImageQueryFormat : Instruction
method OpImageQueryFormat (line 1877) | public OpImageQueryFormat() : base("OpImageQueryFormat", new List<Oper...
class OpImageQueryOrder (line 1882) | public class OpImageQueryOrder : Instruction
method OpImageQueryOrder (line 1884) | public OpImageQueryOrder() : base("OpImageQueryOrder", new List<Operan...
class OpImageQuerySizeLod (line 1889) | public class OpImageQuerySizeLod : Instruction
method OpImageQuerySizeLod (line 1891) | public OpImageQuerySizeLod() : base("OpImageQuerySizeLod", new List<Op...
class OpImageQuerySize (line 1896) | public class OpImageQuerySize : Instruction
method OpImageQuerySize (line 1898) | public OpImageQuerySize() : base("OpImageQuerySize", new List<Operand>()
class OpImageQueryLod (line 1903) | public class OpImageQueryLod : Instruction
method OpImageQueryLod (line 1905) | public OpImageQueryLod() : base("OpImageQueryLod", new List<Operand>()
class OpImageQueryLevels (line 1910) | public class OpImageQueryLevels : Instruction
method OpImageQueryLevels (line 1912) | public OpImageQueryLevels() : base("OpImageQueryLevels", new List<Oper...
class OpImageQuerySamples (line 1917) | public class OpImageQuerySamples : Instruction
method OpImageQuerySamples (line 1919) | public OpImageQuerySamples() : base("OpImageQuerySamples", new List<Op...
class OpConvertFToU (line 1924) | public class OpConvertFToU : Instruction
method OpConvertFToU (line 1926) | public OpConvertFToU() : base("OpConvertFToU", new List<Operand>()
class OpConvertFToS (line 1931) | public class OpConvertFToS : Instruction
method OpConvertFToS (line 1933) | public OpConvertFToS() : base("OpConvertFToS", new List<Operand>()
class OpConvertSToF (line 1938) | public class OpConvertSToF : Instruction
method OpConvertSToF (line 1940) | public OpConvertSToF() : base("OpConvertSToF", new List<Operand>()
class OpConvertUToF (line 1945) | public class OpConvertUToF : Instruction
method OpConvertUToF (line 1947) | public OpConvertUToF() : base("OpConvertUToF", new List<Operand>()
class OpUConvert (line 1952) | public class OpUConvert : Instruction
method OpUConvert (line 1954) | public OpUConvert() : base("OpUConvert", new List<Operand>()
class OpSConvert (line 1959) | public class OpSConvert : Instruction
method OpSConvert (line 1961) | public OpSConvert() : base("OpSConvert", new List<Operand>()
class OpFConvert (line 1966) | public class OpFConvert : Instruction
method OpFConvert (line 1968) | public OpFConvert() : base("OpFConvert", new List<Operand>()
class OpQuantizeToF16 (line 1973) | public class OpQuantizeToF16 : Instruction
method OpQuantizeToF16 (line 1975) | public OpQuantizeToF16() : base("OpQuantizeToF16", new List<Operand>()
class OpConvertPtrToU (line 1980) | public class OpConvertPtrToU : Instruction
method OpConvertPtrToU (line 1982) | public OpConvertPtrToU() : base("OpConvertPtrToU", new List<Operand>()
class OpSatConvertSToU (line 1987) | public class OpSatConvertSToU : Instruction
method OpSatConvertSToU (line 1989) | public OpSatConvertSToU() : base("OpSatConvertSToU", new List<Operand>()
class OpSatConvertUToS (line 1994) | public class OpSatConvertUToS : Instruction
method OpSatConvertUToS (line 1996) | public OpSatConvertUToS() : base("OpSatConvertUToS", new List<Operand>()
class OpConvertUToPtr (line 2001) | public class OpConvertUToPtr : Instruction
method OpConvertUToPtr (line 2003) | public OpConvertUToPtr() : base("OpConvertUToPtr", new List<Operand>()
class OpPtrCastToGeneric (line 2008) | public class OpPtrCastToGeneric : Instruction
method OpPtrCastToGeneric (line 2010) | public OpPtrCastToGeneric() : base("OpPtrCastToGeneric", new List<Oper...
class OpGenericCastToPtr (line 2015) | public class OpGenericCastToPtr : Instruction
method OpGenericCastToPtr (line 2017) | public OpGenericCastToPtr() : base("OpGenericCastToPtr", new List<Oper...
class OpGenericCastToPtrExplicit (line 2022) | public class OpGenericCastToPtrExplicit : Instruction
method OpGenericCastToPtrExplicit (line 2024) | public OpGenericCastToPtrExplicit() : base("OpGenericCastToPtrExplicit...
class OpBitcast (line 2029) | public class OpBitcast : Instruction
method OpBitcast (line 2031) | public OpBitcast() : base("OpBitcast", new List<Operand>()
class OpSNegate (line 2036) | public class OpSNegate : Instruction
method OpSNegate (line 2038) | public OpSNegate() : base("OpSNegate", new List<Operand>()
class OpFNegate (line 2043) | public class OpFNegate : Instruction
method OpFNegate (line 2045) | public OpFNegate() : base("OpFNegate", new List<Operand>()
class OpIAdd (line 2050) | public class OpIAdd : Instruction
method OpIAdd (line 2052) | public OpIAdd() : base("OpIAdd", new List<Operand>()
class OpFAdd (line 2057) | public class OpFAdd : Instruction
method OpFAdd (line 2059) | public OpFAdd() : base("OpFAdd", new List<Operand>()
class OpISub (line 2064) | public class OpISub : Instruction
method OpISub (line 2066) | public OpISub() : base("OpISub", new List<Operand>()
class OpFSub (line 2071) | public class OpFSub : Instruction
method OpFSub (line 2073) | public OpFSub() : base("OpFSub", new List<Operand>()
class OpIMul (line 2078) | public class OpIMul : Instruction
method OpIMul (line 2080) | public OpIMul() : base("OpIMul", new List<Operand>()
class OpFMul (line 2085) | public class OpFMul : Instruction
method OpFMul (line 2087) | public OpFMul() : base("OpFMul", new List<Operand>()
class OpUDiv (line 2092) | public class OpUDiv : Instruction
method OpUDiv (line 2094) | public OpUDiv() : base("OpUDiv", new List<Operand>()
class OpSDiv (line 2099) | public class OpSDiv : Instruction
method OpSDiv (line 2101) | public OpSDiv() : base("OpSDiv", new List<Operand>()
class OpFDiv (line 2106) | public class OpFDiv : Instruction
method OpFDiv (line 2108) | public OpFDiv() : base("OpFDiv", new List<Operand>()
class OpUMod (line 2113) | public class OpUMod : Instruction
method OpUMod (line 2115) | public OpUMod() : base("OpUMod", new List<Operand>()
class OpSRem (line 2120) | public class OpSRem : Instruction
method OpSRem (line 2122) | public OpSRem() : base("OpSRem", new List<Operand>()
class OpSMod (line 2127) | public class OpSMod : Instruction
method OpSMod (line 2129) | public OpSMod() : base("OpSMod", new List<Operand>()
class OpFRem (line 2134) | public class OpFRem : Instruction
method OpFRem (line 2136) | public OpFRem() : base("OpFRem", new List<Operand>()
class OpFMod (line 2141) | public class OpFMod : Instruction
method OpFMod (line 2143) | public OpFMod() : base("OpFMod", new List<Operand>()
class OpVectorTimesScalar (line 2148) | public class OpVectorTimesScalar : Instruction
method OpVectorTimesScalar (line 2150) | public OpVectorTimesScalar() : base("OpVectorTimesScalar", new List<Op...
class OpMatrixTimesScalar (line 2155) | public class OpMatrixTimesScalar : Instruction
method OpMatrixTimesScalar (line 2157) | public OpMatrixTimesScalar() : base("OpMatrixTimesScalar", new List<Op...
class OpVectorTimesMatrix (line 2162) | public class OpVectorTimesMatrix : Instruction
method OpVectorTimesMatrix (line 2164) | public OpVectorTimesMatrix() : base("OpVectorTimesMatrix", new List<Op...
class OpMatrixTimesVector (line 2169) | public class OpMatrixTimesVector : Instruction
method OpMatrixTimesVector (line 2171) | public OpMatrixTimesVector() : base("OpMatrixTimesVector", new List<Op...
class OpMatrixTimesMatrix (line 2176) | public class OpMatrixTimesMatrix : Instruction
method OpMatrixTimesMatrix (line 2178) | public OpMatrixTimesMatrix() : base("OpMatrixTimesMatrix", new List<Op...
class OpOuterProduct (line 2183) | public class OpOuterProduct : Instruction
method OpOuterProduct (line 2185) | public OpOuterProduct() : base("OpOuterProduct", new List<Operand>()
class OpDot (line 2190) | public class OpDot : Instruction
method OpDot (line 2192) | public OpDot() : base("OpDot", new List<Operand>()
class OpIAddCarry (line 2197) | public class OpIAddCarry : Instruction
method OpIAddCarry (line 2199) | public OpIAddCarry() : base("OpIAddCarry", new List<Operand>()
class OpISubBorrow (line 2204) | public class OpISubBorrow : Instruction
method OpISubBorrow (line 2206) | public OpISubBorrow() : base("OpISubBorrow", new List<Operand>()
class OpUMulExtended (line 2211) | public class OpUMulExtended : Instruction
method OpUMulExtended (line 2213) | public OpUMulExtended() : base("OpUMulExtended", new List<Operand>()
class OpSMulExtended (line 2218) | public class OpSMulExtended : Instruction
method OpSMulExtended (line 2220) | public OpSMulExtended() : base("OpSMulExtended", new List<Operand>()
class OpAny (line 2225) | public class OpAny : Instruction
method OpAny (line 2227) | public OpAny() : base("OpAny", new List<Operand>()
class OpAll (line 2232) | public class OpAll : Instruction
method OpAll (line 2234) | public OpAll() : base("OpAll", new List<Operand>()
class OpIsNan (line 2239) | public class OpIsNan : Instruction
method OpIsNan (line 2241) | public OpIsNan() : base("OpIsNan", new List<Operand>()
class OpIsInf (line 2246) | public class OpIsInf : Instruction
method OpIsInf (line 2248) | public OpIsInf() : base("OpIsInf", new List<Operand>()
class OpIsFinite (line 2253) | public class OpIsFinite : Instruction
method OpIsFinite (line 2255) | public OpIsFinite() : base("OpIsFinite", new List<Operand>()
class OpIsNormal (line 2260) | public class OpIsNormal : Instruction
method OpIsNormal (line 2262) | public OpIsNormal() : base("OpIsNormal", new List<Operand>()
class OpSignBitSet (line 2267) | public class OpSignBitSet : Instruction
method OpSignBitSet (line 2269) | public OpSignBitSet() : base("OpSignBitSet", new List<Operand>()
class OpLessOrGreater (line 2274) | public class OpLessOrGreater : Instruction
method OpLessOrGreater (line 2276) | public OpLessOrGreater() : base("OpLessOrGreater", new List<Operand>()
class OpOrdered (line 2281) | public class OpOrdered : Instruction
method OpOrdered (line 2283) | public OpOrdered() : base("OpOrdered", new List<Operand>()
class OpUnordered (line 2288) | public class OpUnordered : Instruction
method OpUnordered (line 2290) | public OpUnordered() : base("OpUnordered", new List<Operand>()
class OpLogicalEqual (line 2295) | public class OpLogicalEqual : Instruction
method OpLogicalEqual (line 2297) | public OpLogicalEqual() : base("OpLogicalEqual", new List<Operand>()
class OpLogicalNotEqual (line 2302) | public class OpLogicalNotEqual : Instruction
method OpLogicalNotEqual (line 2304) | public OpLogicalNotEqual() : base("OpLogicalNotEqual", new List<Operan...
class OpLogicalOr (line 2309) | public class OpLogicalOr : Instruction
method OpLogicalOr (line 2311) | public OpLogicalOr() : base("OpLogicalOr", new List<Operand>()
class OpLogicalAnd (line 2316) | public class OpLogicalAnd : Instruction
method OpLogicalAnd (line 2318) | public OpLogicalAnd() : base("OpLogicalAnd", new List<Operand>()
class OpLogicalNot (line 2323) | public class OpLogicalNot : Instruction
method OpLogicalNot (line 2325) | public OpLogicalNot() : base("OpLogicalNot", new List<Operand>()
class OpSelect (line 2330) | public class OpSelect : Instruction
method OpSelect (line 2332) | public OpSelect() : base("OpSelect", new List<Operand>()
class OpIEqual (line 2337) | public class OpIEqual : Instruction
method OpIEqual (line 2339) | public OpIEqual() : base("OpIEqual", new List<Operand>()
class OpINotEqual (line 2344) | public class OpINotEqual : Instruction
method OpINotEqual (line 2346) | public OpINotEqual() : base("OpINotEqual", new List<Operand>()
class OpUGreaterThan (line 2351) | public class OpUGreaterThan : Instruction
method OpUGreaterThan (line 2353) | public OpUGreaterThan() : base("OpUGreaterThan", new List<Operand>()
class OpSGreaterThan (line 2358) | public class OpSGreaterThan : Instruction
method OpSGreaterThan (line 2360) | public OpSGreaterThan() : base("OpSGreaterThan", new List<Operand>()
class OpUGreaterThanEqual (line 2365) | public class OpUGreaterThanEqual : Instruction
method OpUGreaterThanEqual (line 2367) | public OpUGreaterThanEqual() : base("OpUGreaterThanEqual", new List<Op...
class OpSGreaterThanEqual (line 2372) | public class OpSGreaterThanEqual : Instruction
method OpSGreaterThanEqual (line 2374) | public OpSGreaterThanEqual() : base("OpSGreaterThanEqual", new List<Op...
class OpULessThan (line 2379) | public class OpULessThan : Instruction
method OpULessThan (line 2381) | public OpULessThan() : base("OpULessThan", new List<Operand>()
class OpSLessThan (line 2386) | public class OpSLessThan : Instruction
method OpSLessThan (line 2388) | public OpSLessThan() : base("OpSLessThan", new List<Operand>()
class OpULessThanEqual (line 2393) | public class OpULessThanEqual : Instruction
method OpULessThanEqual (line 2395) | public OpULessThanEqual() : base("OpULessThanEqual", new List<Operand>()
class OpSLessThanEqual (line 2400) | public class OpSLessThanEqual : Instruction
method OpSLessThanEqual (line 2402) | public OpSLessThanEqual() : base("OpSLessThanEqual", new List<Operand>()
class OpFOrdEqual (line 2407) | public class OpFOrdEqual : Instruction
method OpFOrdEqual (line 2409) | public OpFOrdEqual() : base("OpFOrdEqual", new List<Operand>()
class OpFUnordEqual (line 2414) | public class OpFUnordEqual : Instruction
method OpFUnordEqual (line 2416) | public OpFUnordEqual() : base("OpFUnordEqual", new List<Operand>()
class OpFOrdNotEqual (line 2421) | public class OpFOrdNotEqual : Instruction
method OpFOrdNotEqual (line 2423) | public OpFOrdNotEqual() : base("OpFOrdNotEqual", new List<Operand>()
class OpFUnordNotEqual (line 2428) | public class OpFUnordNotEqual : Instruction
method OpFUnordNotEqual (line 2430) | public OpFUnordNotEqual() : base("OpFUnordNotEqual", new List<Operand>()
class OpFOrdLessThan (line 2435) | public class OpFOrdLessThan : Instruction
method OpFOrdLessThan (line 2437) | public OpFOrdLessThan() : base("OpFOrdLessThan", new List<Operand>()
class OpFUnordLessThan (line 2442) | public class OpFUnordLessThan : Instruction
method OpFUnordLessThan (line 2444) | public OpFUnordLessThan() : base("OpFUnordLessThan", new List<Operand>()
class OpFOrdGreaterThan (line 2449) | public class OpFOrdGreaterThan : Instruction
method OpFOrdGreaterThan (line 2451) | public OpFOrdGreaterThan() : base("OpFOrdGreaterThan", new List<Operan...
class OpFUnordGreaterThan (line 2456) | public class OpFUnordGreaterThan : Instruction
method OpFUnordGreaterThan (line 2458) | public OpFUnordGreaterThan() : base("OpFUnordGreaterThan", new List<Op...
class OpFOrdLessThanEqual (line 2463) | public class OpFOrdLessThanEqual : Instruction
method OpFOrdLessThanEqual (line 2465) | public OpFOrdLessThanEqual() : base("OpFOrdLessThanEqual", new List<Op...
class OpFUnordLessThanEqual (line 2470) | public class OpFUnordLessThanEqual : Instruction
method OpFUnordLessThanEqual (line 2472) | public OpFUnordLessThanEqual() : base("OpFUnordLessThanEqual", new Lis...
class OpFOrdGreaterThanEqual (line 2477) | public class OpFOrdGreaterThanEqual : Instruction
method OpFOrdGreaterThanEqual (line 2479) | public OpFOrdGreaterThanEqual() : base("OpFOrdGreaterThanEqual", new L...
class OpFUnordGreaterThanEqual (line 2484) | public class OpFUnordGreaterThanEqual : Instruction
method OpFUnordGreaterThanEqual (line 2486) | public OpFUnordGreaterThanEqual() : base("OpFUnordGreaterThanEqual", n...
class OpShiftRightLogical (line 2491) | public class OpShiftRightLogical : Instruction
method OpShiftRightLogical (line 2493) | public OpShiftRightLogical() : base("OpShiftRightLogical", new List<Op...
class OpShiftRightArithmetic (line 2498) | public class OpShiftRightArithmetic : Instruction
method OpShiftRightArithmetic (line 2500) | public OpShiftRightArithmetic() : base("OpShiftRightArithmetic", new L...
class OpShiftLeftLogical (line 2505) | public class OpShiftLeftLogical : Instruction
method OpShiftLeftLogical (line 2507) | public OpShiftLeftLogical() : base("OpShiftLeftLogical", new List<Oper...
class OpBitwiseOr (line 2512) | public class OpBitwiseOr : Instruction
method OpBitwiseOr (line 2514) | public OpBitwiseOr() : base("OpBitwiseOr", new List<Operand>()
class OpBitwiseXor (line 2519) | public class OpBitwiseXor : Instruction
method OpBitwiseXor (line 2521) | public OpBitwiseXor() : base("OpBitwiseXor", new List<Operand>()
class OpBitwiseAnd (line 2526) | public class OpBitwiseAnd : Instruction
method OpBitwiseAnd (line 2528) | public OpBitwiseAnd() : base("OpBitwiseAnd", new List<Operand>()
class OpNot (line 2533) | public class OpNot : Instruction
method OpNot (line 2535) | public OpNot() : base("OpNot", new List<Operand>()
class OpBitFieldInsert (line 2540) | public class OpBitFieldInsert : Instruction
method OpBitFieldInsert (line 2542) | public OpBitFieldInsert() : base("OpBitFieldInsert", new List<Operand>()
class OpBitFieldSExtract (line 2547) | public class OpBitFieldSExtract : Instruction
method OpBitFieldSExtract (line 2549) | public OpBitFieldSExtract() : base("OpBitFieldSExtract", new List<Oper...
class OpBitFieldUExtract (line 2554) | public class OpBitFieldUExtract : Instruction
method OpBitFieldUExtract (line 2556) | public OpBitFieldUExtract() : base("OpBitFieldUExtract", new List<Oper...
class OpBitReverse (line 2561) | public class OpBitReverse : Instruction
method OpBitReverse (line 2563) | public OpBitReverse() : base("OpBitReverse", new List<Operand>()
class OpBitCount (line 2568) | public class OpBitCount : Instruction
method OpBitCount (line 2570) | public OpBitCount() : base("OpBitCount", new List<Operand>()
class OpDPdx (line 2575) | public class OpDPdx : Instruction
method OpDPdx (line 2577) | public OpDPdx() : base("OpDPdx", new List<Operand>()
class OpDPdy (line 2582) | public class OpDPdy : Instruction
method OpDPdy (line 2584) | public OpDPdy() : base("OpDPdy", new List<Operand>()
class OpFwidth (line 2589) | public class OpFwidth : Instruction
method OpFwidth (line 2591) | public OpFwidth() : base("OpFwidth", new List<Operand>()
class OpDPdxFine (line 2596) | public class OpDPdxFine : Instruction
method OpDPdxFine (line 2598) | public OpDPdxFine() : base("OpDPdxFine", new List<Operand>()
class OpDPdyFine (line 2603) | public class OpDPdyFine : Instruction
method OpDPdyFine (line 2605) | public OpDPdyFine() : base("OpDPdyFine", new List<Operand>()
class OpFwidthFine (line 2610) | public class OpFwidthFine : Instruction
method OpFwidthFine (line 2612) | public OpFwidthFine() : base("OpFwidthFine", new List<Operand>()
class OpDPdxCoarse (line 2617) | public class OpDPdxCoarse : Instruction
method OpDPdxCoarse (line 2619) | public OpDPdxCoarse() : base("OpDPdxCoarse", new List<Operand>()
class OpDPdyCoarse (line 2624) | public class OpDPdyCoarse : Instruction
method OpDPdyCoarse (line 2626) | public OpDPdyCoarse() : base("OpDPdyCoarse", new List<Operand>()
class OpFwidthCoarse (line 2631) | public class OpFwidthCoarse : Instruction
method OpFwidthCoarse (line 2633) | public OpFwidthCoarse() : base("OpFwidthCoarse", new List<Operand>()
class OpEmitVertex (line 2638) | public class OpEmitVertex : Instruction
method OpEmitVertex (line 2640) | public OpEmitVertex() : base("OpEmitVertex")
class OpEndPrimitive (line 2644) | public class OpEndPrimitive : Instruction
method OpEndPrimitive (line 2646) | public OpEndPrimitive() : base("OpEndPrimitive")
class OpEmitStreamVertex (line 2650) | public class OpEmitStreamVertex : Instruction
method OpEmitStreamVertex (line 2652) | public OpEmitStreamVertex() : base("OpEmitStreamVertex", new List<Oper...
class OpEndStreamPrimitive (line 2657) | public class OpEndStreamPrimitive : Instruction
method OpEndStreamPrimitive (line 2659) | public OpEndStreamPrimitive() : base("OpEndStreamPrimitive", new List<...
class OpControlBarrier (line 2664) | public class OpControlBarrier : Instruction
method OpControlBarrier (line 2666) | public OpControlBarrier() : base("OpControlBarrier", new List<Operand>()
class OpMemoryBarrier (line 2671) | public class OpMemoryBarrier : Instruction
method OpMemoryBarrier (line 2673) | public OpMemoryBarrier() : base("OpMemoryBarrier", new List<Operand>()
class OpAtomicLoad (line 2678) | public class OpAtomicLoad : Instruction
method OpAtomicLoad (line 2680) | public OpAtomicLoad() : base("OpAtomicLoad", new List<Operand>()
class OpAtomicStore (line 2685) | public class OpAtomicStore : Instruction
method OpAtomicStore (line 2687) | public OpAtomicStore() : base("OpAtomicStore", new List<Operand>()
class OpAtomicExchange (line 2692) | public class OpAtomicExchange : Instruction
method OpAtomicExchange (line 2694) | public OpAtomicExchange() : base("OpAtomicExchange", new List<Operand>()
class OpAtomicCompareExchange (line 2699) | public class OpAtomicCompareExchange : Instruction
method OpAtomicCompareExchange (line 2701) | public OpAtomicCompareExchange() : base("OpAtomicCompareExchange", new...
class OpAtomicCompareExchangeWeak (line 2706) | public class OpAtomicCompareExchangeWeak : Instruction
method OpAtomicCompareExchangeWeak (line 2708) | public OpAtomicCompareExchangeWeak() : base("OpAtomicCompareExchangeWe...
class OpAtomicIIncrement (line 2713) | public class OpAtomicIIncrement : Instruction
method OpAtomicIIncrement (line 2715) | public OpAtomicIIncrement() : base("OpAtomicIIncrement", new List<Oper...
class OpAtomicIDecrement (line 2720) | public class OpAtomicIDecrement : Instruction
method OpAtomicIDecrement (line 2722) | public OpAtomicIDecrement() : base("OpAtomicIDecrement", new List<Oper...
class OpAtomicIAdd (line 2727) | public class OpAtomicIAdd : Instruction
method OpAtomicIAdd (line 2729) | public OpAtomicIAdd() : base("OpAtomicIAdd", new List<Operand>()
class OpAtomicISub (line 2734) | public class OpAtomicISub : Instruction
method OpAtomicISub (line 2736) | public OpAtomicISub() : base("OpAtomicISub", new List<Operand>()
class OpAtomicSMin (line 2741) | public class OpAtomicSMin : Instruction
method OpAtomicSMin (line 2743) | public OpAtomicSMin() : base("OpAtomicSMin", new List<Operand>()
class OpAtomicUMin (line 2748) | public class OpAtomicUMin : Instruction
method OpAtomicUMin (line 2750) | public OpAtomicUMin() : base("OpAtomicUMin", new List<Operand>()
class OpAtomicSMax (line 2755) | public class OpAtomicSMax : Instruction
method OpAtomicSMax (line 2757) | public OpAtomicSMax() : base("OpAtomicSMax", new List<Operand>()
class OpAtomicUMax (line 2762) | public class OpAtomicUMax : Instruction
method OpAtomicUMax (line 2764) | public OpAtomicUMax() : base("OpAtomicUMax", new List<Operand>()
class OpAtomicAnd (line 2769) | public class OpAtomicAnd : Instruction
method OpAtomicAnd (line 2771) | public OpAtomicAnd() : base("OpAtomicAnd", new List<Operand>()
class OpAtomicOr (line 2776) | public class OpAtomicOr : Instruction
method OpAtomicOr (line 2778) | public OpAtomicOr() : base("OpAtomicOr", new List<Operand>()
class OpAtomicXor (line 2783) | public class OpAtomicXor : Instruction
method OpAtomicXor (line 2785) | public OpAtomicXor() : base("OpAtomicXor", new List<Operand>()
class OpPhi (line 2790) | public class OpPhi : Instruction
method OpPhi (line 2792) | public OpPhi() : base("OpPhi", new List<Operand>()
class OpLoopMerge (line 2797) | public class OpLoopMerge : Instruction
method OpLoopMerge (line 2799) | public OpLoopMerge() : base("OpLoopMerge", new List<Operand>()
class OpSelectionMerge (line 2804) | public class OpSelectionMerge : Instruction
method OpSelectionMerge (line 2806) | public OpSelectionMerge() : base("OpSelectionMerge", new List<Operand>()
class OpLabel (line 2811) | public class OpLabel : Instruction
method OpLabel (line 2813) | public OpLabel() : base("OpLabel", new List<Operand>()
class OpBranch (line 2818) | public class OpBranch : Instruction
method OpBranch (line 2820) | public OpBranch() : base("OpBranch", new List<Operand>()
class OpBranchConditional (line 2825) | public class OpBranchConditional : Instruction
method OpBranchConditional (line 2827) | public OpBranchConditional() : base("OpBranchConditional", new List<Op...
class OpSwitch (line 2832) | public class OpSwitch : Instruction
method OpSwitch (line 2834) | public OpSwitch() : base("OpSwitch", new List<Operand>()
class OpKill (line 2839) | public class OpKill : Instruction
method OpKill (line 2841) | public OpKill() : base("OpKill")
class OpReturn (line 2845) | public class OpReturn : Instruction
method OpReturn (line 2847) | public OpReturn() : base("OpReturn")
class OpReturnValue (line 2851) | public class OpReturnValue : Instruction
method OpReturnValue (line 2853) | public OpReturnValue() : base("OpReturnValue", new List<Operand>()
class OpUnreachable (line 2858) | public class OpUnreachable : Instruction
method OpUnreachable (line 2860) | public OpUnreachable() : base("OpUnreachable")
class OpLifetimeStart (line 2864) | public class OpLifetimeStart : Instruction
method OpLifetimeStart (line 2866) | public OpLifetimeStart() : base("OpLifetimeStart", new List<Operand>()
class OpLifetimeStop (line 2871) | public class OpLifetimeStop : Instruction
method OpLifetimeStop (line 2873) | public OpLifetimeStop() : base("OpLifetimeStop", new List<Operand>()
class OpGroupAsyncCopy (line 2878) | public class OpGroupAsyncCopy : Instruction
method OpGroupAsyncCopy (line 2880) | public OpGroupAsyncCopy() : base("OpGroupAsyncCopy", new List<Operand>()
class OpGroupWaitEvents (line 2885) | public class OpGroupWaitEvents : Instruction
method OpGroupWaitEvents (line 2887) | public OpGroupWaitEvents() : base("OpGroupWaitEvents", new List<Operan...
class OpGroupAll (line 2892) | public class OpGroupAll : Instruction
method OpGroupAll (line 2894) | public OpGroupAll() : base("OpGroupAll", new List<Operand>()
class OpGroupAny (line 2899) | public class OpGroupAny : Instruction
method OpGroupAny (line 2901) | public OpGroupAny() : base("OpGroupAny", new List<Operand>()
class OpGroupBroadcast (line 2906) | public class OpGroupBroadcast : Instruction
method OpGroupBroadcast (line 2908) | public OpGroupBroadcast() : base("OpGroupBroadcast", new List<Operand>()
class OpGroupIAdd (line 2913) | public class OpGroupIAdd : Instruction
method OpGroupIAdd (line 2915) | public OpGroupIAdd() : base("OpGroupIAdd", new List<Operand>()
class OpGroupFAdd (line 2920) | public class OpGroupFAdd : Instruction
method OpGroupFAdd (line 2922) | public OpGroupFAdd() : base("OpGroupFAdd", new List<Operand>()
class OpGroupFMin (line 2927) | public class OpGroupFMin : Instruction
method OpGroupFMin (line 2929) | public OpGroupFMin() : base("OpGroupFMin", new List<Operand>()
class OpGroupUMin (line 2934) | public class OpGroupUMin : Instruction
method OpGroupUMin (line 2936) | public OpGroupUMin() : base("OpGroupUMin", new List<Operand>()
class OpGroupSMin (line 2941) | public class OpGroupSMin : Instruction
method OpGroupSMin (line 2943) | public OpGroupSMin() : base("OpGroupSMin", new List<Operand>()
class OpGroupFMax (line 2948) | public class OpGroupFMax : Instruction
method OpGroupFMax (line 2950) | public OpGroupFMax() : base("OpGroupFMax", new List<Operand>()
class OpGroupUMax (line 2955) | public class OpGroupUMax : Instruction
method OpGroupUMax (line 2957) | public OpGroupUMax() : base("OpGroupUMax", new List<Operand>()
class OpGroupSMax (line 2962) | public class OpGroupSMax : Instruction
method OpGroupSMax (line 2964) | public OpGroupSMax() : base("OpGroupSMax", new List<Operand>()
class OpReadPipe (line 2969) | public class OpReadPipe : Instruction
method OpReadPipe (line 2971) | public OpReadPipe() : base("OpReadPipe", new List<Operand>()
class OpWritePipe (line 2976) | public class OpWritePipe : Instruction
method OpWritePipe (line 2978) | public OpWritePipe() : base("OpWritePipe", new List<Operand>()
class OpReservedReadPipe (line 2983) | public class OpReservedReadPipe : Instruction
method OpReservedReadPipe (line 2985) | public OpReservedReadPipe() : base("OpReservedReadPipe", new List<Oper...
class OpReservedWritePipe (line 2990) | public class OpReservedWritePipe : Instruction
method OpReservedWritePipe (line 2992) | public OpReservedWritePipe() : base("OpReservedWritePipe", new List<Op...
class OpReserveReadPipePackets (line 2997) | public class OpReserveReadPipePackets : Instruction
method OpReserveReadPipePackets (line 2999) | public OpReserveReadPipePackets() : base("OpReserveReadPipePackets", n...
class OpReserveWritePipePackets (line 3004) | public class OpReserveWritePipePackets : Instruction
method OpReserveWritePipePackets (line 3006) | public OpReserveWritePipePackets() : base("OpReserveWritePipePackets",...
class OpCommitReadPipe (line 3011) | public class OpCommitReadPipe : Instruction
method OpCommitReadPipe (line 3013) | public OpCommitReadPipe() : base("OpCommitReadPipe", new List<Operand>()
class OpCommitWritePipe (line 3018) | public class OpCommitWritePipe : Instruction
method OpCommitWritePipe (line 3020) | public OpCommitWritePipe() : base("OpCommitWritePipe", new List<Operan...
class OpIsValidReserveId (line 3025) | public class OpIsValidReserveId : Instruction
method OpIsValidReserveId (line 3027) | public OpIsValidReserveId() : base("OpIsValidReserveId", new List<Oper...
class OpGetNumPipePackets (line 3032) | public class OpGetNumPipePackets : Instruction
method OpGetNumPipePackets (line 3034) | public OpGetNumPipePackets() : base("OpGetNumPipePackets", new List<Op...
class OpGetMaxPipePackets (line 3039) | public class OpGetMaxPipePackets : Instruction
method OpGetMaxPipePackets (line 3041) | public OpGetMaxPipePackets() : base("OpGetMaxPipePackets", new List<Op...
class OpGroupReserveReadPipePackets (line 3046) | public class OpGroupReserveReadPipePackets : Instruction
method OpGroupReserveReadPipePackets (line 3048) | public OpGroupReserveReadPipePackets() : base("OpGroupReserveReadPipeP...
class OpGroupReserveWritePipePackets (line 3053) | public class OpGroupReserveWritePipePackets : Instruction
method OpGroupReserveWritePipePackets (line 3055) | public OpGroupReserveWritePipePackets() : base("OpGroupReserveWritePip...
class OpGroupCommitReadPipe (line 3060) | public class OpGroupCommitReadPipe : Instruction
method OpGroupCommitReadPipe (line 3062) | public OpGroupCommitReadPipe() : base("OpGroupCommitReadPipe", new Lis...
class OpGroupCommitWritePipe (line 3067) | public class OpGroupCommitWritePipe : Instruction
method OpGroupCommitWritePipe (line 3069) | public OpGroupCommitWritePipe() : base("OpGroupCommitWritePipe", new L...
class OpEnqueueMarker (line 3074) | public class OpEnqueueMarker : Instruction
method OpEnqueueMarker (line 3076) | public OpEnqueueMarker() : base("OpEnqueueMarker", new List<Operand>()
class OpEnqueueKernel (line 3081) | public class OpEnqueueKernel : Instruction
method OpEnqueueKernel (line 3083) | public OpEnqueueKernel() : base("OpEnqueueKernel", new List<Operand>()
class OpGetKernelNDrangeSubGroupCount (line 3088) | public class OpGetKernelNDrangeSubGroupCount : Instruction
method OpGetKernelNDrangeSubGroupCount (line 3090) | public OpGetKernelNDrangeSubGroupCount() : base("OpGetKernelNDrangeSub...
class OpGetKernelNDrangeMaxSubGroupSize (line 3095) | public class OpGetKernelNDrangeMaxSubGroupSize : Instruction
method OpGetKernelNDrangeMaxSubGroupSize (line 3097) | public OpGetKernelNDrangeMaxSubGroupSize() : base("OpGetKernelNDrangeM...
class OpGetKernelWorkGroupSize (line 3102) | public class OpGetKernelWorkGroupSize : Instruction
method OpGetKernelWorkGroupSize (line 3104) | public OpGetKernelWorkGroupSize() : base("OpGetKernelWorkGroupSize", n...
class OpGetKernelPreferredWorkGroupSizeMultiple (line 3109) | public class OpGetKernelPreferredWorkGroupSizeMultiple : Instruction
method OpGetKernelPreferredWorkGroupSizeMultiple (line 3111) | public OpGetKernelPreferredWorkGroupSizeMultiple() : base("OpGetKernel...
class OpRetainEvent (line 3116) | public class OpRetainEvent : Instruction
method OpRetainEvent (line 3118) | public OpRetainEvent() : base("OpRetainEvent", new List<Operand>()
class OpReleaseEvent (line 3123) | public class OpReleaseEvent : Instruction
method OpReleaseEvent (line 3125) | public OpReleaseEvent() : base("OpReleaseEvent", new List<Operand>()
class OpCreateUserEvent (line 3130) | public class OpCreateUserEvent : Instruction
method OpCreateUserEvent (line 3132) | public OpCreateUserEvent() : base("OpCreateUserEvent", new List<Operan...
class OpIsValidEvent (line 3137) | public class OpIsValidEvent : Instruction
method OpIsValidEvent (line 3139) | public OpIsValidEvent() : base("OpIsValidEvent", new List<Operand>()
class OpSetUserEventStatus (line 3144) | public class OpSetUserEventStatus : Instruction
method OpSetUserEventStatus (line 3146) | public OpSetUserEventStatus() : base("OpSetUserEventStatus", new List<...
class OpCaptureEventProfilingInfo (line 3151) | public class OpCaptureEventProfilingInfo : Instruction
method OpCaptureEventProfilingInfo (line 3153) | public OpCaptureEventProfilingInfo() : base("OpCaptureEventProfilingIn...
class OpGetDefaultQueue (line 3158) | public class OpGetDefaultQueue : Instruction
me
Condensed preview — 244 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,741K chars).
[
{
"path": ".gitattributes",
"chars": 2518,
"preview": "###############################################################################\n# Set default behavior to automatically "
},
{
"path": ".github/workflows/build.yml",
"chars": 1880,
"preview": "name: AssetStudioBuild\n\non:\n push:\n branches: [ master ]\n pull_request:\n branches: [ master ]\n\n workflow_dispat"
},
{
"path": ".gitignore",
"chars": 5745,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": "AssetStudio/7zip/Common/CRC.cs",
"chars": 1112,
"preview": "// Common/CRC.cs\n\nnamespace SevenZip\n{\n\tpublic class CRC\n\t{\n\t\tpublic static readonly uint[] Table;\n\n\t\tstatic CRC()\n\t\t{\n\t"
},
{
"path": "AssetStudio/7zip/Common/CommandLineParser.cs",
"chars": 6642,
"preview": "// CommandLineParser.cs\n\nusing System;\nusing System.Collections;\n\nnamespace SevenZip.CommandLineParser\n{\n\tpublic enum Sw"
},
{
"path": "AssetStudio/7zip/Common/InBuffer.cs",
"chars": 1318,
"preview": "// InBuffer.cs\n\nnamespace SevenZip.Buffer\n{\n\tpublic class InBuffer\n\t{\n\t\tbyte[] m_Buffer;\n\t\tuint m_Pos;\n\t\tuint m_Limit;\n\t"
},
{
"path": "AssetStudio/7zip/Common/OutBuffer.cs",
"chars": 897,
"preview": "// OutBuffer.cs\n\nnamespace SevenZip.Buffer\n{\n\tpublic class OutBuffer\n\t{\n\t\tbyte[] m_Buffer;\n\t\tuint m_Pos;\n\t\tuint m_Buffer"
},
{
"path": "AssetStudio/7zip/Compress/LZ/IMatchFinder.cs",
"chars": 552,
"preview": "// IMatchFinder.cs\n\nusing System;\n\nnamespace SevenZip.Compression.LZ\n{\n\tinterface IInWindowStream\n\t{\n\t\tvoid SetStream(Sy"
},
{
"path": "AssetStudio/7zip/Compress/LZ/LzBinTree.cs",
"chars": 9270,
"preview": "// LzBinTree.cs\n\nusing System;\n\nnamespace SevenZip.Compression.LZ\n{\n\tpublic class BinTree : InWindow, IMatchFinder\n\t{\n\t\t"
},
{
"path": "AssetStudio/7zip/Compress/LZ/LzInWindow.cs",
"chars": 3779,
"preview": "// LzInWindow.cs\n\nusing System;\n\nnamespace SevenZip.Compression.LZ\n{\n\tpublic class InWindow\n\t{\n\t\tpublic Byte[] _bufferBa"
},
{
"path": "AssetStudio/7zip/Compress/LZ/LzOutWindow.cs",
"chars": 2104,
"preview": "// LzOutWindow.cs\n\nnamespace SevenZip.Compression.LZ\n{\n\tpublic class OutWindow\n\t{\n\t\tbyte[] _buffer = null;\n\t\tuint _pos;\n"
},
{
"path": "AssetStudio/7zip/Compress/LZMA/LzmaBase.cs",
"chars": 2696,
"preview": "// LzmaBase.cs\n\nnamespace SevenZip.Compression.LZMA\n{\n\tinternal abstract class Base\n\t{\n\t\tpublic const uint kNumRepDistan"
},
{
"path": "AssetStudio/7zip/Compress/LZMA/LzmaDecoder.cs",
"chars": 11677,
"preview": "// LzmaDecoder.cs\n\nusing System;\n\nnamespace SevenZip.Compression.LZMA\n{\n\tusing RangeCoder;\n\n\tpublic class Decoder : ICod"
},
{
"path": "AssetStudio/7zip/Compress/LZMA/LzmaEncoder.cs",
"chars": 43744,
"preview": "// LzmaEncoder.cs\n\nusing System;\n\nnamespace SevenZip.Compression.LZMA\n{\n\tusing RangeCoder;\n\n\tpublic class Encoder : ICod"
},
{
"path": "AssetStudio/7zip/Compress/RangeCoder/RangeCoder.cs",
"chars": 3956,
"preview": "using System;\n\nnamespace SevenZip.Compression.RangeCoder\n{\n\tclass Encoder\n\t{\n\t\tpublic const uint kTopValue = (1 << 24);\n"
},
{
"path": "AssetStudio/7zip/Compress/RangeCoder/RangeCoderBit.cs",
"chars": 3155,
"preview": "using System;\n\nnamespace SevenZip.Compression.RangeCoder\n{\n\tstruct BitEncoder\n\t{\n\t\tpublic const int kNumBitModelTotalBit"
},
{
"path": "AssetStudio/7zip/Compress/RangeCoder/RangeCoderBitTree.cs",
"chars": 3368,
"preview": "using System;\n\nnamespace SevenZip.Compression.RangeCoder\n{\n\tstruct BitTreeEncoder\n\t{\n\t\tBitEncoder[] Models;\n\t\tint NumBit"
},
{
"path": "AssetStudio/7zip/ICoder.cs",
"chars": 3605,
"preview": "// ICoder.h\n\nusing System;\n\nnamespace SevenZip\n{\n\t/// <summary>\n\t/// The exception that is thrown when an error in input"
},
{
"path": "AssetStudio/AssetStudio.csproj",
"chars": 812,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>net472;netstandard2.0;net5.0;net6.0</TargetFr"
},
{
"path": "AssetStudio/AssetsManager.cs",
"chars": 24226,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.IO.Compression;\nusing System.Linq;\nusing S"
},
{
"path": "AssetStudio/BigArrayPool.cs",
"chars": 255,
"preview": "using System.Buffers;\n\nnamespace AssetStudio\n{\n public static class BigArrayPool<T>\n {\n private static rea"
},
{
"path": "AssetStudio/Brotli/BitReader.cs",
"chars": 7405,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/BrotliInputStream.cs",
"chars": 6788,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/BrotliRuntimeException.cs",
"chars": 524,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/Context.cs",
"chars": 7222,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/Decode.cs",
"chars": 33714,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/Dictionary.cs",
"chars": 243462,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/Huffman.cs",
"chars": 4380,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/HuffmanTreeGroup.cs",
"chars": 1693,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/IntReader.cs",
"chars": 1111,
"preview": "/* Copyright 2017 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/Prefix.cs",
"chars": 1705,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/RunningState.cs",
"chars": 800,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/State.cs",
"chars": 4251,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/Transform.cs",
"chars": 14292,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/Utils.cs",
"chars": 1920,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/Brotli/WordTransformType.cs",
"chars": 1565,
"preview": "/* Copyright 2015 Google Inc. All Rights Reserved.\n\nDistributed under MIT license.\nSee file LICENSE for detail or copy a"
},
{
"path": "AssetStudio/BuildTarget.cs",
"chars": 1178,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/BuildType.cs",
"chars": 375,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/BundleFile.cs",
"chars": 14588,
"preview": "using K4os.Compression.LZ4;\nusing System;\nusing System.IO;\nusing System.Linq;\n\nnamespace AssetStudio\n{\n [Flags]\n "
},
{
"path": "AssetStudio/ClassIDType.cs",
"chars": 12286,
"preview": "// official Class ID Reference: https://docs.unity3d.com/Manual/ClassIDReference.html\nnamespace AssetStudio\n{\n public"
},
{
"path": "AssetStudio/Classes/Animation.cs",
"chars": 634,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/AnimationClip.cs",
"chars": 34223,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\n\nnamespace AssetStudio\n{\n public"
},
{
"path": "AssetStudio/Classes/Animator.cs",
"chars": 2219,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/AnimatorController.cs",
"chars": 20210,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/AnimatorOverrideController.cs",
"chars": 1100,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/AssetBundle.cs",
"chars": 1323,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/AudioClip.cs",
"chars": 4141,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\n\nnamespace Asset"
},
{
"path": "AssetStudio/Classes/Avatar.cs",
"chars": 9367,
"preview": "using System.Collections.Generic;\nusing System.Linq;\n\nnamespace AssetStudio\n{\n public class Node\n {\n publi"
},
{
"path": "AssetStudio/Classes/Behaviour.cs",
"chars": 367,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/BuildSettings.cs",
"chars": 619,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/Component.cs",
"chars": 368,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/EditorExtension.cs",
"chars": 503,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/Font.cs",
"chars": 4537,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/GameObject.cs",
"chars": 1131,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/Material.cs",
"chars": 4306,
"preview": "using System.Collections.Generic;\n\nnamespace AssetStudio\n{\n public class UnityTexEnv\n {\n public PPtr<Textu"
},
{
"path": "AssetStudio/Classes/Mesh.cs",
"chars": 52303,
"preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\n\nnamespac"
},
{
"path": "AssetStudio/Classes/MeshFilter.cs",
"chars": 335,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/MeshRenderer.cs",
"chars": 259,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/MonoBehaviour.cs",
"chars": 436,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/MonoScript.cs",
"chars": 1330,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/MovieTexture.cs",
"chars": 524,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/NamedObject.cs",
"chars": 339,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/Object.cs",
"chars": 2081,
"preview": "using System.Collections.Specialized;\n\nnamespace AssetStudio\n{\n public class Object\n {\n public SerializedF"
},
{
"path": "AssetStudio/Classes/PPtr.cs",
"chars": 4172,
"preview": "using System;\n\nnamespace AssetStudio\n{\n public sealed class PPtr<T> where T : Object\n {\n public int m_File"
},
{
"path": "AssetStudio/Classes/PlayerSettings.cs",
"chars": 1826,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/RectTransform.cs",
"chars": 261,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/Renderer.cs",
"chars": 5558,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/ResourceManager.cs",
"chars": 615,
"preview": "using System.Collections.Generic;\n\nnamespace AssetStudio\n{\n public class ResourceManager : Object\n {\n publ"
},
{
"path": "AssetStudio/Classes/RuntimeAnimatorController.cs",
"chars": 293,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/Shader.cs",
"chars": 35487,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\n\nnamespace AssetStudio\n{\n public"
},
{
"path": "AssetStudio/Classes/SkinnedMeshRenderer.cs",
"chars": 1210,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/Sprite.cs",
"chars": 8030,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\n\nnamespace AssetStudio\n{\n public class SecondarySpr"
},
{
"path": "AssetStudio/Classes/SpriteAtlas.cs",
"chars": 2953,
"preview": "using System;\nusing System.Collections.Generic;\n\nnamespace AssetStudio\n{\n public class SpriteAtlasData\n {\n "
},
{
"path": "AssetStudio/Classes/TextAsset.cs",
"chars": 367,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Linq.Expressions;\nusing System.Text;\n\nn"
},
{
"path": "AssetStudio/Classes/Texture.cs",
"chars": 752,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/Texture2D.cs",
"chars": 6322,
"preview": "using System;\n\nnamespace AssetStudio\n{\n public class StreamingInfo\n {\n public long offset; //ulong\n "
},
{
"path": "AssetStudio/Classes/Transform.cs",
"chars": 922,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Classes/VideoClip.cs",
"chars": 2684,
"preview": "using System.IO;\n\nnamespace AssetStudio\n{\n public class StreamedResource\n {\n public string m_Source;\n "
},
{
"path": "AssetStudio/CommonString.cs",
"chars": 3796,
"preview": "using System.Collections.Generic;\n\nnamespace AssetStudio\n{\n public static class CommonString\n {\n public st"
},
{
"path": "AssetStudio/EndianBinaryReader.cs",
"chars": 2867,
"preview": "using System;\nusing System.Buffers.Binary;\nusing System.IO;\n\nnamespace AssetStudio\n{\n public class EndianBinaryReade"
},
{
"path": "AssetStudio/EndianType.cs",
"chars": 223,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "AssetStudio/Extensions/BinaryReaderExtensions.cs",
"chars": 5290,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text;\n\nnamespace AssetStudio\n{\n public"
},
{
"path": "AssetStudio/Extensions/BinaryWriterExtensions.cs",
"chars": 703,
"preview": "using System;\nusing System.IO;\nusing System.Text;\n\nnamespace AssetStudio\n{\n public static class BinaryWriterExtensio"
},
{
"path": "AssetStudio/Extensions/StreamExtensions.cs",
"chars": 673,
"preview": "using System.IO;\n\nnamespace AssetStudio\n{\n public static class StreamExtensions\n {\n private const int Buff"
},
{
"path": "AssetStudio/FileIdentifier.cs",
"chars": 399,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/FileReader.cs",
"chars": 3498,
"preview": "using System.IO;\nusing System.Linq;\n\nnamespace AssetStudio\n{\n public class FileReader : EndianBinaryReader\n {\n "
},
{
"path": "AssetStudio/FileType.cs",
"chars": 314,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "AssetStudio/IImported.cs",
"chars": 9625,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\n\nnamespace AssetStudio\n{\n public interface IImported"
},
{
"path": "AssetStudio/ILogger.cs",
"chars": 461,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/ImportHelper.cs",
"chars": 2969,
"preview": "using Org.Brotli.Dec;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.IO.Compression;\nusing System.Linq"
},
{
"path": "AssetStudio/LocalSerializedObjectIdentifier.cs",
"chars": 263,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Logger.cs",
"chars": 949,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/Math/Color.cs",
"chars": 2155,
"preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace AssetStudio\n{\n [StructLayout(LayoutKind.Sequential, P"
},
{
"path": "AssetStudio/Math/Half.cs",
"chars": 45592,
"preview": "using System;\nusing System.Diagnostics;\nusing System.Globalization;\n\nnamespace AssetStudio\n{\n /// <summary>\n /// "
},
{
"path": "AssetStudio/Math/HalfHelper.cs",
"chars": 7650,
"preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace AssetStudio\n{\n /// <summary>\n /// Helper class for"
},
{
"path": "AssetStudio/Math/Matrix4x4.cs",
"chars": 8947,
"preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace AssetStudio\n{\n [StructLayout(LayoutKind.Sequential, P"
},
{
"path": "AssetStudio/Math/Quaternion.cs",
"chars": 2407,
"preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace AssetStudio\n{\n [StructLayout(LayoutKind.Sequential, P"
},
{
"path": "AssetStudio/Math/Vector2.cs",
"chars": 3682,
"preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace AssetStudio\n{\n [StructLayout(LayoutKind.Sequential, P"
},
{
"path": "AssetStudio/Math/Vector3.cs",
"chars": 3769,
"preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace AssetStudio\n{\n [StructLayout(LayoutKind.Sequential, P"
},
{
"path": "AssetStudio/Math/Vector4.cs",
"chars": 4282,
"preview": "using System;\nusing System.Runtime.InteropServices;\n\nnamespace AssetStudio\n{\n [StructLayout(LayoutKind.Sequential, P"
},
{
"path": "AssetStudio/ObjectInfo.cs",
"chars": 412,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/ObjectReader.cs",
"chars": 1447,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\n\nnamespace Asset"
},
{
"path": "AssetStudio/Progress.cs",
"chars": 668,
"preview": "using System;\n\nnamespace AssetStudio\n{\n public static class Progress\n {\n public static IProgress<int> Defa"
},
{
"path": "AssetStudio/ResourceReader.cs",
"chars": 2987,
"preview": "using System.IO;\n\nnamespace AssetStudio\n{\n public class ResourceReader\n {\n private bool needSearch;\n "
},
{
"path": "AssetStudio/SerializedFile.cs",
"chars": 15458,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text.RegularExpression"
},
{
"path": "AssetStudio/SerializedFileFormatVersion.cs",
"chars": 2051,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "AssetStudio/SerializedFileHeader.cs",
"chars": 387,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/SerializedType.cs",
"chars": 536,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/SevenZipHelper.cs",
"chars": 1764,
"preview": "using System;\nusing System.IO;\nusing SevenZip.Compression.LZMA;\n\n\nnamespace AssetStudio\n{\n public static class SevenZ"
},
{
"path": "AssetStudio/StreamFile.cs",
"chars": 175,
"preview": "using System.IO;\n\nnamespace AssetStudio\n{\n public class StreamFile\n {\n public string path;\n public "
},
{
"path": "AssetStudio/TypeTree.cs",
"chars": 263,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "AssetStudio/TypeTreeHelper.cs",
"chars": 13653,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.Specialized;\nusing System.IO;\nusing System.Tex"
},
{
"path": "AssetStudio/TypeTreeNode.cs",
"chars": 779,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudio/WebFile.cs",
"chars": 1514,
"preview": "using System.Collections.Generic;\nusing System.IO;\nusing System.Text;\n\nnamespace AssetStudio\n{\n public class WebFile"
},
{
"path": "AssetStudio.PInvoke/AssetStudio.PInvoke.csproj",
"chars": 447,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>net472;netstandard2.0;net5.0;net6.0</TargetFr"
},
{
"path": "AssetStudio.PInvoke/DllLoader.cs",
"chars": 4546,
"preview": "using System;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Runtime.InteropServi"
},
{
"path": "AssetStudio.PInvoke/Utf8StringHandle.cs",
"chars": 2300,
"preview": "using System;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing Microsoft.Win32.SafeHandles;\n\nnamespace As"
},
{
"path": "AssetStudio.sln",
"chars": 9997,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 16\nVisualStudioVersion = 16.0.3141"
},
{
"path": "AssetStudioFBXNative/AssetStudioFBXNative.rc",
"chars": 2224,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "AssetStudioFBXNative/AssetStudioFBXNative.vcxproj",
"chars": 10926,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msb"
},
{
"path": "AssetStudioFBXNative/AssetStudioFBXNative.vcxproj.filters",
"chars": 2339,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "AssetStudioFBXNative/api.cpp",
"chars": 26890,
"preview": "#include <fbxsdk.h>\n\n#include \"dllexport.h\"\n#include \"bool32_t.h\"\n#include \"asfbx_context.h\"\n#include \"asfbx_skin_contex"
},
{
"path": "AssetStudioFBXNative/api.h",
"chars": 7658,
"preview": "#pragma once\n\n#include \"dllexport.h\"\n#include \"bool32_t.h\"\n\nnamespace fbxsdk\n{\n\tclass FbxNode;\n\tclass FbxFileTexture;\n\tt"
},
{
"path": "AssetStudioFBXNative/asfbx_anim_context.cpp",
"chars": 485,
"preview": "#include \"asfbx_anim_context.h\"\n\nAsFbxAnimContext::AsFbxAnimContext(bool32_t eulerFilter)\n\t: lFilter(nullptr)\n{\n\tif (eul"
},
{
"path": "AssetStudioFBXNative/asfbx_anim_context.h",
"chars": 554,
"preview": "#pragma once\n\n#include <fbxsdk.h>\n\n#include \"bool32_t.h\"\n\nstruct AsFbxAnimContext\n{\n\n\tFbxAnimCurveFilterUnroll* lFilter;"
},
{
"path": "AssetStudioFBXNative/asfbx_context.cpp",
"chars": 479,
"preview": "#include <fbxsdk.h>\n\n#include \"asfbx_context.h\"\n\nAsFbxContext::AsFbxContext()\n{\n\tpSdkManager = nullptr;\n\tpScene = nullpt"
},
{
"path": "AssetStudioFBXNative/asfbx_context.h",
"chars": 420,
"preview": "#pragma once\n\n#include <cstdint>\n#include <string>\n#include <unordered_set>\n\nstruct AsFbxContext\n{\n\n\tfbxsdk::FbxManager*"
},
{
"path": "AssetStudioFBXNative/asfbx_morph_context.cpp",
"chars": 169,
"preview": "#include \"asfbx_morph_context.h\"\n\nAsFbxMorphContext::AsFbxMorphContext()\n{\n\tpMesh = nullptr;\n\tlBlendShape = nullptr;\n\tlB"
},
{
"path": "AssetStudioFBXNative/asfbx_morph_context.h",
"chars": 231,
"preview": "#pragma once\n\n#include <fbxsdk.h>\n\nstruct AsFbxMorphContext\n{\n\n\tFbxMesh* pMesh;\n\tFbxBlendShape* lBlendShape;\n\tFbxBlendSh"
},
{
"path": "AssetStudioFBXNative/asfbx_skin_context.cpp",
"chars": 365,
"preview": "#include \"asfbx_skin_context.h\"\n#include \"asfbx_context.h\"\n\nAsFbxSkinContext::AsFbxSkinContext(AsFbxContext* pContext, F"
},
{
"path": "AssetStudioFBXNative/asfbx_skin_context.h",
"chars": 228,
"preview": "#pragma once\n\n#include <fbxsdk.h>\n\nstruct AsFbxContext;\n\nstruct AsFbxSkinContext\n{\n\t\n\tFbxSkin* pSkin;\n\tFbxAMatrix lMeshM"
},
{
"path": "AssetStudioFBXNative/bool32_t.h",
"chars": 61,
"preview": "#pragma once\n\n#include <cstdint>\n\ntypedef uint32_t bool32_t;\n"
},
{
"path": "AssetStudioFBXNative/cpp.hint",
"chars": 25,
"preview": "#define AS_API(ret_type)\n"
},
{
"path": "AssetStudioFBXNative/dllexport.h",
"chars": 1145,
"preview": "#pragma once\n\n#if defined(_MSC_VER)\n#if _MSC_VER < 1910 // MSVC 2017-\n#error MSVC 2017 or later is required.\n#endif\n#end"
},
{
"path": "AssetStudioFBXNative/resource.h",
"chars": 369,
"preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ generated include file.\n// Used by AssetStudioFBXNative.rc\n\n// ¶һĬֵ\n// \n#i"
},
{
"path": "AssetStudioFBXNative/utils.cpp",
"chars": 906,
"preview": "#include <fbxsdk.h>\n#include <cassert>\n\n#include \"utils.h\"\n\nVector3::Vector3()\n\t: X(0), Y(0), Z(0)\n{\n}\n\nVector3::Vector3"
},
{
"path": "AssetStudioFBXNative/utils.h",
"chars": 371,
"preview": "#pragma once\n\nstruct Vector3 {\n\n\tfloat X;\n\tfloat Y;\n\tfloat Z;\n\n\tVector3();\n\tVector3(float x, float y, float z);\n\n};\n\nstr"
},
{
"path": "AssetStudioFBXWrapper/AssetStudioFBXWrapper.csproj",
"chars": 631,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>net472;netstandard2.0;net5.0;net6.0</TargetFr"
},
{
"path": "AssetStudioFBXWrapper/Fbx.PInvoke.cs",
"chars": 585,
"preview": "using System.Runtime.InteropServices;\nusing AssetStudio.FbxInterop;\n\nnamespace AssetStudio\n{\n partial class Fbx\n "
},
{
"path": "AssetStudioFBXWrapper/Fbx.cs",
"chars": 1854,
"preview": "using AssetStudio.FbxInterop;\nusing AssetStudio.PInvoke;\nusing System.IO;\n\nnamespace AssetStudio\n{\n public static pa"
},
{
"path": "AssetStudioFBXWrapper/FbxDll.cs",
"chars": 208,
"preview": "namespace AssetStudio.FbxInterop\n{\n internal static class FbxDll\n {\n\n internal const string DllName = \"Ass"
},
{
"path": "AssetStudioFBXWrapper/FbxExporter.cs",
"chars": 7144,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\n\nnamespace AssetStudio.FbxInterop\n{\n inter"
},
{
"path": "AssetStudioFBXWrapper/FbxExporterContext.PInvoke.cs",
"chars": 17826,
"preview": "using System;\nusing System.Runtime.InteropServices;\nusing AssetStudio.PInvoke;\n\nnamespace AssetStudio.FbxInterop\n{\n "
},
{
"path": "AssetStudioFBXWrapper/FbxExporterContext.cs",
"chars": 22482,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Runtime.Compile"
},
{
"path": "AssetStudioGUI/AssetStudioGUI.csproj",
"chars": 3726,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<OutputType>WinExe</OutputType>\n\t\t<TargetFrameworks>net472;net5.0"
},
{
"path": "AssetStudioGUI/AssetStudioGUIForm.Designer.cs",
"chars": 70307,
"preview": "namespace AssetStudioGUI\n{\n partial class AssetStudioGUIForm\n {\n /// <summary>\n /// Required design"
},
{
"path": "AssetStudioGUI/AssetStudioGUIForm.cs",
"chars": 82482,
"preview": "using AssetStudio;\nusing Newtonsoft.Json;\nusing OpenTK;\nusing OpenTK.Graphics.OpenGL;\nusing System;\nusing System.Collec"
},
{
"path": "AssetStudioGUI/AssetStudioGUIForm.resx",
"chars": 7420,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "AssetStudioGUI/Components/AssetItem.cs",
"chars": 1054,
"preview": "using System.Windows.Forms;\nusing AssetStudio;\n\nnamespace AssetStudioGUI\n{\n internal class AssetItem : ListViewItem\n"
},
{
"path": "AssetStudioGUI/Components/GOHierarchy.cs",
"chars": 366,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Forms;\n\nname"
},
{
"path": "AssetStudioGUI/Components/GameObjectTreeNode.cs",
"chars": 335,
"preview": "using System.Windows.Forms;\nusing AssetStudio;\n\nnamespace AssetStudioGUI\n{\n internal class GameObjectTreeNode : Tree"
},
{
"path": "AssetStudioGUI/Components/OpenFolderDialog.cs",
"chars": 10440,
"preview": "using System;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\nusing System.Windows.Forms;\n"
},
{
"path": "AssetStudioGUI/Components/TypeTreeItem.cs",
"chars": 823,
"preview": "using System.Collections.Generic;\nusing System.Text;\nusing System.Windows.Forms;\nusing AssetStudio;\n\nnamespace AssetStu"
},
{
"path": "AssetStudioGUI/DirectBitmap.cs",
"chars": 1110,
"preview": "using System;\nusing System.Drawing;\nusing System.Drawing.Imaging;\nusing System.Runtime.InteropServices;\n\nnamespace Asse"
},
{
"path": "AssetStudioGUI/ExportOptions.Designer.cs",
"chars": 25140,
"preview": "namespace AssetStudioGUI\n{\n partial class ExportOptions\n {\n /// <summary>\n /// Required designer va"
},
{
"path": "AssetStudioGUI/ExportOptions.cs",
"chars": 3956,
"preview": "using AssetStudio;\nusing System;\nusing System.Windows.Forms;\n\nnamespace AssetStudioGUI\n{\n public partial class Expor"
},
{
"path": "AssetStudioGUI/ExportOptions.resx",
"chars": 5897,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "AssetStudioGUI/Exporter.cs",
"chars": 15967,
"preview": "using AssetStudio;\nusing Newtonsoft.Json;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing S"
},
{
"path": "AssetStudioGUI/GUILogger.cs",
"chars": 761,
"preview": "using AssetStudio;\nusing System;\nusing System.Windows.Forms;\n\nnamespace AssetStudioGUI\n{\n class GUILogger : ILogger\n"
},
{
"path": "AssetStudioGUI/Program.cs",
"chars": 616,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Fo"
},
{
"path": "AssetStudioGUI/Properties/Resources.Designer.cs",
"chars": 5644,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// 此代码由工具生成。\n/"
},
{
"path": "AssetStudioGUI/Properties/Resources.resx",
"chars": 7677,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "AssetStudioGUI/Properties/Settings.Designer.cs",
"chars": 10164,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// 此代码由工具生成。\n/"
},
{
"path": "AssetStudioGUI/Properties/Settings.settings",
"chars": 3035,
"preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
},
{
"path": "AssetStudioGUI/Studio.cs",
"chars": 29934,
"preview": "using AssetStudio;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Globalization"
},
{
"path": "AssetStudioUtility/AssemblyLoader.cs",
"chars": 1966,
"preview": "using Mono.Cecil;\nusing System.Collections.Generic;\nusing System.IO;\n\nnamespace AssetStudio\n{\n public class Assembly"
},
{
"path": "AssetStudioUtility/AssetStudioUtility.csproj",
"chars": 920,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>net472;netstandard2.0;net5.0;net6.0</TargetFr"
},
{
"path": "AssetStudioUtility/AudioClipConverter.cs",
"chars": 7143,
"preview": "using FMOD;\nusing System;\nusing System.Runtime.InteropServices;\nusing System.Text;\n\nnamespace AssetStudio\n{\n public "
},
{
"path": "AssetStudioUtility/CSspv/Disassembler.cs",
"chars": 5452,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace SpirV\n{\n\tpublic struct ModuleHeader\n\t{\n\t\tp"
},
{
"path": "AssetStudioUtility/CSspv/EnumValuesExtensions.cs",
"chars": 1071,
"preview": "#if NETSTANDARD1_0 || NETSTANDARD1_1 || NETSTANDARD1_2 || NETSTANDARD1_3 || NETSTANDARD1_4 || NETSTANDARD1_5 || NETSTAND"
},
{
"path": "AssetStudioUtility/CSspv/Instruction.cs",
"chars": 855,
"preview": "using System.Collections.Generic;\n\nnamespace SpirV\n{\n\tpublic enum OperandQuantifier\n\t{\n\t\t/// <summary>\n\t\t/// 1\n\t\t/// </s"
},
{
"path": "AssetStudioUtility/CSspv/LICENSE",
"chars": 1324,
"preview": "BSD 2-Clause License\n\nCopyright (c) 2017, Matthäus G. Chajdas\nAll rights reserved.\n\nRedistribution and use in source and"
},
{
"path": "AssetStudioUtility/CSspv/Module.cs",
"chars": 10718,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Runtime.InteropS"
},
{
"path": "AssetStudioUtility/CSspv/OperandType.cs",
"chars": 7171,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Linq;\nusing System.Reflection;\n\nnamespac"
},
{
"path": "AssetStudioUtility/CSspv/ParsedInstruction.cs",
"chars": 5954,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace SpirV\n{\n\tpublic class ParsedOperand\n\t{\n\t\tp"
},
{
"path": "AssetStudioUtility/CSspv/Reader.cs",
"chars": 976,
"preview": "using System;\nusing System.IO;\nusing System.Runtime.CompilerServices;\n\nnamespace SpirV\n{\n\tinternal sealed class Reader\n\t"
},
{
"path": "AssetStudioUtility/CSspv/SpirV.Core.Grammar.cs",
"chars": 185697,
"preview": "using System;\nusing System.Collections.Generic;\n\nnamespace SpirV\n{\n [Flags]\n public enum ImageOperands : uint\n "
},
{
"path": "AssetStudioUtility/CSspv/SpirV.Meta.cs",
"chars": 1667,
"preview": "using System.Collections.Generic;\n\nnamespace SpirV\n{\n\tinternal class Meta\n {\n public class ToolInfo\n {\n"
},
{
"path": "AssetStudioUtility/CSspv/Types.cs",
"chars": 7704,
"preview": "using System.Collections.Generic;\nusing System.Text;\n\nnamespace SpirV\n{\n\tpublic class Type\n\t{\n\t\tpublic virtual StringBui"
},
{
"path": "AssetStudioUtility/FMOD Studio API/fmod.cs",
"chars": 225825,
"preview": "/* ========================================================================================== */\n/* "
},
{
"path": "AssetStudioUtility/FMOD Studio API/fmod_dsp.cs",
"chars": 91737,
"preview": "/*$ preserve start $*/\n/* ========================================================================================== */\n"
},
{
"path": "AssetStudioUtility/FMOD Studio API/fmod_errors.cs",
"chars": 13201,
"preview": "/* =================================================================================================== */\n/* FMOD Studio"
},
{
"path": "AssetStudioUtility/ImageExtensions.cs",
"chars": 1818,
"preview": "using SixLabors.ImageSharp;\nusing SixLabors.ImageSharp.Formats.Bmp;\nusing SixLabors.ImageSharp.Formats.Tga;\nusing SixLa"
},
{
"path": "AssetStudioUtility/ImageFormat.cs",
"chars": 119,
"preview": "namespace AssetStudio\n{\n public enum ImageFormat\n {\n Jpeg,\n Png,\n Bmp,\n Tga\n }\n}\n"
},
{
"path": "AssetStudioUtility/ModelConverter.cs",
"chars": 47078,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace AssetStudio\n{\n publ"
},
{
"path": "AssetStudioUtility/ModelExporter.cs",
"chars": 600,
"preview": "namespace AssetStudio\n{\n public static class ModelExporter\n {\n public static void ExportFbx(string path, I"
},
{
"path": "AssetStudioUtility/MonoBehaviourConverter.cs",
"chars": 1081,
"preview": "using System.Collections.Generic;\n\nnamespace AssetStudio\n{\n public static class MonoBehaviourConverter\n {\n "
},
{
"path": "AssetStudioUtility/MyAssemblyResolver.cs",
"chars": 238,
"preview": "using Mono.Cecil;\n\nnamespace AssetStudio\n{\n public class MyAssemblyResolver : DefaultAssemblyResolver\n {\n "
},
{
"path": "AssetStudioUtility/SerializedTypeHelper.cs",
"chars": 15605,
"preview": "using System.Collections.Generic;\n\nnamespace AssetStudio\n{\n public class SerializedTypeHelper\n {\n private "
},
{
"path": "AssetStudioUtility/ShaderConverter.cs",
"chars": 43774,
"preview": "using K4os.Compression.LZ4;\nusing System;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing System."
},
{
"path": "AssetStudioUtility/Smolv/OpData.cs",
"chars": 15191,
"preview": "namespace Smolv\n{\n\tpublic struct OpData\n\t{\n\t\tpublic OpData(byte hasResult, byte hasType, sbyte deltaFromResult, byte var"
},
{
"path": "AssetStudioUtility/Smolv/SmolvDecoder.cs",
"chars": 10699,
"preview": "using System;\nusing System.IO;\nusing System.Text;\n\nnamespace Smolv\n{\n\tpublic static class SmolvDecoder\n\t{\n\t\tpublic stati"
},
{
"path": "AssetStudioUtility/Smolv/SpvOp.cs",
"chars": 8302,
"preview": "namespace Smolv\n{\n\tpublic enum SpvOp\n\t{\n\t\tNop = 0,\n\t\tUndef = 1,\n\t\tSourceContinued = 2,\n\t\tSource = 3,\n\t\tSourceExtension ="
},
{
"path": "AssetStudioUtility/SpirVShaderConverter.cs",
"chars": 2619,
"preview": "using Smolv;\nusing SpirV;\nusing System;\nusing System.IO;\nusing System.Text;\n\nnamespace AssetStudio\n{\n public static "
},
{
"path": "AssetStudioUtility/SpriteHelper.cs",
"chars": 8808,
"preview": "using SixLabors.ImageSharp;\nusing SixLabors.ImageSharp.Drawing;\nusing SixLabors.ImageSharp.Drawing.Processing;\nusing Si"
},
{
"path": "AssetStudioUtility/Texture2DConverter.cs",
"chars": 27223,
"preview": "using System;\nusing System.Runtime.CompilerServices;\nusing Texture2DDecoder;\n\nnamespace AssetStudio\n{\n public class "
},
{
"path": "AssetStudioUtility/Texture2DExtensions.cs",
"chars": 1449,
"preview": "using SixLabors.ImageSharp;\nusing SixLabors.ImageSharp.PixelFormats;\nusing SixLabors.ImageSharp.Processing;\nusing Syste"
},
{
"path": "AssetStudioUtility/TypeDefinitionConverter.cs",
"chars": 11638,
"preview": "using Mono.Cecil;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Unity.CecilTools;\nusing Unit"
},
{
"path": "AssetStudioUtility/Unity.CecilTools/CecilUtils.cs",
"chars": 2300,
"preview": "// Unity C# reference source\n// Copyright (c) Unity Technologies. For terms of use, see\n// https://unity3d.com/legal/lic"
},
{
"path": "AssetStudioUtility/Unity.CecilTools/ElementType.cs",
"chars": 604,
"preview": "// Unity C# reference source\n// Copyright (c) Unity Technologies. For terms of use, see\n// https://unity3d.com/legal/lic"
}
]
// ... and 44 more files (download for full content)
About this extraction
This page contains the full source code of the Perfare/AssetStudio GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 244 files (2.5 MB), approximately 660.7k tokens, and a symbol index with 3846 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.