From e5104d5cc72781a4a81998363309745f82619580 Mon Sep 17 00:00:00 2001 From: Perfare Date: Wed, 28 Mar 2018 06:29:28 +0800 Subject: [PATCH] some changes --- UnityStudio/Classes/AudioClip.cs | 31 + .../Texture2D.Converter.cs} | 0 UnityStudio/Classes/Texture2D.cs | 61 ++ UnityStudio/StudioClasses/AssetPreloadData.cs | 1 + UnityStudio/StudioClasses/AssetsFile.cs | 14 +- UnityStudio/StudioClasses/BuildTarget.cs | 46 ++ UnityStudio/StudioClasses/ClassIDReference.cs | 541 +++++++++--------- UnityStudio/StudioClasses/Enums.cs | 135 ----- UnityStudio/StudioClasses/FBXExporter.cs | 4 +- UnityStudio/StudioClasses/Importer.cs | 19 +- UnityStudio/StudioClasses/Studio.cs | 60 +- UnityStudio/UnityStudio-x86.csproj | 4 +- UnityStudio/UnityStudio.csproj | 6 +- UnityStudio/UnityStudioForm.cs | 88 ++- 14 files changed, 493 insertions(+), 517 deletions(-) rename UnityStudio/{StudioClasses/Texture2DConverter.cs => Classes/Texture2D.Converter.cs} (100%) create mode 100644 UnityStudio/StudioClasses/BuildTarget.cs delete mode 100644 UnityStudio/StudioClasses/Enums.cs diff --git a/UnityStudio/Classes/AudioClip.cs b/UnityStudio/Classes/AudioClip.cs index c7193c9..2f43a4d 100644 --- a/UnityStudio/Classes/AudioClip.cs +++ b/UnityStudio/Classes/AudioClip.cs @@ -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 + } } diff --git a/UnityStudio/StudioClasses/Texture2DConverter.cs b/UnityStudio/Classes/Texture2D.Converter.cs similarity index 100% rename from UnityStudio/StudioClasses/Texture2DConverter.cs rename to UnityStudio/Classes/Texture2D.Converter.cs diff --git a/UnityStudio/Classes/Texture2D.cs b/UnityStudio/Classes/Texture2D.cs index 1786d39..074abf1 100644 --- a/UnityStudio/Classes/Texture2D.cs +++ b/UnityStudio/Classes/Texture2D.cs @@ -775,4 +775,65 @@ namespace UnityStudio 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, + } } \ No newline at end of file diff --git a/UnityStudio/StudioClasses/AssetPreloadData.cs b/UnityStudio/StudioClasses/AssetPreloadData.cs index bf5964c..8825a6c 100644 --- a/UnityStudio/StudioClasses/AssetPreloadData.cs +++ b/UnityStudio/StudioClasses/AssetPreloadData.cs @@ -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; diff --git a/UnityStudio/StudioClasses/AssetsFile.cs b/UnityStudio/StudioClasses/AssetsFile.cs index 5a7d15d..51e3092 100644 --- a/UnityStudio/StudioClasses/AssetsFile.cs +++ b/UnityStudio/StudioClasses/AssetsFile.cs @@ -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; diff --git a/UnityStudio/StudioClasses/BuildTarget.cs b/UnityStudio/StudioClasses/BuildTarget.cs new file mode 100644 index 0000000..aff7d38 --- /dev/null +++ b/UnityStudio/StudioClasses/BuildTarget.cs @@ -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 + } +} diff --git a/UnityStudio/StudioClasses/ClassIDReference.cs b/UnityStudio/StudioClasses/ClassIDReference.cs index fb218db..dd9d0fe 100644 --- a/UnityStudio/StudioClasses/ClassIDReference.cs +++ b/UnityStudio/StudioClasses/ClassIDReference.cs @@ -1,277 +1,272 @@ -using System.Collections.Generic; - -namespace UnityStudio +namespace UnityStudio { - public static class ClassIDReference + public enum ClassIDReference { - public static Dictionary Names = new Dictionary() - { - {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 } } diff --git a/UnityStudio/StudioClasses/Enums.cs b/UnityStudio/StudioClasses/Enums.cs deleted file mode 100644 index c7175fd..0000000 --- a/UnityStudio/StudioClasses/Enums.cs +++ /dev/null @@ -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 - } -} diff --git a/UnityStudio/StudioClasses/FBXExporter.cs b/UnityStudio/StudioClasses/FBXExporter.cs index 0720034..74ab5a1 100644 --- a/UnityStudio/StudioClasses/FBXExporter.cs +++ b/UnityStudio/StudioClasses/FBXExporter.cs @@ -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); diff --git a/UnityStudio/StudioClasses/Importer.cs b/UnityStudio/StudioClasses/Importer.cs index 03f1dcb..fcae9e0 100644 --- a/UnityStudio/StudioClasses/Importer.cs +++ b/UnityStudio/StudioClasses/Importer.cs @@ -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); diff --git a/UnityStudio/StudioClasses/Studio.cs b/UnityStudio/StudioClasses/Studio.cs index efddae2..f34352c 100644 --- a/UnityStudio/StudioClasses/Studio.cs +++ b/UnityStudio/StudioClasses/Studio.cs @@ -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; diff --git a/UnityStudio/UnityStudio-x86.csproj b/UnityStudio/UnityStudio-x86.csproj index fad8a50..c09a77a 100644 --- a/UnityStudio/UnityStudio-x86.csproj +++ b/UnityStudio/UnityStudio-x86.csproj @@ -147,6 +147,7 @@ + ShaderResource.resx True @@ -155,8 +156,7 @@ - - + diff --git a/UnityStudio/UnityStudio.csproj b/UnityStudio/UnityStudio.csproj index 61af879..1ddf92e 100644 --- a/UnityStudio/UnityStudio.csproj +++ b/UnityStudio/UnityStudio.csproj @@ -136,6 +136,8 @@ Code + + True True @@ -154,12 +156,10 @@ - - + - Form diff --git a/UnityStudio/UnityStudioForm.cs b/UnityStudio/UnityStudioForm.cs index e317875..c07bde5 100644 --- a/UnityStudio/UnityStudioForm.cs +++ b/UnityStudio/UnityStudioForm.cs @@ -388,10 +388,10 @@ namespace UnityStudio { if (lastLoadedAsset != null) { - switch (lastLoadedAsset.Type2) + switch (lastLoadedAsset.Type) { - case 28: - case 213: + case ClassIDReference.Texture2D: + case ClassIDReference.Sprite: { if (enablePreview.Checked && imageTexture != null) { @@ -404,15 +404,15 @@ namespace UnityStudio } } break; - case 48: - case 49: - case 114: + case ClassIDReference.Shader: + case ClassIDReference.TextAsset: + case ClassIDReference.MonoBehaviour: textPreviewBox.Visible = !textPreviewBox.Visible; break; - case 128: + case ClassIDReference.Font: fontPreviewBox.Visible = !fontPreviewBox.Visible; break; - case 83: + case ClassIDReference.AudioClip: { FMODpanel.Visible = !FMODpanel.Visible; @@ -728,10 +728,9 @@ namespace UnityStudio private void PreviewAsset(AssetPreloadData asset) { - switch (asset.Type2) + switch (asset.Type) { - #region Texture2D - case 28: //Texture2D + case ClassIDReference.Texture2D: { imageTexture?.Dispose(); var m_Texture2D = new Texture2D(asset, true); @@ -750,9 +749,7 @@ namespace UnityStudio } break; } - #endregion - #region AudioClip - case 83: //AudioClip + case ClassIDReference.AudioClip: { AudioClip m_AudioClip = new AudioClip(asset, true); 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}"; break; } - #endregion - #region Shader - case 48: + case ClassIDReference.Shader: { Shader m_TextAsset = new Shader(asset, true); string m_Script_Text = Encoding.UTF8.GetString(m_TextAsset.m_Script); @@ -798,9 +793,7 @@ namespace UnityStudio textPreviewBox.Visible = true; break; } - #endregion - #region TextAsset - case 49: + case ClassIDReference.TextAsset: { TextAsset m_TextAsset = new TextAsset(asset, true); @@ -811,9 +804,7 @@ namespace UnityStudio break; } - #endregion - #region MonoBehaviour - case 114: + case ClassIDReference.MonoBehaviour: { MonoBehaviour m_MonoBehaviour = new MonoBehaviour(asset, true); textPreviewBox.Text = m_MonoBehaviour.serializedText; @@ -821,9 +812,7 @@ namespace UnityStudio break; } - #endregion - #region Font - case 128: //Font + case ClassIDReference.Font: { UnityFont m_Font = new UnityFont(asset, true); if (m_Font.m_FontData != null) @@ -875,9 +864,7 @@ namespace UnityStudio StatusStripUpdate("Unsupported font for preview. Try to export."); break; } - #endregion - #region Mesh - case 43: //Mesh + case ClassIDReference.Mesh: { var m_Mesh = new Mesh(asset, true); if (m_Mesh.m_VertexCount > 0) @@ -1018,17 +1005,13 @@ namespace UnityStudio + "'Ctrl W'=Wireframe | 'Ctrl S'=Shade | 'Ctrl N'=ReNormal "); } break; - #endregion - #region VideoClip and MovieTexture - case 329: //VideoClip - case 152: //MovieTexture + case ClassIDReference.VideoClip: + case ClassIDReference.MovieTexture: { StatusStripUpdate("Only supported export."); break; } - #endregion - #region Sprite - case 213: //Sprite + case ClassIDReference.Sprite: { imageTexture?.Dispose(); imageTexture = GetImageFromSprite(asset); @@ -1046,7 +1029,6 @@ namespace UnityStudio } break; } - #endregion default: { var str = asset.ViewStruct(); @@ -1479,63 +1461,63 @@ namespace UnityStudio if (assetGroupSelectedIndex == 1) { exportpath += Path.GetFileNameWithoutExtension(asset.sourceFile.filePath) + "_export\\"; } else if (assetGroupSelectedIndex == 0) { exportpath = savePath + "\\" + asset.TypeString + "\\"; } StatusStripUpdate($"Exporting {asset.TypeString}: {asset.Text}"); - switch (asset.Type2) + switch (asset.Type) { - case 28: //Texture2D + case ClassIDReference.Texture2D: if (ExportTexture2D(asset, exportpath, true)) { exportedCount++; } break; - case 83: //AudioClip + case ClassIDReference.AudioClip: if (ExportAudioClip(asset, exportpath)) { exportedCount++; } break; - case 48: //Shader + case ClassIDReference.Shader: if (ExportShader(asset, exportpath)) { exportedCount++; } break; - case 49: //TextAsset + case ClassIDReference.TextAsset: if (ExportTextAsset(asset, exportpath)) { exportedCount++; } break; - case 114: //MonoBehaviour + case ClassIDReference.MonoBehaviour: if (ExportMonoBehaviour(asset, exportpath)) { exportedCount++; } break; - case 128: //Font + case ClassIDReference.Font: if (ExportFont(asset, exportpath)) { exportedCount++; } break; - case 43: //Mesh + case ClassIDReference.Mesh: if (ExportMesh(asset, exportpath)) { exportedCount++; } break; - case 329: //VideoClip + case ClassIDReference.VideoClip: if (ExportVideoClip(asset, exportpath)) { exportedCount++; } break; - case 152: //MovieTexture + case ClassIDReference.MovieTexture: if (ExportMovieTexture(asset, exportpath)) { exportedCount++; } break; - case 213: //Sprite + case ClassIDReference.Sprite: if (ExportSprite(asset, exportpath)) { exportedCount++; @@ -1807,9 +1789,17 @@ namespace UnityStudio Text = "UnityStudio"; unityFiles.Clear(); + foreach (var assetsFile in assetsfileList) + { + assetsFile.assetsFileReader.Dispose(); + } assetsfileList.Clear(); exportableAssets.Clear(); visibleAssets.Clear(); + foreach (var resourceFileReader in resourceFileReaders) + { + resourceFileReader.Value.Dispose(); + } resourceFileReaders.Clear(); sharedFileIndex.Clear(); productName = ""; @@ -1841,7 +1831,7 @@ namespace UnityStudio 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); Process.Start(pfi); }