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

@ -300,4 +300,35 @@ namespace UnityStudio
} }
} }
} }
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
}
} }

View File

@ -775,4 +775,65 @@ namespace UnityStudio
dwABitMask = -16777216; dwABitMask = -16777216;
} }
} }
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,
}
} }

View File

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

View File

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

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) foreach (var asset in exportableAssets)
{ {
if (asset.Type2 == 28 && asset.Text == texName) if (asset.Type == ClassIDReference.Texture2D && asset.Text == texName)
{ {
TexturePD = asset; TexturePD = asset;
break; break;
@ -237,7 +237,7 @@ namespace UnityStudio
} }
#endregion #endregion
if (TexturePD != null && TexturePD.Type2 == 28) if (TexturePD != null && TexturePD.Type == ClassIDReference.Texture2D)
{ {
Textures.Add(TexturePD); 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); var fileName = Path.GetFileName(fullName);
StatusStripUpdate("Loading " + fileName); StatusStripUpdate("Loading " + fileName);
@ -39,6 +39,7 @@ namespace UnityStudio
var assetsFile = new AssetsFile(fullName, reader); var assetsFile = new AssetsFile(fullName, reader);
if (assetsFile.valid) if (assetsFile.valid)
{ {
assetsFile.parentPath = parentPath;
assetsfileList.Add(assetsFile); assetsfileList.Add(assetsFile);
assetsfileListHash.Add(assetsFile.upperFileName); assetsfileListHash.Add(assetsFile.upperFileName);
@ -90,14 +91,17 @@ namespace UnityStudio
if (value > 0) if (value > 0)
ProgressBarMaximumAdd(value); 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); var fileName = Path.GetFileName(fullName);
StatusStripUpdate("Decompressing " + fileName); StatusStripUpdate("Decompressing " + fileName);
var bundleFile = new BundleFile(reader); var bundleFile = new BundleFile(reader);
reader.Dispose();
foreach (var file in bundleFile.fileList) foreach (var file in bundleFile.fileList)
{ {
if (!assetsfileListHash.Contains(file.fileName.ToUpper())) 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)); var assetsFile = new AssetsFile(Path.GetDirectoryName(fullName) + "\\" + file.fileName, new EndianBinaryReader(file.stream));
if (assetsFile.valid) 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 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) private static void LoadWebFile(string fullName, EndianBinaryReader reader)
{ {
var fileName = Path.GetFileName(fullName); var fileName = Path.GetFileName(fullName);
StatusStripUpdate("Loading " + fileName); StatusStripUpdate("Loading " + fileName);
var bundleFile = new WebFile(reader); var webFile = new WebFile(reader);
reader.Dispose(); reader.Dispose();
foreach (var file in bundleFile.fileList) foreach (var file in webFile.fileList)
{ {
var dummyName = Path.GetDirectoryName(fullName) + "\\" + file.fileName; var dummyName = Path.GetDirectoryName(fullName) + "\\" + file.fileName;
switch (CheckFileType(file.stream, out reader)) switch (CheckFileType(file.stream, out reader))
{ {
case FileType.AssetsFile: case FileType.AssetsFile:
LoadAssetsFile(dummyName, reader); LoadAssetsFile(dummyName, reader, fullName);
break; break;
case FileType.BundleFile: case FileType.BundleFile:
LoadBundleFile(dummyName, reader); LoadBundleFile(dummyName, reader, fullName);
break; break;
case FileType.WebFile: case FileType.WebFile:
LoadWebFile(dummyName, reader); LoadWebFile(dummyName, reader);

View File

@ -88,117 +88,99 @@ namespace UnityStudio
{ {
asset.uniqueID = fileID + asset.uniqueID; asset.uniqueID = fileID + asset.uniqueID;
var exportable = false; var exportable = false;
switch (asset.Type2) switch (asset.Type)
{ {
case 1: //GameObject case ClassIDReference.GameObject:
{ {
GameObject m_GameObject = new GameObject(asset); GameObject m_GameObject = new GameObject(asset);
assetsFile.GameObjectList.Add(asset.m_PathID, m_GameObject); assetsFile.GameObjectList.Add(asset.m_PathID, m_GameObject);
//totalTreeNodes++; //totalTreeNodes++;
break; break;
} }
case 4: //Transform case ClassIDReference.Transform:
{ {
Transform m_Transform = new Transform(asset); Transform m_Transform = new Transform(asset);
assetsFile.TransformList.Add(asset.m_PathID, m_Transform); assetsFile.TransformList.Add(asset.m_PathID, m_Transform);
break; break;
} }
case 224: //RectTransform case ClassIDReference.RectTransform:
{ {
RectTransform m_Rect = new RectTransform(asset); RectTransform m_Rect = new RectTransform(asset);
assetsFile.TransformList.Add(asset.m_PathID, m_Rect.m_Transform); assetsFile.TransformList.Add(asset.m_PathID, m_Rect.m_Transform);
break; break;
} }
case 28: //Texture2D case ClassIDReference.Texture2D:
{ {
Texture2D m_Texture2D = new Texture2D(asset, false); Texture2D m_Texture2D = new Texture2D(asset, false);
exportable = true; exportable = true;
break; break;
} }
case 48: //Shader case ClassIDReference.Shader:
{ {
Shader m_Shader = new Shader(asset, false); Shader m_Shader = new Shader(asset, false);
exportable = true; exportable = true;
break; break;
} }
case 49: //TextAsset case ClassIDReference.TextAsset:
{ {
TextAsset m_TextAsset = new TextAsset(asset, false); TextAsset m_TextAsset = new TextAsset(asset, false);
exportable = true; exportable = true;
break; break;
} }
case 83: //AudioClip case ClassIDReference.AudioClip:
{ {
AudioClip m_AudioClip = new AudioClip(asset, false); AudioClip m_AudioClip = new AudioClip(asset, false);
exportable = true; exportable = true;
break; break;
} }
case 114: //MonoBehaviour case ClassIDReference.MonoBehaviour:
{ {
var m_MonoBehaviour = new MonoBehaviour(asset, false); var m_MonoBehaviour = new MonoBehaviour(asset, false);
if (asset.Type1 != asset.Type2 && assetsFile.ClassStructures.ContainsKey(asset.Type1)) if (asset.Type1 != asset.Type2 && assetsFile.ClassStructures.ContainsKey(asset.Type1))
exportable = true; exportable = true;
break; break;
} }
case 128: //Font case ClassIDReference.Font:
{ {
UnityFont m_Font = new UnityFont(asset, false); UnityFont m_Font = new UnityFont(asset, false);
exportable = true; exportable = true;
break; break;
} }
case 129: //PlayerSettings case ClassIDReference.PlayerSettings:
{ {
var plSet = new PlayerSettings(asset); var plSet = new PlayerSettings(asset);
productName = plSet.productName; productName = plSet.productName;
break; break;
} }
case 43: //Mesh case ClassIDReference.Mesh:
{ {
Mesh m_Mesh = new Mesh(asset, false); Mesh m_Mesh = new Mesh(asset, false);
exportable = true; exportable = true;
break; break;
} }
case 142: //AssetBundle case ClassIDReference.AssetBundle:
{ {
ab = new AssetBundle(asset); ab = new AssetBundle(asset);
break; break;
} }
case 329: //VideoClip case ClassIDReference.VideoClip:
{ {
var m_VideoClip = new VideoClip(asset, false); var m_VideoClip = new VideoClip(asset, false);
exportable = true; exportable = true;
break; break;
} }
case 152: //MovieTexture case ClassIDReference.MovieTexture:
{ {
var m_MovieTexture = new MovieTexture(asset, false); var m_MovieTexture = new MovieTexture(asset, false);
exportable = true; exportable = true;
break; break;
} }
case 213: //Sprite case ClassIDReference.Sprite:
{ {
var m_Sprite = new Sprite(asset, false); var m_Sprite = new Sprite(asset, false);
exportable = true; exportable = true;
break; 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) if (!exportable && displayAll)
{ {
@ -267,24 +249,24 @@ namespace UnityStudio
var sourceFile = assetsfileList[m_Component.m_FileID]; var sourceFile = assetsfileList[m_Component.m_FileID];
if (sourceFile.preloadTable.TryGetValue(m_Component.m_PathID, out var asset)) 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; m_GameObject.m_Transform = m_Component;
break; break;
} }
case 23: //MeshRenderer case ClassIDReference.MeshRenderer:
{ {
m_GameObject.m_MeshRenderer = m_Component; m_GameObject.m_MeshRenderer = m_Component;
break; break;
} }
case 33: //MeshFilter case ClassIDReference.MeshFilter:
{ {
m_GameObject.m_MeshFilter = m_Component; m_GameObject.m_MeshFilter = m_Component;
break; break;
} }
case 137: //SkinnedMeshRenderer case ClassIDReference.SkinnedMeshRenderer:
{ {
m_GameObject.m_SkinnedMeshRenderer = m_Component; m_GameObject.m_SkinnedMeshRenderer = m_Component;
break; break;

View File

@ -147,6 +147,7 @@
<Compile Include="StudioClasses\BundleFile.cs" /> <Compile Include="StudioClasses\BundleFile.cs" />
<Compile Include="StudioClasses\ClassStruct.cs" /> <Compile Include="StudioClasses\ClassStruct.cs" />
<Compile Include="StudioClasses\FBXExporter.cs" /> <Compile Include="StudioClasses\FBXExporter.cs" />
<Compile Include="StudioClasses\BuildTarget.cs" />
<Compile Include="StudioClasses\ShaderResource.Designer.cs"> <Compile Include="StudioClasses\ShaderResource.Designer.cs">
<DependentUpon>ShaderResource.resx</DependentUpon> <DependentUpon>ShaderResource.resx</DependentUpon>
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
@ -155,8 +156,7 @@
<Compile Include="StudioClasses\SpriteHelper.cs" /> <Compile Include="StudioClasses\SpriteHelper.cs" />
<Compile Include="StudioClasses\StringExtensions.cs" /> <Compile Include="StudioClasses\StringExtensions.cs" />
<Compile Include="StudioClasses\EndianBinaryReader.cs" /> <Compile Include="StudioClasses\EndianBinaryReader.cs" />
<Compile Include="StudioClasses\Texture2DConverter.cs" /> <Compile Include="Classes\Texture2D.Converter.cs" />
<Compile Include="StudioClasses\Enums.cs" />
<Compile Include="StudioClasses\Exporter.cs" /> <Compile Include="StudioClasses\Exporter.cs" />
<Compile Include="StudioClasses\Importer.cs" /> <Compile Include="StudioClasses\Importer.cs" />
<Compile Include="StudioClasses\Studio.cs" /> <Compile Include="StudioClasses\Studio.cs" />

View File

@ -136,6 +136,8 @@
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="OpenFolderDialog.cs" /> <Compile Include="OpenFolderDialog.cs" />
<Compile Include="StudioClasses\BuildTarget.cs" />
<Compile Include="StudioClasses\ClassIDReference.cs" />
<Compile Include="StudioClasses\ShaderResource.Designer.cs"> <Compile Include="StudioClasses\ShaderResource.Designer.cs">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
@ -154,12 +156,10 @@
<Compile Include="StudioClasses\FBXExporter.cs" /> <Compile Include="StudioClasses\FBXExporter.cs" />
<Compile Include="StudioClasses\SpriteHelper.cs" /> <Compile Include="StudioClasses\SpriteHelper.cs" />
<Compile Include="StudioClasses\StringExtensions.cs" /> <Compile Include="StudioClasses\StringExtensions.cs" />
<Compile Include="StudioClasses\Texture2DConverter.cs" /> <Compile Include="Classes\Texture2D.Converter.cs" />
<Compile Include="StudioClasses\Enums.cs" />
<Compile Include="StudioClasses\Exporter.cs" /> <Compile Include="StudioClasses\Exporter.cs" />
<Compile Include="StudioClasses\Importer.cs" /> <Compile Include="StudioClasses\Importer.cs" />
<Compile Include="StudioClasses\Studio.cs" /> <Compile Include="StudioClasses\Studio.cs" />
<Compile Include="StudioClasses\ClassIDReference.cs" />
<Compile Include="StudioClasses\EndianBinaryReader.cs" /> <Compile Include="StudioClasses\EndianBinaryReader.cs" />
<Compile Include="ExportOptions.cs"> <Compile Include="ExportOptions.cs">
<SubType>Form</SubType> <SubType>Form</SubType>

View File

@ -388,10 +388,10 @@ namespace UnityStudio
{ {
if (lastLoadedAsset != null) if (lastLoadedAsset != null)
{ {
switch (lastLoadedAsset.Type2) switch (lastLoadedAsset.Type)
{ {
case 28: case ClassIDReference.Texture2D:
case 213: case ClassIDReference.Sprite:
{ {
if (enablePreview.Checked && imageTexture != null) if (enablePreview.Checked && imageTexture != null)
{ {
@ -404,15 +404,15 @@ namespace UnityStudio
} }
} }
break; break;
case 48: case ClassIDReference.Shader:
case 49: case ClassIDReference.TextAsset:
case 114: case ClassIDReference.MonoBehaviour:
textPreviewBox.Visible = !textPreviewBox.Visible; textPreviewBox.Visible = !textPreviewBox.Visible;
break; break;
case 128: case ClassIDReference.Font:
fontPreviewBox.Visible = !fontPreviewBox.Visible; fontPreviewBox.Visible = !fontPreviewBox.Visible;
break; break;
case 83: case ClassIDReference.AudioClip:
{ {
FMODpanel.Visible = !FMODpanel.Visible; FMODpanel.Visible = !FMODpanel.Visible;
@ -728,10 +728,9 @@ namespace UnityStudio
private void PreviewAsset(AssetPreloadData asset) private void PreviewAsset(AssetPreloadData asset)
{ {
switch (asset.Type2) switch (asset.Type)
{ {
#region Texture2D case ClassIDReference.Texture2D:
case 28: //Texture2D
{ {
imageTexture?.Dispose(); imageTexture?.Dispose();
var m_Texture2D = new Texture2D(asset, true); var m_Texture2D = new Texture2D(asset, true);
@ -750,9 +749,7 @@ namespace UnityStudio
} }
break; break;
} }
#endregion case ClassIDReference.AudioClip:
#region AudioClip
case 83: //AudioClip
{ {
AudioClip m_AudioClip = new AudioClip(asset, true); AudioClip m_AudioClip = new AudioClip(asset, true);
if (m_AudioClip.m_AudioData == null) if (m_AudioClip.m_AudioData == null)
@ -786,9 +783,7 @@ namespace UnityStudio
FMODtimerLabel.Text = $"0:0.0 / {FMODlenms / 1000 / 60}:{FMODlenms / 1000 % 60}.{FMODlenms / 10 % 100}"; FMODtimerLabel.Text = $"0:0.0 / {FMODlenms / 1000 / 60}:{FMODlenms / 1000 % 60}.{FMODlenms / 10 % 100}";
break; break;
} }
#endregion case ClassIDReference.Shader:
#region Shader
case 48:
{ {
Shader m_TextAsset = new Shader(asset, true); Shader m_TextAsset = new Shader(asset, true);
string m_Script_Text = Encoding.UTF8.GetString(m_TextAsset.m_Script); string m_Script_Text = Encoding.UTF8.GetString(m_TextAsset.m_Script);
@ -798,9 +793,7 @@ namespace UnityStudio
textPreviewBox.Visible = true; textPreviewBox.Visible = true;
break; break;
} }
#endregion case ClassIDReference.TextAsset:
#region TextAsset
case 49:
{ {
TextAsset m_TextAsset = new TextAsset(asset, true); TextAsset m_TextAsset = new TextAsset(asset, true);
@ -811,9 +804,7 @@ namespace UnityStudio
break; break;
} }
#endregion case ClassIDReference.MonoBehaviour:
#region MonoBehaviour
case 114:
{ {
MonoBehaviour m_MonoBehaviour = new MonoBehaviour(asset, true); MonoBehaviour m_MonoBehaviour = new MonoBehaviour(asset, true);
textPreviewBox.Text = m_MonoBehaviour.serializedText; textPreviewBox.Text = m_MonoBehaviour.serializedText;
@ -821,9 +812,7 @@ namespace UnityStudio
break; break;
} }
#endregion case ClassIDReference.Font:
#region Font
case 128: //Font
{ {
UnityFont m_Font = new UnityFont(asset, true); UnityFont m_Font = new UnityFont(asset, true);
if (m_Font.m_FontData != null) if (m_Font.m_FontData != null)
@ -875,9 +864,7 @@ namespace UnityStudio
StatusStripUpdate("Unsupported font for preview. Try to export."); StatusStripUpdate("Unsupported font for preview. Try to export.");
break; break;
} }
#endregion case ClassIDReference.Mesh:
#region Mesh
case 43: //Mesh
{ {
var m_Mesh = new Mesh(asset, true); var m_Mesh = new Mesh(asset, true);
if (m_Mesh.m_VertexCount > 0) if (m_Mesh.m_VertexCount > 0)
@ -1018,17 +1005,13 @@ namespace UnityStudio
+ "'Ctrl W'=Wireframe | 'Ctrl S'=Shade | 'Ctrl N'=ReNormal "); + "'Ctrl W'=Wireframe | 'Ctrl S'=Shade | 'Ctrl N'=ReNormal ");
} }
break; break;
#endregion case ClassIDReference.VideoClip:
#region VideoClip and MovieTexture case ClassIDReference.MovieTexture:
case 329: //VideoClip
case 152: //MovieTexture
{ {
StatusStripUpdate("Only supported export."); StatusStripUpdate("Only supported export.");
break; break;
} }
#endregion case ClassIDReference.Sprite:
#region Sprite
case 213: //Sprite
{ {
imageTexture?.Dispose(); imageTexture?.Dispose();
imageTexture = GetImageFromSprite(asset); imageTexture = GetImageFromSprite(asset);
@ -1046,7 +1029,6 @@ namespace UnityStudio
} }
break; break;
} }
#endregion
default: default:
{ {
var str = asset.ViewStruct(); var str = asset.ViewStruct();
@ -1479,63 +1461,63 @@ namespace UnityStudio
if (assetGroupSelectedIndex == 1) { exportpath += Path.GetFileNameWithoutExtension(asset.sourceFile.filePath) + "_export\\"; } if (assetGroupSelectedIndex == 1) { exportpath += Path.GetFileNameWithoutExtension(asset.sourceFile.filePath) + "_export\\"; }
else if (assetGroupSelectedIndex == 0) { exportpath = savePath + "\\" + asset.TypeString + "\\"; } else if (assetGroupSelectedIndex == 0) { exportpath = savePath + "\\" + asset.TypeString + "\\"; }
StatusStripUpdate($"Exporting {asset.TypeString}: {asset.Text}"); StatusStripUpdate($"Exporting {asset.TypeString}: {asset.Text}");
switch (asset.Type2) switch (asset.Type)
{ {
case 28: //Texture2D case ClassIDReference.Texture2D:
if (ExportTexture2D(asset, exportpath, true)) if (ExportTexture2D(asset, exportpath, true))
{ {
exportedCount++; exportedCount++;
} }
break; break;
case 83: //AudioClip case ClassIDReference.AudioClip:
if (ExportAudioClip(asset, exportpath)) if (ExportAudioClip(asset, exportpath))
{ {
exportedCount++; exportedCount++;
} }
break; break;
case 48: //Shader case ClassIDReference.Shader:
if (ExportShader(asset, exportpath)) if (ExportShader(asset, exportpath))
{ {
exportedCount++; exportedCount++;
} }
break; break;
case 49: //TextAsset case ClassIDReference.TextAsset:
if (ExportTextAsset(asset, exportpath)) if (ExportTextAsset(asset, exportpath))
{ {
exportedCount++; exportedCount++;
} }
break; break;
case 114: //MonoBehaviour case ClassIDReference.MonoBehaviour:
if (ExportMonoBehaviour(asset, exportpath)) if (ExportMonoBehaviour(asset, exportpath))
{ {
exportedCount++; exportedCount++;
} }
break; break;
case 128: //Font case ClassIDReference.Font:
if (ExportFont(asset, exportpath)) if (ExportFont(asset, exportpath))
{ {
exportedCount++; exportedCount++;
} }
break; break;
case 43: //Mesh case ClassIDReference.Mesh:
if (ExportMesh(asset, exportpath)) if (ExportMesh(asset, exportpath))
{ {
exportedCount++; exportedCount++;
} }
break; break;
case 329: //VideoClip case ClassIDReference.VideoClip:
if (ExportVideoClip(asset, exportpath)) if (ExportVideoClip(asset, exportpath))
{ {
exportedCount++; exportedCount++;
} }
break; break;
case 152: //MovieTexture case ClassIDReference.MovieTexture:
if (ExportMovieTexture(asset, exportpath)) if (ExportMovieTexture(asset, exportpath))
{ {
exportedCount++; exportedCount++;
} }
break; break;
case 213: //Sprite case ClassIDReference.Sprite:
if (ExportSprite(asset, exportpath)) if (ExportSprite(asset, exportpath))
{ {
exportedCount++; exportedCount++;
@ -1807,9 +1789,17 @@ namespace UnityStudio
Text = "UnityStudio"; Text = "UnityStudio";
unityFiles.Clear(); unityFiles.Clear();
foreach (var assetsFile in assetsfileList)
{
assetsFile.assetsFileReader.Dispose();
}
assetsfileList.Clear(); assetsfileList.Clear();
exportableAssets.Clear(); exportableAssets.Clear();
visibleAssets.Clear(); visibleAssets.Clear();
foreach (var resourceFileReader in resourceFileReaders)
{
resourceFileReader.Value.Dispose();
}
resourceFileReaders.Clear(); resourceFileReaders.Clear();
sharedFileIndex.Clear(); sharedFileIndex.Clear();
productName = ""; productName = "";
@ -1841,7 +1831,7 @@ namespace UnityStudio
private void showOriginalFileToolStripMenuItem_Click(object sender, EventArgs e) private void showOriginalFileToolStripMenuItem_Click(object sender, EventArgs e)
{ {
var args = $"/select, {selectasset.sourceFile.bundlePath ?? selectasset.sourceFile.filePath}"; var args = $"/select, {selectasset.sourceFile.parentPath ?? selectasset.sourceFile.filePath}";
var pfi = new ProcessStartInfo("explorer.exe", args); var pfi = new ProcessStartInfo("explorer.exe", args);
Process.Start(pfi); Process.Start(pfi);
} }