public void Update_LightingMode(bool enabled, LightingMode lightingMode, float indirectBounce, int directSamples, int indirectSamples, bool aoEnabled, float aoDistance, float aoIntensityDirect, float aoIntensityIndirect, float backfaceTolerance, float resolution) { if (enabled) { #if UNITY_EDITOR LB_LightingSettingsHepler.SetDirectSamples(directSamples); LB_LightingSettingsHepler.SetIndirectSamples(indirectSamples); LightmapEditorSettings.bakeResolution = resolution; LightmapParameters a = new LightmapParameters(); a.name = "Lighting Box Very-Low"; a.resolution = 0.125f; a.clusterResolution = 0.4f; a.irradianceBudget = 96; a.irradianceQuality = 8192; a.modellingTolerance = 0.001f; a.stitchEdges = true; a.isTransparent = false; a.systemTag = -1; a.blurRadius = 2; a.antiAliasingSamples = 8; a.directLightQuality = 64; a.bakedLightmapTag = -1; a.AOQuality = 256; a.AOAntiAliasingSamples = 16; a.backFaceTolerance = backfaceTolerance; LB_LightingSettingsHepler.SetLightmapParameters(a); LB_LightingSettingsHepler.SetDirectionalMode(LightmapsMode.NonDirectional); LB_LightingSettingsHepler.SetAmbientOcclusion(aoEnabled); LB_LightingSettingsHepler.SetAmbientOcclusionDirect(aoIntensityDirect); LB_LightingSettingsHepler.SetAmbientOcclusionDistance(aoDistance); LB_LightingSettingsHepler.SetAmbientOcclusionIndirect(aoIntensityIndirect); LB_LightingSettingsHepler.SetBounceIntensity(indirectBounce); #endif RenderSettings.reflectionIntensity = 0; RenderSettings.defaultReflectionMode = UnityEngine.Rendering.DefaultReflectionMode.Custom; #if UNITY_EDITOR if (lightingMode == LightingMode.RealtimeGI) { Lightmapping.realtimeGI = true; Lightmapping.bakedGI = false; LightmapEditorSettings.lightmapper = LightmapEditorSettings.Lightmapper.Enlighten; } if (lightingMode == LightingMode.BakedProgressive) { Lightmapping.realtimeGI = false; Lightmapping.bakedGI = true; LightmapEditorSettings.lightmapper = LightmapEditorSettings.Lightmapper.ProgressiveCPU; } if (lightingMode == LightingMode.BakedEnlighten) { Lightmapping.realtimeGI = false; Lightmapping.bakedGI = true; LightmapEditorSettings.lightmapper = LightmapEditorSettings.Lightmapper.Enlighten; } #endif } }
public static void SetParameters(this Renderer renderer, LightmapParameters dstParameters) { SerializedObject rendererSO = new SerializedObject(renderer); SerializedProperty parametersSP = rendererSO.FindProperty("m_LightmapParameters"); parametersSP.objectReferenceValue = dstParameters; rendererSO.ApplyModifiedProperties(); }
// Reference Enlighten RTGI parameters public static void SetLightmapParameters(SerializedObject lightmapSettings, LightmapParameters lightmapParameters) { // QUESTION: Could the parameter fields be directly embedded in the scene instead? // https://forum.unity.com/threads/access-lighting-window-properties-in-script.328342/#post-3320725 // m_LightmapEditorSettings with child field m_LightmapParameters is an object reference to a .giparams file SerializedProperty lightmapParametersReference = lightmapSettings.FindProperty("m_LightmapEditorSettings.m_LightmapParameters"); lightmapParametersReference.objectReferenceValue = lightmapParameters; }
}//End the button press if statement LightmapParameters CreateLightmapParameterFile(string path, string name, int bakeTag)//创建lightmapparameter { LightmapParameters lp = new LightmapParameters(); lp.bakedLightmapTag = bakeTag; path = path + "/" + name + ".asset"; AssetDatabase.CreateAsset(lp, path); AssetDatabase.ImportAsset(path); return((LightmapParameters)AssetDatabase.LoadAssetAtPath(path, typeof(LightmapParameters))); }
void SetRenderLightmapParameters(Terrain terrain, LightmapParameters param)//将lightmapparameter赋值给Terrain //Renderer renderer, { //SerializedObject so = new SerializedObject(renderer); SerializedObject so = new SerializedObject(terrain); var sp = so.FindProperty("m_LightmapParameters"); var ss = so.FindProperty("m_ScaleInLightmap"); sp.objectReferenceValue = param; ss.floatValue = 1; so.ApplyModifiedProperties(); }
public void Read(AssetReader reader) { Resolution = reader.ReadSingle(); BakeResolution = reader.ReadSingle(); TextureWidth = reader.ReadInt32(); TextureHeight = reader.ReadInt32(); AO = reader.ReadBoolean(); reader.AlignStream(AlignType.Align4); AOMaxDistance = reader.ReadSingle(); CompAOExponent = reader.ReadSingle(); CompAOExponentDirect = reader.ReadSingle(); Padding = reader.ReadInt32(); LightmapParameters.Read(reader); LightmapsBakeMode = reader.ReadInt32(); TextureCompression = reader.ReadBoolean(); FinalGather = reader.ReadBoolean(); FinalGatherFiltering = reader.ReadBoolean(); reader.AlignStream(AlignType.Align4); FinalGatherRayCount = reader.ReadInt32(); ReflectionCompression = reader.ReadInt32(); MixedBakeMode = reader.ReadInt32(); BakeBackend = reader.ReadInt32(); PVRSampling = reader.ReadInt32(); PVRDirectSampleCount = reader.ReadInt32(); PVRSampleCount = reader.ReadInt32(); PVRBounces = reader.ReadInt32(); PVRFilterTypeDirect = reader.ReadInt32(); PVRFilterTypeIndirect = reader.ReadInt32(); PVRFilterTypeAO = reader.ReadInt32(); PVRFilteringMode = reader.ReadInt32(); PVRCulling = reader.ReadBoolean(); reader.AlignStream(AlignType.Align4); PVRFilteringGaussRadiusDirect = reader.ReadInt32(); PVRFilteringGaussRadiusIndirect = reader.ReadInt32(); PVRFilteringGaussRadiusAO = reader.ReadInt32(); PVRFilteringAtrousPositionSigmaDirect = reader.ReadSingle(); PVRFilteringAtrousPositionSigmaIndirect = reader.ReadSingle(); PVRFilteringAtrousPositionSigmaAO = reader.ReadSingle(); ShowResolutionOverlay = reader.ReadBoolean(); reader.AlignStream(AlignType.Align4); }
// Configure scene for lightmap baking public static void ConfigureLightmaps(Scene scene, LightmapBakeMode lightmapBakeMode = LightmapBakeMode.none) { // TODO: Merge these with the serialized object editing below Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.OnDemand; LightmapEditorSettings.lightmapper = LightmapEditorSettings.Lightmapper.Enlighten; LightmapEditorSettings.lightmapsMode = LightmapsMode.CombinedDirectional; Lightmapping.realtimeGI = true; Lightmapping.bakedGI = true; LightmapEditorSettings.mixedBakeMode = MixedLightingMode.IndirectOnly; // Expect no mixed mode lighting if (lightmapBakeMode == LightmapBakeMode.none) { return; } LightmapParameters lightmapParameters = null; SerializedObject lightmapSettings = GetLightmapSettings(scene); switch (lightmapBakeMode) { case LightmapBakeMode.fast: FastResolution(lightmapSettings); FastAmbientOcclusion(lightmapSettings); FastFinalGather(lightmapSettings); lightmapParameters = AssetDatabase.LoadAssetAtPath <LightmapParameters>(fastParametersPath); break; case LightmapBakeMode.good: GoodResolution(lightmapSettings); GoodAmbientOcclusion(lightmapSettings); GoodFinalGather(lightmapSettings); lightmapParameters = AssetDatabase.LoadAssetAtPath <LightmapParameters>(goodParametersPath); break; } if (lightmapParameters) { SetLightmapParameters(lightmapSettings, lightmapParameters); } else { Debug.LogWarning($"Missing asset: {fastParametersPath}"); } lightmapSettings.ApplyModifiedProperties(); }
public YAMLNode ExportYAML(IExportContainer container) { YAMLMappingNode node = new YAMLMappingNode(); node.AddSerializedVersion(GetSerializedVersion(container.Version)); node.Add("m_Resolution", Resolution); node.Add("m_BakeResolution", BakeResolution); node.Add("m_TextureWidth", TextureWidth); node.Add("m_TextureHeight", TextureHeight); node.Add("m_AO", AO); node.Add("m_AOMaxDistance", AOMaxDistance); node.Add("m_CompAOExponent", CompAOExponent); node.Add("m_CompAOExponentDirect", CompAOExponentDirect); node.Add("m_Padding", Padding); node.Add("m_LightmapParameters", LightmapParameters.ExportYAML(container)); node.Add("m_LightmapsBakeMode", LightmapsBakeMode); node.Add("m_TextureCompression", TextureCompression); node.Add("m_FinalGather", FinalGather); node.Add("m_FinalGatherFiltering", FinalGatherFiltering); node.Add("m_FinalGatherRayCount", FinalGatherRayCount); node.Add("m_ReflectionCompression", ReflectionCompression); node.Add("m_MixedBakeMode", MixedBakeMode); node.Add("m_BakeBackend", BakeBackend); node.Add("m_PVRSampling", PVRSampling); node.Add("m_PVRDirectSampleCount", PVRDirectSampleCount); node.Add("m_PVRSampleCount", PVRSampleCount); node.Add("m_PVRBounces", PVRBounces); node.Add("m_PVRFilterTypeDirect", PVRFilterTypeDirect); node.Add("m_PVRFilterTypeIndirect", PVRFilterTypeIndirect); node.Add("m_PVRFilterTypeAO", PVRFilterTypeAO); node.Add("m_PVRFilteringMode", PVRFilteringMode); node.Add("m_PVRCulling", PVRCulling); node.Add("m_PVRFilteringGaussRadiusDirect", PVRFilteringGaussRadiusDirect); node.Add("m_PVRFilteringGaussRadiusIndirect", PVRFilteringGaussRadiusIndirect); node.Add("m_PVRFilteringGaussRadiusAO", PVRFilteringGaussRadiusAO); node.Add("m_PVRFilteringAtrousPositionSigmaDirect", PVRFilteringAtrousPositionSigmaDirect); node.Add("m_PVRFilteringAtrousPositionSigmaIndirect", PVRFilteringAtrousPositionSigmaIndirect); node.Add("m_PVRFilteringAtrousPositionSigmaAO", PVRFilteringAtrousPositionSigmaAO); node.Add("m_ShowResolutionOverlay", ShowResolutionOverlay); return(node); }
public YAMLNode ExportYAML(IExportContainer container) { YAMLMappingNode node = new YAMLMappingNode(); node.AddSerializedVersion(GetSerializedVersion(container.ExportVersion)); node.Add(ResolutionName, Resolution); node.Add(BakeResolutionName, BakeResolution); if (IsReadAtlasSize(container.Version)) { node.Add(AtlasSizeName, AtlasSize); } else { node.Add(TextureWidthName, TextureWidth); node.Add(TextureHeightName, TextureHeight); } node.Add(AOName, AO); node.Add(AOMaxDistanceName, AOMaxDistance); node.Add(CompAOExponentName, CompAOExponent); node.Add(CompAOExponentDirectName, CompAOExponentDirect); if (IsReadExtractAmbientOcclusion(container.ExportVersion)) { node.Add(ExtractAmbientOcclusionName, ExtractAmbientOcclusion); } node.Add(PaddingName, Padding); node.Add(LightmapParametersName, LightmapParameters.ExportYAML(container)); node.Add(LightmapsBakeModeName, (int)LightmapsBakeMode); node.Add(TextureCompressionName, TextureCompression); node.Add(FinalGatherName, FinalGather); node.Add(FinalGatherFilteringName, FinalGatherFiltering); node.Add(FinalGatherRayCountName, FinalGatherRayCount); node.Add(ReflectionCompressionName, (int)ReflectionCompression); node.Add(MixedBakeModeName, (int)MixedBakeMode); node.Add(BakeBackendName, (int)BakeBackend); node.Add(PVRSamplingName, (int)PVRSampling); node.Add(PVRDirectSampleCountName, PVRDirectSampleCount); node.Add(PVRSampleCountName, PVRSampleCount); node.Add(PVRBouncesName, PVRBounces); if (IsReadPVREnvironmentSampleCount(container.ExportVersion)) { node.Add(PVREnvironmentSampleCountName, GetPVREnvironmentSampleCount(container.Version)); node.Add(PVREnvironmentReferencePointCountName, GetPVREnvironmentReferencePointCount(container.Version)); } node.Add(PVRFilteringModeName, (int)GetPVRFilteringMode(container.Version)); if (IsReadPVREnvironmentSampleCount(container.ExportVersion)) { node.Add(PVRDenoiserTypeDirectName, (int)GetPVRDenoiserTypeDirect(container.Version)); node.Add(PVRDenoiserTypeIndirectName, (int)GetPVRDenoiserTypeIndirect(container.Version)); node.Add(PVRDenoiserTypeAOName, (int)GetPVRDenoiserTypeAO(container.Version)); } node.Add(PVRFilterTypeDirectName, (int)GetPVRFilterTypeDirect(container.Version)); node.Add(PVRFilterTypeIndirectName, (int)PVRFilterTypeIndirect); node.Add(PVRFilterTypeAOName, (int)GetPVRFilterTypeAO(container.Version)); if (IsReadPVREnvironmentMIS(container.ExportVersion)) { node.Add(PVREnvironmentMISName, GetPVREnvironmentMIS(container.Version)); } node.Add(PVRCullingName, PVRCulling); node.Add(PVRFilteringGaussRadiusDirectName, GetPVRFilteringGaussRadiusDirect(container.Version)); node.Add(PVRFilteringGaussRadiusIndirectName, GetPVRFilteringGaussRadiusIndirect(container.Version)); node.Add(PVRFilteringGaussRadiusAOName, GetPVRFilteringGaussRadiusAO(container.Version)); node.Add(PVRFilteringAtrousPositionSigmaDirectName, PVRFilteringAtrousPositionSigmaDirect); node.Add(PVRFilteringAtrousPositionSigmaIndirectName, PVRFilteringAtrousPositionSigmaIndirect); node.Add(PVRFilteringAtrousPositionSigmaAOName, PVRFilteringAtrousPositionSigmaAO); if (IsReadShowResolutionOverlay(container.ExportVersion)) { node.Add(ShowResolutionOverlayName, ShowResolutionOverlay); } if (IsReadExportTrainingData(container.ExportVersion)) { node.Add(ExportTrainingDataName, ExportTrainingData); } if (IsReadTrainingDataDestination(container.ExportVersion)) { node.Add(TrainingDataDestinationName, GetTrainingDataDestination(container.Version)); } return(node); }
public void Read(AssetReader reader) { Resolution = reader.ReadSingle(); BakeResolution = reader.ReadSingle(); if (IsReadAtlasSize(reader.Version)) { int AtlasSize = reader.ReadInt32(); TextureWidth = TextureHeight = AtlasSize; } else { TextureWidth = reader.ReadInt32(); TextureHeight = reader.ReadInt32(); } AO = reader.ReadBoolean(); reader.AlignStream(AlignType.Align4); AOMaxDistance = reader.ReadSingle(); CompAOExponent = reader.ReadSingle(); CompAOExponentDirect = reader.ReadSingle(); if (IsReadExtractAmbientOcclusion(reader.Version)) { ExtractAmbientOcclusion = reader.ReadBoolean(); reader.AlignStream(AlignType.Align4); } Padding = reader.ReadInt32(); LightmapParameters.Read(reader); LightmapsBakeMode = (LightmapsMode)reader.ReadInt32(); TextureCompression = reader.ReadBoolean(); FinalGather = reader.ReadBoolean(); FinalGatherFiltering = reader.ReadBoolean(); reader.AlignStream(AlignType.Align4); FinalGatherRayCount = reader.ReadInt32(); ReflectionCompression = (ReflectionCubemapCompression)reader.ReadInt32(); MixedBakeMode = (MixedLightingMode)reader.ReadInt32(); BakeBackend = (Lightmapper)reader.ReadInt32(); PVRSampling = (Sampling)reader.ReadInt32(); PVRDirectSampleCount = reader.ReadInt32(); PVRSampleCount = reader.ReadInt32(); PVRBounces = reader.ReadInt32(); if (IsReadPVREnvironmentSampleCount(reader.Version)) { PVREnvironmentSampleCount = reader.ReadInt32(); PVREnvironmentReferencePointCount = reader.ReadInt32(); PVRFilteringMode = (FilterMode)reader.ReadInt32(); PVRDenoiserTypeDirect = (DenoiserType)reader.ReadInt32(); PVRDenoiserTypeIndirect = (DenoiserType)reader.ReadInt32(); PVRDenoiserTypeAO = (DenoiserType)reader.ReadInt32(); } PVRFilterTypeDirect = (FilterType)reader.ReadInt32(); PVRFilterTypeIndirect = (FilterType)reader.ReadInt32(); PVRFilterTypeAO = (FilterType)reader.ReadInt32(); if (IsReadPVREnvironmentMIS(reader.Version)) { PVREnvironmentMIS = reader.ReadInt32(); } if (!IsReadPVREnvironmentSampleCount(reader.Version)) { PVRFilteringMode = (FilterMode)reader.ReadInt32(); } PVRCulling = reader.ReadBoolean(); reader.AlignStream(AlignType.Align4); PVRFilteringGaussRadiusDirect = reader.ReadInt32(); PVRFilteringGaussRadiusIndirect = reader.ReadInt32(); PVRFilteringGaussRadiusAO = reader.ReadInt32(); PVRFilteringAtrousPositionSigmaDirect = reader.ReadSingle(); PVRFilteringAtrousPositionSigmaIndirect = reader.ReadSingle(); PVRFilteringAtrousPositionSigmaAO = reader.ReadSingle(); if (IsReadShowResolutionOverlay(reader.Version)) { ShowResolutionOverlay = reader.ReadBoolean(); } reader.AlignStream(AlignType.Align4); if (IsReadExportTrainingData(reader.Version)) { ExportTrainingData = reader.ReadBoolean(); reader.AlignStream(AlignType.Align4); } if (IsReadTrainingDataDestination(reader.Version)) { TrainingDataDestination = reader.ReadString(); } }
private static bool GetEngineBuildInAsset(Object asset, Version version, out EngineBuiltInAsset engineAsset) { switch (asset.ClassID) { case ClassIDType.Material: { Material material = (Material)asset; if (EngineBuiltInAssets.TryGetMaterial(material.Name, version, out engineAsset)) { return(true); } } break; case ClassIDType.Texture2D: { Texture2D texture = (Texture2D)asset; if (EngineBuiltInAssets.TryGetTexture(texture.Name, version, out engineAsset)) { return(true); } } break; case ClassIDType.Mesh: { Mesh mesh = (Mesh)asset; if (EngineBuiltInAssets.TryGetMesh(mesh.Name, version, out engineAsset)) { return(true); } } break; case ClassIDType.Shader: { Shader shader = (Shader)asset; if (EngineBuiltInAssets.TryGetShader(shader.ValidName, version, out engineAsset)) { return(true); } } break; case ClassIDType.Font: { Font font = (Font)asset; if (EngineBuiltInAssets.TryGetFont(font.Name, version, out engineAsset)) { return(true); } } break; case ClassIDType.Sprite: { Sprite sprite = (Sprite)asset; if (EngineBuiltInAssets.TryGetSprite(sprite.Name, version, out engineAsset)) { return(true); } } break; case ClassIDType.LightmapParameters: { LightmapParameters lightParams = (LightmapParameters)asset; if (EngineBuiltInAssets.TryGetLightmapParams(lightParams.Name, version, out engineAsset)) { return(true); } } break; case ClassIDType.MonoBehaviour: { MonoBehaviour behaviour = (MonoBehaviour)asset; if (behaviour.Name != string.Empty) { if (EngineBuiltInAssets.TryGetBehaviour(behaviour.Name, version, out engineAsset)) { return(true); } } } break; } engineAsset = default; return(false); }
public static void SetLightmapParameters(LightmapParameters parameter) { SetObject("m_LightmapEditorSettings.m_LightmapParameters", (Object)parameter); }
public IEnumerable <Object> FetchDependencies(ISerializedFile file, bool isLog = false) { yield return(LightmapParameters.FetchDependency(file, isLog, () => nameof(LightmapEditorSettings), LightmapParametersName)); }
private static EngineBuiltInAsset GetEngineBuildInAsset(Object asset) { switch (asset.ClassID) { case ClassIDType.Material: { Material material = (Material)asset; if (EngineBuiltInAssets.Materials.TryGetValue(material.Name, out EngineBuiltInAsset engineAsset)) { return(engineAsset); } } break; case ClassIDType.Texture2D: { Texture2D texture = (Texture2D)asset; if (EngineBuiltInAssets.Textures.TryGetValue(texture.Name, out EngineBuiltInAsset engineAsset)) { return(engineAsset); } } break; case ClassIDType.Mesh: { Mesh mesh = (Mesh)asset; if (EngineBuiltInAssets.Meshes.TryGetValue(mesh.Name, out EngineBuiltInAsset engineAsset)) { return(engineAsset); } } break; case ClassIDType.Shader: { Shader shader = (Shader)asset; if (EngineBuiltInAssets.Shaders.TryGetValue(shader.ValidName, out EngineBuiltInAsset engineAsset)) { return(engineAsset); } } break; case ClassIDType.Font: { Font font = (Font)asset; if (EngineBuiltInAssets.Fonts.TryGetValue(font.Name, out EngineBuiltInAsset engineAsset)) { return(engineAsset); } } break; case ClassIDType.Sprite: { Sprite sprite = (Sprite)asset; if (EngineBuiltInAssets.Sprites.TryGetValue(sprite.Name, out EngineBuiltInAsset engineAsset)) { return(engineAsset); } } break; case ClassIDType.LightmapParameters: { LightmapParameters lightParams = (LightmapParameters)asset; if (EngineBuiltInAssets.LightmapParams.TryGetValue(lightParams.Name, out EngineBuiltInAsset engineAsset)) { return(engineAsset); } } break; } return(default);
private static Object ReadAsset(AssetStream stream, AssetInfo assetInfo, long offset, int size) { Object asset; switch (assetInfo.ClassID) { case ClassIDType.GameObject: asset = new GameObject(assetInfo); break; case ClassIDType.Transform: asset = new Transform(assetInfo); break; case ClassIDType.Camera: asset = new Camera(assetInfo); break; case ClassIDType.Material: asset = new Material(assetInfo); break; case ClassIDType.MeshRenderer: asset = new MeshRenderer(assetInfo); break; case ClassIDType.Texture2D: asset = new Texture2D(assetInfo); break; case ClassIDType.SceneSettings: asset = new OcclusionCullingSettings(assetInfo); break; case ClassIDType.MeshFilter: asset = new MeshFilter(assetInfo); break; case ClassIDType.OcclusionPortal: asset = new OcclusionPortal(assetInfo); break; case ClassIDType.Mesh: asset = new Mesh(assetInfo); break; case ClassIDType.Shader: asset = new Shader(assetInfo); break; case ClassIDType.TextAsset: asset = new TextAsset(assetInfo); break; case ClassIDType.Rigidbody2D: asset = new Rigidbody2D(assetInfo); break; case ClassIDType.Rigidbody: asset = new Rigidbody(assetInfo); break; case ClassIDType.CircleCollider2D: asset = new CircleCollider2D(assetInfo); break; case ClassIDType.PolygonCollider2D: asset = new PolygonCollider2D(assetInfo); break; case ClassIDType.BoxCollider2D: asset = new BoxCollider2D(assetInfo); break; case ClassIDType.PhysicsMaterial2D: asset = new PhysicsMaterial2D(assetInfo); break; case ClassIDType.MeshCollider: asset = new MeshCollider(assetInfo); break; case ClassIDType.BoxCollider: asset = new BoxCollider(assetInfo); break; case ClassIDType.SpriteCollider2D: asset = new CompositeCollider2D(assetInfo); break; case ClassIDType.EdgeCollider2D: asset = new EdgeCollider2D(assetInfo); break; case ClassIDType.CapsuleCollider2D: asset = new CapsuleCollider2D(assetInfo); break; case ClassIDType.AnimationClip: asset = new AnimationClip(assetInfo); break; case ClassIDType.AudioListener: asset = new AudioListener(assetInfo); break; case ClassIDType.AudioSource: asset = new AudioSource(assetInfo); break; case ClassIDType.AudioClip: asset = new AudioClip(assetInfo); break; case ClassIDType.RenderTexture: asset = new RenderTexture(assetInfo); break; case ClassIDType.Cubemap: asset = new Cubemap(assetInfo); break; case ClassIDType.Avatar: asset = new Avatar(assetInfo); break; case ClassIDType.AnimatorController: asset = new AnimatorController(assetInfo); break; case ClassIDType.GUILayer: asset = new GUILayer(assetInfo); break; case ClassIDType.Animator: asset = new Animator(assetInfo); break; case ClassIDType.RenderSettings: asset = new RenderSettings(assetInfo); break; case ClassIDType.Light: asset = new Light(assetInfo); break; case ClassIDType.Animation: asset = new Animation(assetInfo); break; case ClassIDType.MonoScript: asset = new MonoScript(assetInfo); break; case ClassIDType.NewAnimationTrack: asset = new NewAnimationTrack(assetInfo); break; case ClassIDType.FlareLayer: asset = new FlareLayer(assetInfo); break; case ClassIDType.Font: asset = new Font(assetInfo); break; case ClassIDType.PhysicMaterial: asset = new PhysicMaterial(assetInfo); break; case ClassIDType.SphereCollider: asset = new SphereCollider(assetInfo); break; case ClassIDType.CapsuleCollider: asset = new CapsuleCollider(assetInfo); break; case ClassIDType.SkinnedMeshRenderer: asset = new SkinnedMeshRenderer(assetInfo); break; case ClassIDType.BuildSettings: asset = new BuildSettings(assetInfo); break; case ClassIDType.AssetBundle: asset = new AssetBundle(assetInfo); break; case ClassIDType.WheelCollider: asset = new WheelCollider(assetInfo); break; case ClassIDType.MovieTexture: asset = new MovieTexture(assetInfo); break; case ClassIDType.TerrainCollider: asset = new TerrainCollider(assetInfo); break; case ClassIDType.TerrainData: asset = new TerrainData(assetInfo); break; case ClassIDType.LightmapSettings: asset = new LightmapSettings(assetInfo); break; case ClassIDType.OcclusionArea: asset = new OcclusionArea(assetInfo); break; case ClassIDType.NavMeshSettings: asset = new NavMeshSettings(assetInfo); break; case ClassIDType.ParticleSystem: asset = new ParticleSystem(assetInfo); break; case ClassIDType.ParticleSystemRenderer: asset = new ParticleSystemRenderer(assetInfo); break; case ClassIDType.SpriteRenderer: asset = new SpriteRenderer(assetInfo); break; case ClassIDType.Sprite: asset = new Sprite(assetInfo); break; case ClassIDType.Terrain: asset = new Terrain(assetInfo); break; case ClassIDType.AnimatorOverrideController: asset = new AnimatorOverrideController(assetInfo); break; case ClassIDType.CanvasRenderer: asset = new CanvasRenderer(assetInfo); break; case ClassIDType.Canvas: asset = new Canvas(assetInfo); break; case ClassIDType.RectTransform: asset = new RectTransform(assetInfo); break; case ClassIDType.NavMeshData: asset = new NavMeshData(assetInfo); break; case ClassIDType.OcclusionCullingData: asset = new OcclusionCullingData(assetInfo); break; case ClassIDType.SceneAsset: asset = new SceneAsset(assetInfo); break; case ClassIDType.LightmapParameters: asset = new LightmapParameters(assetInfo); break; case ClassIDType.SpriteAtlas: asset = new SpriteAtlas(assetInfo); break; default: return(null); } stream.BaseStream.Position = offset; if (Config.IsGenerateGUIDByContent) { byte[] data = stream.ReadBytes(size); asset.Read(data); using (MD5 md5 = MD5.Create()) { byte[] md5Hash = md5.ComputeHash(data); assetInfo.GUID = new UtinyGUID(md5Hash); } } else { stream.AlignPosition = offset; asset.Read(stream); long read = stream.BaseStream.Position - offset; if (read != size) { throw new Exception($"Read {read} but expected {size} for object {asset.GetType().Name}"); } } return(asset); }