internal static Shader GetShader(UnityEngine.Config.FileMap fms) { if (!shaders.ContainsKey(fms.Key())) { // get a shader from fms. var m = rmManager.GetFromInfo(fms); if (m == null) // it is maybe a internal shader, need to manual return here. { var shader = new Shader(); shader._Init(fms); shader.name = ""; shaders[fms.Key()] = shader; } else { var shader = new Shader(); shader._Init(fms); shader.name = m.p0; shaders[fms.Key()] = shader; } } return(shaders[fms.Key()]); }
internal static AnimationClip GetAnimationClip(UnityEngine.Config.FileMap fms) { if (fms.IsEmpty()) { return(null); } MeshImport mi = GetMeshImport(fms); if (mi == null || mi.config == null || mi.config.importAnimation == 0) { return(null); } var key = fms.Key(); if (animationClips.ContainsKey(key)) { return(animationClips[key]); } // find name from fileID var name = mi.config.fileIDToRecycleName.GetValueFromKey(fms.fileID); if (String.IsNullOrEmpty(name)) { return(null); } foreach (var c in mi.config.animations.clipAnimations) { if (c.name == name) { var clip = new AnimationClip(); clip.SetFromRaw(c); animationClips[key] = clip; return(clip); } } // if the name is not found in the file. it is the default. var rm = rmManager.GetFromInfo(fms); if (rm == null) { return(null); } var rawclip = new UnityEngine.Config.ModelImporterAnimationClip(); rawclip.firstFrame = 0; rawclip.lastFrame = 30; rawclip.wrapMode = 1; var antStarts = rm.name.IndexOf("@"); if (antStarts != -1) { rawclip.name = rm.name.Substring(antStarts + 1); } else { rawclip.name = name; } var aclip = new AnimationClip(); aclip.SetFromRaw(rawclip); animationClips[key] = aclip; return(aclip); }