some changes

This commit is contained in:
Perfare
2018-03-28 06:29:28 +08:00
parent f87390cc2b
commit e5104d5cc7
14 changed files with 493 additions and 517 deletions

View File

@@ -11,6 +11,7 @@ namespace UnityStudio
public long m_PathID;
public uint Offset;
public int Size;
public ClassIDReference Type;
public int Type1;
public int Type2;

View File

@@ -12,7 +12,7 @@ namespace UnityStudio
{
public EndianBinaryReader assetsFileReader;
public string filePath;
public string bundlePath;
public string parentPath;
public string fileName;
public string upperFileName;
public int fileGen;
@@ -220,7 +220,7 @@ namespace UnityStudio
assetsFileReader.endian = EndianType.LittleEndian;
}
platformStr = Enum.TryParse(platform.ToString(), out BuildTarget buildTarget) ? buildTarget.ToString() : "Unknown Platform";
platformStr = Enum.IsDefined(typeof(BuildTarget), platform) ? ((BuildTarget)platform).ToString() : "Unknown Platform";
int baseCount = assetsFileReader.ReadInt32();
for (int i = 0; i < baseCount; i++)
@@ -292,13 +292,15 @@ namespace UnityStudio
//but not the last!
}
if (ClassIDReference.Names.TryGetValue(asset.Type2, out var typeString))
if (Enum.IsDefined(typeof(ClassIDReference), asset.Type2))
{
asset.TypeString = typeString;
asset.Type = (ClassIDReference)asset.Type2;
asset.TypeString = asset.Type.ToString();
}
else
{
asset.TypeString = "Unknown Type " + asset.Type2;
asset.Type = ClassIDReference.UnknownType;
asset.TypeString = "UnknownType " + asset.Type2;
}
asset.uniqueID = i.ToString(assetIDfmt);
@@ -309,7 +311,7 @@ namespace UnityStudio
preloadTable.Add(asset.m_PathID, asset);
#region read BuildSettings to get version for unity 2.x files
if (asset.Type2 == 141 && fileGen == 6)
if (asset.Type == ClassIDReference.BuildSettings && fileGen == 6)
{
long nextAsset = assetsFileReader.Position;

View File

@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace UnityStudio
{
public enum BuildTarget
{
DashboardWidget = 1,
StandaloneOSX = 2,
StandaloneOSXPPC = 3,
StandaloneOSXIntel = 4,
StandaloneWindows,
WebPlayer,
WebPlayerStreamed,
Wii = 8,
iOS = 9,
PS3,
XBOX360,
Android = 13,
StandaloneGLESEmu = 14,
NaCl = 16,
StandaloneLinux = 17,
FlashPlayer = 18,
StandaloneWindows64 = 19,
WebGL,
WSAPlayer,
StandaloneLinux64 = 24,
StandaloneLinuxUniversal,
WP8Player,
StandaloneOSXIntel64,
BlackBerry,
Tizen,
PSP2,
PS4,
PSM,
XboxOne,
SamsungTV,
N3DS,
WiiU,
tvOS,
Switch,
NoTarget = -2
}
}

View File

@@ -1,277 +1,272 @@
using System.Collections.Generic;
namespace UnityStudio
namespace UnityStudio
{
public static class ClassIDReference
public enum ClassIDReference
{
public static Dictionary<int, string> Names = new Dictionary<int, string>()
{
{1, "GameObject"},
{2, "Component"},
{3, "LevelGameManager"},
{4, "Transform"},
{5, "TimeManager"},
{6, "GlobalGameManager"},
{8, "Behaviour"},
{9, "GameManager"},
{11, "AudioManager"},
{12, "ParticleAnimator"},
{13, "InputManager"},
{15, "EllipsoidParticleEmitter"},
{17, "Pipeline"},
{18, "EditorExtension"},
{19, "Physics2DSettings"},
{20, "Camera"},
{21, "Material"},
{23, "MeshRenderer"},
{25, "Renderer"},
{26, "ParticleRenderer"},
{27, "Texture"},
{28, "Texture2D"},
{29, "SceneSettings"},
{30, "GraphicsSettings"},
{33, "MeshFilter"},
{41, "OcclusionPortal"},
{43, "Mesh"},
{45, "Skybox"},
{47, "QualitySettings"},
{48, "Shader"},
{49, "TextAsset"},
{50, "Rigidbody2D"},
{51, "Physics2DManager"},
{53, "Collider2D"},
{54, "Rigidbody"},
{55, "PhysicsManager"},
{56, "Collider"},
{57, "Joint"},
{58, "CircleCollider2D"},
{59, "HingeJoint"},
{60, "PolygonCollider2D"},
{61, "BoxCollider2D"},
{62, "PhysicsMaterial2D"},
{64, "MeshCollider"},
{65, "BoxCollider"},
{66, "SpriteCollider2D"},
{68, "EdgeCollider2D"},
{70, "CapsuleCollider2D"},
{72, "ComputeShader"},
{74, "AnimationClip"},
{75, "ConstantForce"},
{76, "WorldParticleCollider"},
{78, "TagManager"},
{81, "AudioListener"},
{82, "AudioSource"},
{83, "AudioClip"},
{84, "RenderTexture"},
{86, "CustomRenderTexture"},
{87, "MeshParticleEmitter"},
{88, "ParticleEmitter"},
{89, "Cubemap"},
{90, "Avatar"},
{91, "AnimatorController"},
{92, "GUILayer"},
{93, "RuntimeAnimatorController"},
{94, "ScriptMapper"},
{95, "Animator"},
{96, "TrailRenderer"},
{98, "DelayedCallManager"},
{102, "TextMesh"},
{104, "RenderSettings"},
{108, "Light"},
{109, "CGProgram"},
{110, "BaseAnimationTrack"},
{111, "Animation"},
{114, "MonoBehaviour"},
{115, "MonoScript"},
{116, "MonoManager"},
{117, "Texture3D"},
{118, "NewAnimationTrack"},
{119, "Projector"},
{120, "LineRenderer"},
{121, "Flare"},
{122, "Halo"},
{123, "LensFlare"},
{124, "FlareLayer"},
{125, "HaloLayer"},
{126, "NavMeshAreas"},
{127, "HaloManager"},
{128, "Font"},
{129, "PlayerSettings"},
{130, "NamedObject"},
{131, "GUITexture"},
{132, "GUIText"},
{133, "GUIElement"},
{134, "PhysicMaterial"},
{135, "SphereCollider"},
{136, "CapsuleCollider"},
{137, "SkinnedMeshRenderer"},
{138, "FixedJoint"},
{140, "RaycastCollider"},
{141, "BuildSettings"},
{142, "AssetBundle"},
{143, "CharacterController"},
{144, "CharacterJoint"},
{145, "SpringJoint"},
{146, "WheelCollider"},
{147, "ResourceManager"},
{148, "NetworkView"},
{149, "NetworkManager"},
{150, "PreloadData"},
{152, "MovieTexture"},
{153, "ConfigurableJoint"},
{154, "TerrainCollider"},
{155, "MasterServerInterface"},
{156, "TerrainData"},
{157, "LightmapSettings"},
{158, "WebCamTexture"},
{159, "EditorSettings"},
{160, "InteractiveCloth"},
{161, "ClothRenderer"},
{162, "EditorUserSettings"},
{163, "SkinnedCloth"},
{164, "AudioReverbFilter"},
{165, "AudioHighPassFilter"},
{166, "AudioChorusFilter"},
{167, "AudioReverbZone"},
{168, "AudioEchoFilter"},
{169, "AudioLowPassFilter"},
{170, "AudioDistortionFilter"},
{171, "SparseTexture"},
{180, "AudioBehaviour"},
{181, "AudioFilter"},
{182, "WindZone"},
{183, "Cloth"},
{184, "SubstanceArchive"},
{185, "ProceduralMaterial"},
{186, "ProceduralTexture"},
{187, "Texture2DArray"},
{188, "CubemapArray"},
{191, "OffMeshLink"},
{192, "OcclusionArea"},
{193, "Tree"},
{194, "NavMeshObsolete"},
{195, "NavMeshAgent"},
{196, "NavMeshSettings"},
{197, "LightProbesLegacy"},
{198, "ParticleSystem"},
{199, "ParticleSystemRenderer"},
{200, "ShaderVariantCollection"},
{205, "LODGroup"},
{206, "BlendTree"},
{207, "Motion"},
{208, "NavMeshObstacle"},
{210, "TerrainInstance"},
{212, "SpriteRenderer"},
{213, "Sprite"},
{214, "CachedSpriteAtlas"},
{215, "ReflectionProbe"},
{216, "ReflectionProbes"},
{218, "Terrain"},
{220, "LightProbeGroup"},
{221, "AnimatorOverrideController"},
{222, "CanvasRenderer"},
{223, "Canvas"},
{224, "RectTransform"},
{225, "CanvasGroup"},
{226, "BillboardAsset"},
{227, "BillboardRenderer"},
{228, "SpeedTreeWindAsset"},
{229, "AnchoredJoint2D"},
{230, "Joint2D"},
{231, "SpringJoint2D"},
{232, "DistanceJoint2D"},
{233, "HingeJoint2D"},
{234, "SliderJoint2D"},
{235, "WheelJoint2D"},
{236, "ClusterInputManager"},
{237, "BaseVideoTexture"},
{238, "NavMeshData"},
{240, "AudioMixer"},
{241, "AudioMixerController"},
{243, "AudioMixerGroupController"},
{244, "AudioMixerEffectController"},
{245, "AudioMixerSnapshotController"},
{246, "PhysicsUpdateBehaviour2D"},
{247, "ConstantForce2D"},
{248, "Effector2D"},
{249, "AreaEffector2D"},
{250, "PointEffector2D"},
{251, "PlatformEffector2D"},
{252, "SurfaceEffector2D"},
{253, "BuoyancyEffector2D"},
{254, "RelativeJoint2D"},
{255, "FixedJoint2D"},
{256, "FrictionJoint2D"},
{257, "TargetJoint2D"},
{258, "LightProbes"},
{259, "LightProbeProxyVolume"},
{271, "SampleClip"},
{272, "AudioMixerSnapshot"},
{273, "AudioMixerGroup"},
{280, "NScreenBridge"},
{290, "AssetBundleManifest"},
{292, "UnityAdsManager"},
{300, "RuntimeInitializeOnLoadManager"},
{301, "CloudWebServicesManager"},
{303, "UnityAnalyticsManager"},
{304, "CrashReportManager"},
{305, "PerformanceReportingManager"},
{310, "UnityConnectSettings"},
{319, "AvatarMask"},
{328, "VideoPlayer"},
{329, "VideoClip"},
{363, "OcclusionCullingData"},
{1001, "Prefab"},
{1002, "EditorExtensionImpl"},
{1003, "AssetImporter"},
{1004, "AssetDatabase"},
{1005, "Mesh3DSImporter"},
{1006, "TextureImporter"},
{1007, "ShaderImporter"},
{1008, "ComputeShaderImporter"},
{1011, "AvatarMask"},
{1020, "AudioImporter"},
{1026, "HierarchyState"},
{1027, "GUIDSerializer"},
{1028, "AssetMetaData"},
{1029, "DefaultAsset"},
{1030, "DefaultImporter"},
{1031, "TextScriptImporter"},
{1032, "SceneAsset"},
{1034, "NativeFormatImporter"},
{1035, "MonoImporter"},
{1037, "AssetServerCache"},
{1038, "LibraryAssetImporter"},
{1040, "ModelImporter"},
{1041, "FBXImporter"},
{1042, "TrueTypeFontImporter"},
{1044, "MovieImporter"},
{1045, "EditorBuildSettings"},
{1046, "DDSImporter"},
{1048, "InspectorExpandedState"},
{1049, "AnnotationManager"},
{1050, "PluginImporter"},
{1051, "EditorUserBuildSettings"},
{1052, "PVRImporter"},
{1053, "ASTCImporter"},
{1054, "KTXImporter"},
{1101, "AnimatorStateTransition"},
{1102, "AnimatorState"},
{1105, "HumanTemplate"},
{1107, "AnimatorStateMachine"},
{1108, "PreviewAssetType"},
{1109, "AnimatorTransition"},
{1110, "SpeedTreeImporter"},
{1111, "AnimatorTransitionBase"},
{1112, "SubstanceImporter"},
{1113, "LightmapParameters"},
{1120, "LightmapSnapshot"},
{367388927, "SubDerived"},
{334799969, "SiblingDerived"},
{687078895, "SpriteAtlas"},
{1091556383, "Derived"},
{1480428607, "LowerResBlitTexture"},
{1571458007, "RenderPassAttachment"}
};
UnknownType = -1,
GameObject = 1,
Component = 2,
LevelGameManager = 3,
Transform = 4,
TimeManager = 5,
GlobalGameManager = 6,
Behaviour = 8,
GameManager = 9,
AudioManager = 11,
ParticleAnimator = 12,
InputManager = 13,
EllipsoidParticleEmitter = 15,
Pipeline = 17,
EditorExtension = 18,
Physics2DSettings = 19,
Camera = 20,
Material = 21,
MeshRenderer = 23,
Renderer = 25,
ParticleRenderer = 26,
Texture = 27,
Texture2D = 28,
SceneSettings = 29,
GraphicsSettings = 30,
MeshFilter = 33,
OcclusionPortal = 41,
Mesh = 43,
Skybox = 45,
QualitySettings = 47,
Shader = 48,
TextAsset = 49,
Rigidbody2D = 50,
Physics2DManager = 51,
Collider2D = 53,
Rigidbody = 54,
PhysicsManager = 55,
Collider = 56,
Joint = 57,
CircleCollider2D = 58,
HingeJoint = 59,
PolygonCollider2D = 60,
BoxCollider2D = 61,
PhysicsMaterial2D = 62,
MeshCollider = 64,
BoxCollider = 65,
SpriteCollider2D = 66,
EdgeCollider2D = 68,
CapsuleCollider2D = 70,
ComputeShader = 72,
AnimationClip = 74,
ConstantForce = 75,
WorldParticleCollider = 76,
TagManager = 78,
AudioListener = 81,
AudioSource = 82,
AudioClip = 83,
RenderTexture = 84,
CustomRenderTexture = 86,
MeshParticleEmitter = 87,
ParticleEmitter = 88,
Cubemap = 89,
Avatar = 90,
AnimatorController = 91,
GUILayer = 92,
RuntimeAnimatorController = 93,
ScriptMapper = 94,
Animator = 95,
TrailRenderer = 96,
DelayedCallManager = 98,
TextMesh = 102,
RenderSettings = 104,
Light = 108,
CGProgram = 109,
BaseAnimationTrack = 110,
Animation = 111,
MonoBehaviour = 114,
MonoScript = 115,
MonoManager = 116,
Texture3D = 117,
NewAnimationTrack = 118,
Projector = 119,
LineRenderer = 120,
Flare = 121,
Halo = 122,
LensFlare = 123,
FlareLayer = 124,
HaloLayer = 125,
NavMeshAreas = 126,
HaloManager = 127,
Font = 128,
PlayerSettings = 129,
NamedObject = 130,
GUITexture = 131,
GUIText = 132,
GUIElement = 133,
PhysicMaterial = 134,
SphereCollider = 135,
CapsuleCollider = 136,
SkinnedMeshRenderer = 137,
FixedJoint = 138,
RaycastCollider = 140,
BuildSettings = 141,
AssetBundle = 142,
CharacterController = 143,
CharacterJoint = 144,
SpringJoint = 145,
WheelCollider = 146,
ResourceManager = 147,
NetworkView = 148,
NetworkManager = 149,
PreloadData = 150,
MovieTexture = 152,
ConfigurableJoint = 153,
TerrainCollider = 154,
MasterServerInterface = 155,
TerrainData = 156,
LightmapSettings = 157,
WebCamTexture = 158,
EditorSettings = 159,
InteractiveCloth = 160,
ClothRenderer = 161,
EditorUserSettings = 162,
SkinnedCloth = 163,
AudioReverbFilter = 164,
AudioHighPassFilter = 165,
AudioChorusFilter = 166,
AudioReverbZone = 167,
AudioEchoFilter = 168,
AudioLowPassFilter = 169,
AudioDistortionFilter = 170,
SparseTexture = 171,
AudioBehaviour = 180,
AudioFilter = 181,
WindZone = 182,
Cloth = 183,
SubstanceArchive = 184,
ProceduralMaterial = 185,
ProceduralTexture = 186,
Texture2DArray = 187,
CubemapArray = 188,
OffMeshLink = 191,
OcclusionArea = 192,
Tree = 193,
NavMeshObsolete = 194,
NavMeshAgent = 195,
NavMeshSettings = 196,
LightProbesLegacy = 197,
ParticleSystem = 198,
ParticleSystemRenderer = 199,
ShaderVariantCollection = 200,
LODGroup = 205,
BlendTree = 206,
Motion = 207,
NavMeshObstacle = 208,
TerrainInstance = 210,
SpriteRenderer = 212,
Sprite = 213,
CachedSpriteAtlas = 214,
ReflectionProbe = 215,
ReflectionProbes = 216,
Terrain = 218,
LightProbeGroup = 220,
AnimatorOverrideController = 221,
CanvasRenderer = 222,
Canvas = 223,
RectTransform = 224,
CanvasGroup = 225,
BillboardAsset = 226,
BillboardRenderer = 227,
SpeedTreeWindAsset = 228,
AnchoredJoint2D = 229,
Joint2D = 230,
SpringJoint2D = 231,
DistanceJoint2D = 232,
HingeJoint2D = 233,
SliderJoint2D = 234,
WheelJoint2D = 235,
ClusterInputManager = 236,
BaseVideoTexture = 237,
NavMeshData = 238,
AudioMixer = 240,
AudioMixerController = 241,
AudioMixerGroupController = 243,
AudioMixerEffectController = 244,
AudioMixerSnapshotController = 245,
PhysicsUpdateBehaviour2D = 246,
ConstantForce2D = 247,
Effector2D = 248,
AreaEffector2D = 249,
PointEffector2D = 250,
PlatformEffector2D = 251,
SurfaceEffector2D = 252,
BuoyancyEffector2D = 253,
RelativeJoint2D = 254,
FixedJoint2D = 255,
FrictionJoint2D = 256,
TargetJoint2D = 257,
LightProbes = 258,
LightProbeProxyVolume = 259,
SampleClip = 271,
AudioMixerSnapshot = 272,
AudioMixerGroup = 273,
NScreenBridge = 280,
AssetBundleManifest = 290,
UnityAdsManager = 292,
RuntimeInitializeOnLoadManager = 300,
CloudWebServicesManager = 301,
UnityAnalyticsManager = 303,
CrashReportManager = 304,
PerformanceReportingManager = 305,
UnityConnectSettings = 310,
AvatarMask = 319,
VideoPlayer = 328,
VideoClip = 329,
OcclusionCullingData = 363,
Prefab = 1001,
EditorExtensionImpl = 1002,
AssetImporter = 1003,
AssetDatabase = 1004,
Mesh3DSImporter = 1005,
TextureImporter = 1006,
ShaderImporter = 1007,
ComputeShaderImporter = 1008,
AudioImporter = 1020,
HierarchyState = 1026,
GUIDSerializer = 1027,
AssetMetaData = 1028,
DefaultAsset = 1029,
DefaultImporter = 1030,
TextScriptImporter = 1031,
SceneAsset = 1032,
NativeFormatImporter = 1034,
MonoImporter = 1035,
AssetServerCache = 1037,
LibraryAssetImporter = 1038,
ModelImporter = 1040,
FBXImporter = 1041,
TrueTypeFontImporter = 1042,
MovieImporter = 1044,
EditorBuildSettings = 1045,
DDSImporter = 1046,
InspectorExpandedState = 1048,
AnnotationManager = 1049,
PluginImporter = 1050,
EditorUserBuildSettings = 1051,
PVRImporter = 1052,
ASTCImporter = 1053,
KTXImporter = 1054,
AnimatorStateTransition = 1101,
AnimatorState = 1102,
HumanTemplate = 1105,
AnimatorStateMachine = 1107,
PreviewAssetType = 1108,
AnimatorTransition = 1109,
SpeedTreeImporter = 1110,
AnimatorTransitionBase = 1111,
SubstanceImporter = 1112,
LightmapParameters = 1113,
LightmapSnapshot = 1120,
SubDerived = 367388927,
SiblingDerived = 334799969,
SpriteAtlas = 687078895,
Derived = 1091556383,
LowerResBlitTexture = 1480428607,
RenderPassAttachment = 1571458007
}
}

View File

@@ -1,135 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace UnityStudio
{
public enum TextureFormat
{
Alpha8 = 1,
ARGB4444,
RGB24,
RGBA32,
ARGB32,
RGB565 = 7,
R16 = 9,
DXT1,
DXT5 = 12,
RGBA4444,
BGRA32,
RHalf,
RGHalf,
RGBAHalf,
RFloat,
RGFloat,
RGBAFloat,
YUY2,
RGB9e5Float,
BC4 = 26,
BC5,
BC6H = 24,
BC7,
DXT1Crunched = 28,
DXT5Crunched,
PVRTC_RGB2,
PVRTC_RGBA2,
PVRTC_RGB4,
PVRTC_RGBA4,
ETC_RGB4,
ATC_RGB4,
ATC_RGBA8,
EAC_R = 41,
EAC_R_SIGNED,
EAC_RG,
EAC_RG_SIGNED,
ETC2_RGB,
ETC2_RGBA1,
ETC2_RGBA8,
ASTC_RGB_4x4,
ASTC_RGB_5x5,
ASTC_RGB_6x6,
ASTC_RGB_8x8,
ASTC_RGB_10x10,
ASTC_RGB_12x12,
ASTC_RGBA_4x4,
ASTC_RGBA_5x5,
ASTC_RGBA_6x6,
ASTC_RGBA_8x8,
ASTC_RGBA_10x10,
ASTC_RGBA_12x12,
ETC_RGB4_3DS,
ETC_RGBA8_3DS,
RG16,
R8,
ETC_RGB4Crunched,
ETC2_RGBA8Crunched,
}
public enum AudioType
{
UNKNOWN,
ACC,
AIFF,
IT = 10,
MOD = 12,
MPEG,
OGGVORBIS,
S3M = 17,
WAV = 20,
XM,
XMA,
VAG,
AUDIOQUEUE
}
public enum AudioCompressionFormat
{
PCM,
Vorbis,
ADPCM,
MP3,
VAG,
HEVAG,
XMA,
AAC,
GCADPCM,
ATRAC9
}
public enum BuildTarget
{
StandaloneOSX = 2,
StandaloneOSXIntel = 4,
StandaloneWindows,
WebPlayer,
WebPlayerStreamed,
iOS = 9,
PS3,
XBOX360,
Android = 13,
StandaloneLinux = 17,
StandaloneWindows64 = 19,
WebGL,
WSAPlayer,
StandaloneLinux64 = 24,
StandaloneLinuxUniversal,
WP8Player,
StandaloneOSXIntel64,
BlackBerry,
Tizen,
PSP2,
PS4,
PSM,
XboxOne,
SamsungTV,
N3DS,
WiiU,
tvOS,
Switch,
iPhone = -1,
BB10 = -1,
MetroPlayer = -1,
NoTarget = -2
}
}

View File

@@ -226,7 +226,7 @@ namespace UnityStudio
{
foreach (var asset in exportableAssets)
{
if (asset.Type2 == 28 && asset.Text == texName)
if (asset.Type == ClassIDReference.Texture2D && asset.Text == texName)
{
TexturePD = asset;
break;
@@ -237,7 +237,7 @@ namespace UnityStudio
}
#endregion
if (TexturePD != null && TexturePD.Type2 == 28)
if (TexturePD != null && TexturePD.Type == ClassIDReference.Texture2D)
{
Textures.Add(TexturePD);

View File

@@ -30,7 +30,7 @@ namespace UnityStudio
}
}
private static void LoadAssetsFile(string fullName, EndianBinaryReader reader)
private static void LoadAssetsFile(string fullName, EndianBinaryReader reader, string parentPath = null)
{
var fileName = Path.GetFileName(fullName);
StatusStripUpdate("Loading " + fileName);
@@ -39,6 +39,7 @@ namespace UnityStudio
var assetsFile = new AssetsFile(fullName, reader);
if (assetsFile.valid)
{
assetsFile.parentPath = parentPath;
assetsfileList.Add(assetsFile);
assetsfileListHash.Add(assetsFile.upperFileName);
@@ -90,14 +91,17 @@ namespace UnityStudio
if (value > 0)
ProgressBarMaximumAdd(value);
}
else
reader.Dispose();
}
}
private static void LoadBundleFile(string fullName, EndianBinaryReader reader)
private static void LoadBundleFile(string fullName, EndianBinaryReader reader, string parentPath = null)
{
var fileName = Path.GetFileName(fullName);
StatusStripUpdate("Decompressing " + fileName);
var bundleFile = new BundleFile(reader);
reader.Dispose();
foreach (var file in bundleFile.fileList)
{
if (!assetsfileListHash.Contains(file.fileName.ToUpper()))
@@ -106,7 +110,7 @@ namespace UnityStudio
var assetsFile = new AssetsFile(Path.GetDirectoryName(fullName) + "\\" + file.fileName, new EndianBinaryReader(file.stream));
if (assetsFile.valid)
{
assetsFile.bundlePath = fullName;
assetsFile.parentPath = parentPath ?? fullName;
if (assetsFile.fileGen == 6) //2.6.x and earlier don't have a string version before the preload table
{
@@ -125,25 +129,24 @@ namespace UnityStudio
}
}
}
reader.Dispose();
}
private static void LoadWebFile(string fullName, EndianBinaryReader reader)
{
var fileName = Path.GetFileName(fullName);
StatusStripUpdate("Loading " + fileName);
var bundleFile = new WebFile(reader);
var webFile = new WebFile(reader);
reader.Dispose();
foreach (var file in bundleFile.fileList)
foreach (var file in webFile.fileList)
{
var dummyName = Path.GetDirectoryName(fullName) + "\\" + file.fileName;
switch (CheckFileType(file.stream, out reader))
{
case FileType.AssetsFile:
LoadAssetsFile(dummyName, reader);
LoadAssetsFile(dummyName, reader, fullName);
break;
case FileType.BundleFile:
LoadBundleFile(dummyName, reader);
LoadBundleFile(dummyName, reader, fullName);
break;
case FileType.WebFile:
LoadWebFile(dummyName, reader);

View File

@@ -88,117 +88,99 @@ namespace UnityStudio
{
asset.uniqueID = fileID + asset.uniqueID;
var exportable = false;
switch (asset.Type2)
switch (asset.Type)
{
case 1: //GameObject
case ClassIDReference.GameObject:
{
GameObject m_GameObject = new GameObject(asset);
assetsFile.GameObjectList.Add(asset.m_PathID, m_GameObject);
//totalTreeNodes++;
break;
}
case 4: //Transform
case ClassIDReference.Transform:
{
Transform m_Transform = new Transform(asset);
assetsFile.TransformList.Add(asset.m_PathID, m_Transform);
break;
}
case 224: //RectTransform
case ClassIDReference.RectTransform:
{
RectTransform m_Rect = new RectTransform(asset);
assetsFile.TransformList.Add(asset.m_PathID, m_Rect.m_Transform);
break;
}
case 28: //Texture2D
case ClassIDReference.Texture2D:
{
Texture2D m_Texture2D = new Texture2D(asset, false);
exportable = true;
break;
}
case 48: //Shader
case ClassIDReference.Shader:
{
Shader m_Shader = new Shader(asset, false);
exportable = true;
break;
}
case 49: //TextAsset
case ClassIDReference.TextAsset:
{
TextAsset m_TextAsset = new TextAsset(asset, false);
exportable = true;
break;
}
case 83: //AudioClip
case ClassIDReference.AudioClip:
{
AudioClip m_AudioClip = new AudioClip(asset, false);
exportable = true;
break;
}
case 114: //MonoBehaviour
case ClassIDReference.MonoBehaviour:
{
var m_MonoBehaviour = new MonoBehaviour(asset, false);
if (asset.Type1 != asset.Type2 && assetsFile.ClassStructures.ContainsKey(asset.Type1))
exportable = true;
break;
}
case 128: //Font
case ClassIDReference.Font:
{
UnityFont m_Font = new UnityFont(asset, false);
exportable = true;
break;
}
case 129: //PlayerSettings
case ClassIDReference.PlayerSettings:
{
var plSet = new PlayerSettings(asset);
productName = plSet.productName;
break;
}
case 43: //Mesh
case ClassIDReference.Mesh:
{
Mesh m_Mesh = new Mesh(asset, false);
exportable = true;
break;
}
case 142: //AssetBundle
case ClassIDReference.AssetBundle:
{
ab = new AssetBundle(asset);
break;
}
case 329: //VideoClip
case ClassIDReference.VideoClip:
{
var m_VideoClip = new VideoClip(asset, false);
exportable = true;
break;
}
case 152: //MovieTexture
case ClassIDReference.MovieTexture:
{
var m_MovieTexture = new MovieTexture(asset, false);
exportable = true;
break;
}
case 213: //Sprite
case ClassIDReference.Sprite:
{
var m_Sprite = new Sprite(asset, false);
exportable = true;
break;
}
/*case 21: //Material
case 74: //AnimationClip
case 90: //Avatar
case 91: //AnimatorController
case 115: //MonoScript
case 687078895: //SpriteAtlas
{
if (asset.Offset + 4 > asset.sourceFile.a_Stream.BaseStream.Length)
break;
asset.sourceFile.a_Stream.Position = asset.Offset;
var len = asset.sourceFile.a_Stream.ReadInt32();
if (len > 0 && len < asset.Size - 4)
{
var bytes = asset.sourceFile.a_Stream.ReadBytes(len);
asset.Text = Encoding.UTF8.GetString(bytes);
}
break;
}*/
}
if (!exportable && displayAll)
{
@@ -267,24 +249,24 @@ namespace UnityStudio
var sourceFile = assetsfileList[m_Component.m_FileID];
if (sourceFile.preloadTable.TryGetValue(m_Component.m_PathID, out var asset))
{
switch (asset.Type2)
switch (asset.Type)
{
case 4: //Transform
case ClassIDReference.Transform:
{
m_GameObject.m_Transform = m_Component;
break;
}
case 23: //MeshRenderer
case ClassIDReference.MeshRenderer:
{
m_GameObject.m_MeshRenderer = m_Component;
break;
}
case 33: //MeshFilter
case ClassIDReference.MeshFilter:
{
m_GameObject.m_MeshFilter = m_Component;
break;
}
case 137: //SkinnedMeshRenderer
case ClassIDReference.SkinnedMeshRenderer:
{
m_GameObject.m_SkinnedMeshRenderer = m_Component;
break;

View File

@@ -1,540 +0,0 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
namespace UnityStudio
{
partial class Texture2D
{
[DllImport("PVRTexLibWrapper.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern bool DecompressPVR(byte[] buffer, IntPtr bmp, int len);
[DllImport("TextureConverterWrapper.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern bool Ponvert(byte[] buffer, IntPtr bmp, int nWidth, int nHeight, int len, int type, int bmpsize, bool fixAlpha);
[DllImport("crunch.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern bool DecompressCRN(byte[] pSrc_file_data, int src_file_size, out IntPtr uncompressedData, out int uncompressedSize);
[DllImport("crunchunity.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern bool DecompressUnityCRN(byte[] pSrc_file_data, int src_file_size, out IntPtr uncompressedData, out int uncompressedSize);
[DllImport("texgenpack.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern void texgenpackdecode(int texturetype, byte[] texturedata, int width, int height, IntPtr bmp, bool fixAlpha);
public byte[] ConvertToContainer()
{
if (image_data == null || image_data.Length == 0)
return null;
switch (m_TextureFormat)
{
case TextureFormat.Alpha8:
case TextureFormat.ARGB4444:
case TextureFormat.RGB24:
case TextureFormat.RGBA32:
case TextureFormat.ARGB32:
case TextureFormat.RGB565:
case TextureFormat.R16:
case TextureFormat.DXT1:
case TextureFormat.DXT5:
case TextureFormat.RGBA4444:
case TextureFormat.BGRA32:
case TextureFormat.RG16:
case TextureFormat.R8:
return ConvertToDDS();
case TextureFormat.YUY2:
case TextureFormat.PVRTC_RGB2:
case TextureFormat.PVRTC_RGBA2:
case TextureFormat.PVRTC_RGB4:
case TextureFormat.PVRTC_RGBA4:
case TextureFormat.ETC_RGB4:
case TextureFormat.ETC2_RGB:
case TextureFormat.ETC2_RGBA1:
case TextureFormat.ETC2_RGBA8:
case TextureFormat.ASTC_RGB_4x4:
case TextureFormat.ASTC_RGB_5x5:
case TextureFormat.ASTC_RGB_6x6:
case TextureFormat.ASTC_RGB_8x8:
case TextureFormat.ASTC_RGB_10x10:
case TextureFormat.ASTC_RGB_12x12:
case TextureFormat.ASTC_RGBA_4x4:
case TextureFormat.ASTC_RGBA_5x5:
case TextureFormat.ASTC_RGBA_6x6:
case TextureFormat.ASTC_RGBA_8x8:
case TextureFormat.ASTC_RGBA_10x10:
case TextureFormat.ASTC_RGBA_12x12:
case TextureFormat.ETC_RGB4_3DS:
case TextureFormat.ETC_RGBA8_3DS:
return ConvertToPVR();
case TextureFormat.RHalf:
case TextureFormat.RGHalf:
case TextureFormat.RGBAHalf:
case TextureFormat.RFloat:
case TextureFormat.RGFloat:
case TextureFormat.RGBAFloat:
case TextureFormat.BC4:
case TextureFormat.BC5:
case TextureFormat.BC6H:
case TextureFormat.BC7:
case TextureFormat.ATC_RGB4:
case TextureFormat.ATC_RGBA8:
case TextureFormat.EAC_R:
case TextureFormat.EAC_R_SIGNED:
case TextureFormat.EAC_RG:
case TextureFormat.EAC_RG_SIGNED:
return ConvertToKTX();
default:
return image_data;
}
}
private byte[] ConvertToDDS()
{
var imageBuffer = new byte[128 + image_data_size];
dwMagic.CopyTo(imageBuffer, 0);
BitConverter.GetBytes(dwFlags).CopyTo(imageBuffer, 8);
BitConverter.GetBytes(m_Height).CopyTo(imageBuffer, 12);
BitConverter.GetBytes(m_Width).CopyTo(imageBuffer, 16);
BitConverter.GetBytes(dwPitchOrLinearSize).CopyTo(imageBuffer, 20);
BitConverter.GetBytes(dwMipMapCount).CopyTo(imageBuffer, 28);
BitConverter.GetBytes(dwSize).CopyTo(imageBuffer, 76);
BitConverter.GetBytes(dwFlags2).CopyTo(imageBuffer, 80);
BitConverter.GetBytes(dwFourCC).CopyTo(imageBuffer, 84);
BitConverter.GetBytes(dwRGBBitCount).CopyTo(imageBuffer, 88);
BitConverter.GetBytes(dwRBitMask).CopyTo(imageBuffer, 92);
BitConverter.GetBytes(dwGBitMask).CopyTo(imageBuffer, 96);
BitConverter.GetBytes(dwBBitMask).CopyTo(imageBuffer, 100);
BitConverter.GetBytes(dwABitMask).CopyTo(imageBuffer, 104);
BitConverter.GetBytes(dwCaps).CopyTo(imageBuffer, 108);
BitConverter.GetBytes(dwCaps2).CopyTo(imageBuffer, 112);
image_data.CopyTo(imageBuffer, 128);
return imageBuffer;
}
private byte[] ConvertToPVR()
{
var mstream = new MemoryStream();
using (var writer = new BinaryWriter(mstream))
{
writer.Write(pvrVersion);
writer.Write(pvrFlags);
writer.Write(pvrPixelFormat);
writer.Write(pvrColourSpace);
writer.Write(pvrChannelType);
writer.Write(m_Height);
writer.Write(m_Width);
writer.Write(pvrDepth);
writer.Write(pvrNumSurfaces);
writer.Write(pvrNumFaces);
writer.Write(dwMipMapCount);
writer.Write(pvrMetaDataSize);
writer.Write(image_data);
return mstream.ToArray();
}
}
private byte[] ConvertToKTX()
{
var mstream = new MemoryStream();
using (var writer = new BinaryWriter(mstream))
{
writer.Write(KTXHeader.IDENTIFIER);
writer.Write(KTXHeader.ENDIANESS_LE);
writer.Write(glType);
writer.Write(glTypeSize);
writer.Write(glFormat);
writer.Write(glInternalFormat);
writer.Write(glBaseInternalFormat);
writer.Write(m_Width);
writer.Write(m_Height);
writer.Write(pixelDepth);
writer.Write(numberOfArrayElements);
writer.Write(numberOfFaces);
writer.Write(numberOfMipmapLevels);
writer.Write(bytesOfKeyValueData);
writer.Write(image_data_size);
writer.Write(image_data);
return mstream.ToArray();
}
}
public Bitmap ConvertToBitmap(bool flip)
{
if (image_data == null || image_data.Length == 0)
return null;
Bitmap bitmap;
switch (m_TextureFormat)
{
case TextureFormat.Alpha8:
case TextureFormat.ARGB4444:
case TextureFormat.RGB24:
case TextureFormat.RGBA32:
case TextureFormat.ARGB32:
case TextureFormat.R16:
case TextureFormat.RGBA4444:
case TextureFormat.BGRA32:
case TextureFormat.RG16:
case TextureFormat.R8:
bitmap = BGRA32ToBitmap();
break;
case TextureFormat.RGB565:
bitmap = RGB565ToBitmap();
break;
case TextureFormat.YUY2:
case TextureFormat.PVRTC_RGB2:
case TextureFormat.PVRTC_RGBA2:
case TextureFormat.PVRTC_RGB4:
case TextureFormat.PVRTC_RGBA4:
case TextureFormat.ETC_RGB4:
case TextureFormat.ETC2_RGB:
case TextureFormat.ETC2_RGBA1:
case TextureFormat.ETC2_RGBA8:
case TextureFormat.ASTC_RGB_4x4:
case TextureFormat.ASTC_RGB_5x5:
case TextureFormat.ASTC_RGB_6x6:
case TextureFormat.ASTC_RGB_8x8:
case TextureFormat.ASTC_RGB_10x10:
case TextureFormat.ASTC_RGB_12x12:
case TextureFormat.ASTC_RGBA_4x4:
case TextureFormat.ASTC_RGBA_5x5:
case TextureFormat.ASTC_RGBA_6x6:
case TextureFormat.ASTC_RGBA_8x8:
case TextureFormat.ASTC_RGBA_10x10:
case TextureFormat.ASTC_RGBA_12x12:
case TextureFormat.ETC_RGB4_3DS:
case TextureFormat.ETC_RGBA8_3DS:
bitmap = PVRToBitmap(ConvertToPVR());
break;
case TextureFormat.DXT1:
case TextureFormat.DXT5:
case TextureFormat.RHalf:
case TextureFormat.RGHalf:
case TextureFormat.RGBAHalf:
case TextureFormat.RFloat:
case TextureFormat.RGFloat:
case TextureFormat.RGBAFloat:
case TextureFormat.RGB9e5Float:
case TextureFormat.ATC_RGB4:
case TextureFormat.ATC_RGBA8:
case TextureFormat.EAC_R:
case TextureFormat.EAC_R_SIGNED:
case TextureFormat.EAC_RG:
case TextureFormat.EAC_RG_SIGNED:
bitmap = TextureConverter();
break;
case TextureFormat.BC4:
case TextureFormat.BC5:
case TextureFormat.BC6H:
case TextureFormat.BC7:
bitmap = Texgenpack();
break;
case TextureFormat.DXT1Crunched:
case TextureFormat.DXT5Crunched:
DecompressCRN();
bitmap = TextureConverter();
break;
case TextureFormat.ETC_RGB4Crunched:
case TextureFormat.ETC2_RGBA8Crunched:
DecompressCRN();
bitmap = PVRToBitmap(ConvertToPVR());
break;
default:
return null;
}
if (bitmap != null && flip)
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
return bitmap;
}
private Bitmap BGRA32ToBitmap()
{
var hObject = GCHandle.Alloc(image_data, GCHandleType.Pinned);
var pObject = hObject.AddrOfPinnedObject();
var bitmap = new Bitmap(m_Width, m_Height, m_Width * 4, PixelFormat.Format32bppArgb, pObject);
hObject.Free();
return bitmap;
}
private Bitmap RGB565ToBitmap()
{
//stride = m_Width * 2 + m_Width * 2 % 4
//所以m_Width * 2不为4的倍数时需要在每行补上相应的像素
byte[] buff;
var padding = m_Width * 2 % 4;
var stride = m_Width * 2 + padding;
if (padding != 0)
{
buff = new byte[stride * m_Height];
for (int i = 0; i < m_Height; i++)
{
Array.Copy(image_data, i * m_Width * 2, buff, i * stride, m_Width * 2);
}
}
else
{
buff = image_data;
}
var hObject = GCHandle.Alloc(buff, GCHandleType.Pinned);
var pObject = hObject.AddrOfPinnedObject();
var bitmap = new Bitmap(m_Width, m_Height, stride, PixelFormat.Format16bppRgb565, pObject);
hObject.Free();
return bitmap;
}
private Bitmap PVRToBitmap(byte[] pvrdata)
{
var bitmap = new Bitmap(m_Width, m_Height);
var rect = new Rectangle(0, 0, m_Width, m_Height);
var bmd = bitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
var len = Math.Abs(bmd.Stride) * bmd.Height;
if (!DecompressPVR(pvrdata, bmd.Scan0, len))
{
bitmap.UnlockBits(bmd);
bitmap.Dispose();
return null;
}
bitmap.UnlockBits(bmd);
return bitmap;
}
private Bitmap TextureConverter()
{
var bitmap = new Bitmap(m_Width, m_Height);
var rect = new Rectangle(0, 0, m_Width, m_Height);
var bmd = bitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
var len = Math.Abs(bmd.Stride) * bmd.Height;
var fixAlpha = glBaseInternalFormat == KTXHeader.GL_RED || glBaseInternalFormat == KTXHeader.GL_RG;
if (!Ponvert(image_data, bmd.Scan0, m_Width, m_Height, image_data_size, (int)q_format, len, fixAlpha))
{
bitmap.UnlockBits(bmd);
bitmap.Dispose();
return null;
}
bitmap.UnlockBits(bmd);
return bitmap;
}
private void DecompressCRN()
{
IntPtr uncompressedData;
int uncompressedSize;
bool result;
if (version[0] > 2017 || (version[0] == 2017 && version[1] >= 3)) //2017.3 and up
{
result = DecompressUnityCRN(image_data, image_data_size, out uncompressedData, out uncompressedSize);
}
else
{
result = DecompressCRN(image_data, image_data_size, out uncompressedData, out uncompressedSize);
}
if (result)
{
var uncompressedBytes = new byte[uncompressedSize];
Marshal.Copy(uncompressedData, uncompressedBytes, 0, uncompressedSize);
Marshal.FreeHGlobal(uncompressedData);
image_data = uncompressedBytes;
image_data_size = uncompressedSize;
}
}
private Bitmap Texgenpack()
{
var bitmap = new Bitmap(m_Width, m_Height);
var rect = new Rectangle(0, 0, m_Width, m_Height);
var bmd = bitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
var fixAlpha = glBaseInternalFormat == KTXHeader.GL_RED || glBaseInternalFormat == KTXHeader.GL_RG;
texgenpackdecode((int)texturetype, image_data, m_Width, m_Height, bmd.Scan0, fixAlpha);
bitmap.UnlockBits(bmd);
return bitmap;
}
}
public static class KTXHeader
{
public static byte[] IDENTIFIER = { 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A };
public static byte[] ENDIANESS_LE = { 1, 2, 3, 4 };
public static byte[] ENDIANESS_BE = { 4, 3, 2, 1 };
// constants for glInternalFormat
public static int GL_ETC1_RGB8_OES = 0x8D64;
public static int GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00;
public static int GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01;
public static int GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02;
public static int GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03;
public static int GL_ATC_RGB_AMD = 0x8C92;
public static int GL_ATC_RGBA_EXPLICIT_ALPHA_AMD = 0x8C93;
public static int GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 0x87EE;
public static int GL_COMPRESSED_RGB8_ETC2 = 0x9274;
public static int GL_COMPRESSED_SRGB8_ETC2 = 0x9275;
public static int GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276;
public static int GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277;
public static int GL_COMPRESSED_RGBA8_ETC2_EAC = 0x9278;
public static int GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279;
public static int GL_COMPRESSED_R11_EAC = 0x9270;
public static int GL_COMPRESSED_SIGNED_R11_EAC = 0x9271;
public static int GL_COMPRESSED_RG11_EAC = 0x9272;
public static int GL_COMPRESSED_SIGNED_RG11_EAC = 0x9273;
public static int GL_COMPRESSED_RED_RGTC1 = 0x8DBB;
public static int GL_COMPRESSED_RG_RGTC2 = 0x8DBD;
public static int GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F;
public static int GL_COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C;
public static int GL_R16F = 0x822D;
public static int GL_RG16F = 0x822F;
public static int GL_RGBA16F = 0x881A;
public static int GL_R32F = 0x822E;
public static int GL_RG32F = 0x8230;
public static int GL_RGBA32F = 0x8814;
// constants for glBaseInternalFormat
public static int GL_RED = 0x1903;
public static int GL_GREEN = 0x1904;
public static int GL_BLUE = 0x1905;
public static int GL_ALPHA = 0x1906;
public static int GL_RGB = 0x1907;
public static int GL_RGBA = 0x1908;
public static int GL_RG = 0x8227;
}
//from TextureConverter.h
public enum QFORMAT
{
// General formats
Q_FORMAT_RGBA_8UI = 1,
Q_FORMAT_RGBA_8I,
Q_FORMAT_RGB5_A1UI,
Q_FORMAT_RGBA_4444,
Q_FORMAT_RGBA_16UI,
Q_FORMAT_RGBA_16I,
Q_FORMAT_RGBA_32UI,
Q_FORMAT_RGBA_32I,
Q_FORMAT_PALETTE_8_RGBA_8888,
Q_FORMAT_PALETTE_8_RGBA_5551,
Q_FORMAT_PALETTE_8_RGBA_4444,
Q_FORMAT_PALETTE_4_RGBA_8888,
Q_FORMAT_PALETTE_4_RGBA_5551,
Q_FORMAT_PALETTE_4_RGBA_4444,
Q_FORMAT_PALETTE_1_RGBA_8888,
Q_FORMAT_PALETTE_8_RGB_888,
Q_FORMAT_PALETTE_8_RGB_565,
Q_FORMAT_PALETTE_4_RGB_888,
Q_FORMAT_PALETTE_4_RGB_565,
Q_FORMAT_R2_GBA10UI,
Q_FORMAT_RGB10_A2UI,
Q_FORMAT_RGB10_A2I,
Q_FORMAT_RGBA_F,
Q_FORMAT_RGBA_HF,
Q_FORMAT_RGB9_E5, // Last five bits are exponent bits (Read following section in GLES3 spec: "3.8.17 Shared Exponent Texture Color Conversion")
Q_FORMAT_RGB_8UI,
Q_FORMAT_RGB_8I,
Q_FORMAT_RGB_565,
Q_FORMAT_RGB_16UI,
Q_FORMAT_RGB_16I,
Q_FORMAT_RGB_32UI,
Q_FORMAT_RGB_32I,
Q_FORMAT_RGB_F,
Q_FORMAT_RGB_HF,
Q_FORMAT_RGB_11_11_10_F,
Q_FORMAT_RG_F,
Q_FORMAT_RG_HF,
Q_FORMAT_RG_32UI,
Q_FORMAT_RG_32I,
Q_FORMAT_RG_16I,
Q_FORMAT_RG_16UI,
Q_FORMAT_RG_8I,
Q_FORMAT_RG_8UI,
Q_FORMAT_RG_S88,
Q_FORMAT_R_32UI,
Q_FORMAT_R_32I,
Q_FORMAT_R_F,
Q_FORMAT_R_16F,
Q_FORMAT_R_16I,
Q_FORMAT_R_16UI,
Q_FORMAT_R_8I,
Q_FORMAT_R_8UI,
Q_FORMAT_LUMINANCE_ALPHA_88,
Q_FORMAT_LUMINANCE_8,
Q_FORMAT_ALPHA_8,
Q_FORMAT_LUMINANCE_ALPHA_F,
Q_FORMAT_LUMINANCE_F,
Q_FORMAT_ALPHA_F,
Q_FORMAT_LUMINANCE_ALPHA_HF,
Q_FORMAT_LUMINANCE_HF,
Q_FORMAT_ALPHA_HF,
Q_FORMAT_DEPTH_16,
Q_FORMAT_DEPTH_24,
Q_FORMAT_DEPTH_24_STENCIL_8,
Q_FORMAT_DEPTH_32,
Q_FORMAT_BGR_565,
Q_FORMAT_BGRA_8888,
Q_FORMAT_BGRA_5551,
Q_FORMAT_BGRX_8888,
Q_FORMAT_BGRA_4444,
// Compressed formats
Q_FORMAT_ATITC_RGBA,
Q_FORMAT_ATC_RGBA_EXPLICIT_ALPHA = Q_FORMAT_ATITC_RGBA,
Q_FORMAT_ATITC_RGB,
Q_FORMAT_ATC_RGB = Q_FORMAT_ATITC_RGB,
Q_FORMAT_ATC_RGBA_INTERPOLATED_ALPHA,
Q_FORMAT_ETC1_RGB8,
Q_FORMAT_3DC_X,
Q_FORMAT_3DC_XY,
Q_FORMAT_ETC2_RGB8,
Q_FORMAT_ETC2_RGBA8,
Q_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1,
Q_FORMAT_ETC2_SRGB8,
Q_FORMAT_ETC2_SRGB8_ALPHA8,
Q_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1,
Q_FORMAT_EAC_R_SIGNED,
Q_FORMAT_EAC_R_UNSIGNED,
Q_FORMAT_EAC_RG_SIGNED,
Q_FORMAT_EAC_RG_UNSIGNED,
Q_FORMAT_S3TC_DXT1_RGB,
Q_FORMAT_S3TC_DXT1_RGBA,
Q_FORMAT_S3TC_DXT3_RGBA,
Q_FORMAT_S3TC_DXT5_RGBA,
// YUV formats
Q_FORMAT_AYUV_32,
Q_FORMAT_I444_24,
Q_FORMAT_YUYV_16,
Q_FORMAT_UYVY_16,
Q_FORMAT_I420_12,
Q_FORMAT_YV12_12,
Q_FORMAT_NV21_12,
Q_FORMAT_NV12_12,
// ASTC Format
Q_FORMAT_ASTC_8,
Q_FORMAT_ASTC_16,
};
public enum texgenpack_texturetype
{
RGTC1,
RGTC2,
BPTC_FLOAT,
BPTC
}
}