public Avatar Clone(AssetCabinet file) { Component avatar = file.Components.Find ( delegate(Component asset) { return(asset.classID1 == UnityClassID.Avatar && (asset is NotLoaded ? ((NotLoaded)asset).Name : ((Avatar)asset).m_Name) == m_Name); } ); if (avatar == null) { file.MergeTypeDefinition(this.file, UnityClassID.Avatar); Avatar dest = new Avatar(file); using (MemoryStream mem = new MemoryStream()) { this.WriteTo(mem); mem.Position = 0; dest.LoadFrom(mem); } return(dest); } else if (avatar is NotLoaded) { NotLoaded notLoaded = (NotLoaded)avatar; avatar = file.LoadComponent(file.SourceStream, notLoaded); } return((Avatar)avatar); }
public MonoScript Clone(AssetCabinet file) { Component monoS = file.Bundle.FindComponent(m_Name, UnityClassID.MonoScript); if (monoS == null) { file.MergeTypeDefinition(this.file, UnityClassID.MonoScript); monoS = new MonoScript(file); file.Bundle.AddComponent(m_Name, monoS); using (MemoryStream mem = new MemoryStream()) { WriteTo(mem); mem.Position = 0; monoS.LoadFrom(mem); } } else if (monoS is NotLoaded) { NotLoaded notLoaded = (NotLoaded)monoS; if (notLoaded.replacement != null) { monoS = notLoaded.replacement; } else { monoS = file.LoadComponent(file.SourceStream, notLoaded); } } return((MonoScript)monoS); }
public Texture2D Clone(AssetCabinet file) { Component tex = file.Bundle != null ? file.Bundle.FindComponent(m_Name, UnityClassID.Texture2D) : file.Parser.GetTexture(m_Name); if (tex == null) { file.MergeTypeDefinition(this.file, UnityClassID.Texture2D); tex = new Texture2D(file); if (file.Bundle != null) { file.Bundle.AddComponent(m_Name, tex); } CopyAttributesTo((Texture2D)tex); CopyImageTo((Texture2D)tex); } else if (tex is NotLoaded) { NotLoaded notLoaded = (NotLoaded)tex; if (notLoaded.replacement != null) { tex = notLoaded.replacement; } else { tex = file.LoadComponent(file.SourceStream, notLoaded); } } return((Texture2D)tex); }
public PPtr(Stream stream, AssetCabinet file) { LoadFrom(stream); if (m_FileID == 0) { int index; Component comp = file.FindComponent(m_PathID, out index); if (comp is NotLoaded) { long pos = stream.Position; asset = file.LoadComponent(stream, index, (NotLoaded)comp); if (asset == null) { asset = comp; } stream.Position = pos; } else { asset = comp; } if (asset is T) { instance = (T)asset; } } }
public TextAsset Clone(AssetCabinet file) { Component text = file.Components.Find ( delegate(Component asset) { return(asset.classID1 == UnityClassID.TextAsset && (asset is NotLoaded ? ((NotLoaded)asset).Name : ((TextAsset)asset).m_Name) == m_Name); } ); if (text == null) { file.MergeTypeDefinition(this.file, UnityClassID.TextAsset); TextAsset dest = new TextAsset(file); file.Bundle.AddComponent(m_Name, dest); using (MemoryStream mem = new MemoryStream()) { this.WriteTo(mem); mem.Position = 0; dest.LoadFrom(mem); } return(dest); } else if (text is NotLoaded) { NotLoaded notLoaded = (NotLoaded)text; text = file.LoadComponent(file.SourceStream, notLoaded); } return((TextAsset)text); }
public new Cubemap Clone(AssetCabinet file) { Component cubemap = file.Bundle.FindComponent(m_Name, UnityClassID.Cubemap); if (cubemap == null) { file.MergeTypeDefinition(this.file, UnityClassID.Cubemap); Cubemap clone = new Cubemap(file); file.Bundle.AddComponent(m_Name, clone); CopyAttributesTo(clone); CopyImageTo(clone); foreach (PPtr<Texture2D> texPtr in m_SourceTextures) { if (texPtr.asset != null) { clone.m_SourceTextures.Add(new PPtr<Texture2D>(texPtr.instance.Clone(file))); } } return clone; } else if (cubemap is NotLoaded) { NotLoaded notLoaded = (NotLoaded)cubemap; if (notLoaded.replacement != null) { cubemap = notLoaded.replacement; } else { cubemap = file.LoadComponent(file.SourceStream, notLoaded); } } return (Cubemap)cubemap; }
public Material Clone(AssetCabinet file, bool cloneTextures) { Component mat = file.Bundle != null?file.Bundle.FindComponent(m_Name, UnityClassID.Material) : null; if (mat == null) { file.MergeTypeDefinition(this.file, UnityClassID.Material); mat = new Material(file); if (file.Bundle != null) { file.Bundle.AddComponent(m_Name, mat); } CopyTo((Material)mat, cloneTextures); } else if (mat is NotLoaded) { NotLoaded notLoaded = (NotLoaded)mat; if (notLoaded.replacement != null) { mat = notLoaded.replacement; } else { mat = file.LoadComponent(file.SourceStream, notLoaded); } } return((Material)mat); }
public new Cubemap Clone(AssetCabinet file) { Component cubemap = file.Bundle.FindComponent(m_Name, UnityClassID.Cubemap); if (cubemap == null) { file.MergeTypeDefinition(this.file, UnityClassID.Cubemap); Cubemap clone = new Cubemap(file); file.Bundle.AddComponent(m_Name, clone); CopyAttributesTo(clone); CopyImageTo(clone); foreach (PPtr <Texture2D> texPtr in m_SourceTextures) { if (texPtr.asset != null) { clone.m_SourceTextures.Add(new PPtr <Texture2D>(texPtr.instance.Clone(file))); } } return(clone); } else if (cubemap is NotLoaded) { NotLoaded notLoaded = (NotLoaded)cubemap; if (notLoaded.replacement != null) { cubemap = notLoaded.replacement; } else { cubemap = file.LoadComponent(file.SourceStream, notLoaded); } } return((Cubemap)cubemap); }
public AnimationClip Clone(AssetCabinet file) { Component clip = file.Components.Find ( delegate(Component asset) { return(asset.classID() == UnityClassID.AnimationClip && (asset is NotLoaded ? ((NotLoaded)asset).Name : ((AnimationClip)asset).m_Name) == m_Name); } ); if (clip == null) { file.MergeTypeDefinition(this.file, UnityClassID.AnimationClip); clip = new AnimationClip(file); } else if (clip is NotLoaded) { NotLoaded notLoaded = (NotLoaded)clip; clip = file.LoadComponent(file.SourceStream, notLoaded); } using (MemoryStream mem = new MemoryStream()) { WriteTo(mem); mem.Position = 0; clip.LoadFrom(mem); } return((AnimationClip)clip); }
public Animator Clone(AssetCabinet file) { Component gameObj = file.Bundle.FindComponent(m_GameObject.instance.m_Name, UnityClassID.GameObject); if (gameObj == null) { file.MergeTypeDefinition(this.file, UnityClassID.Animator); Animator dest = new Animator(file); AssetCabinet.IncompleteClones.Add(new Tuple <Component, Component>(this, dest)); return(dest); } else if (gameObj is NotLoaded) { NotLoaded notLoaded = (NotLoaded)gameObj; if (notLoaded.replacement != null) { gameObj = notLoaded.replacement; } else { gameObj = file.LoadComponent(file.SourceStream, notLoaded); } } return(((GameObject)gameObj).FindLinkedComponent(UnityClassID.Animator)); }
public MonoScript Clone(AssetCabinet file) { Component monoS; if (file.VersionNumber < AssetCabinet.VERSION_5_0_0) { monoS = file.Bundle.FindComponent(m_Name, UnityClassID.MonoScript); } else { string searchName = " / " + m_Name; PPtr <Object> ms = file.AssetRefs.Find ( delegate(PPtr <Object> objPtr) { return(objPtr.asset != null && ( objPtr.asset is NotLoaded && ((NotLoaded)objPtr.asset).Name.EndsWith(searchName) || objPtr.asset is MonoScript && ((MonoScript)objPtr.asset).m_Name == m_Name )); } ); monoS = ms != null ? ms.asset : null; } if (monoS == null) { file.MergeTypeDefinition(this.file, UnityClassID.MonoScript); monoS = new MonoScript(file); if (file.VersionNumber < AssetCabinet.VERSION_5_0_0) { file.Bundle.AddComponent(m_Name, monoS); } else { file.AssetRefs.Add(new PPtr <Object>(monoS)); } using (MemoryStream mem = new MemoryStream()) { WriteTo(mem); mem.Position = 0; monoS.LoadFrom(mem); } } else if (monoS is NotLoaded) { NotLoaded notLoaded = (NotLoaded)monoS; if (notLoaded.replacement != null) { monoS = notLoaded.replacement; } else { monoS = file.LoadComponent(file.SourceStream, notLoaded); } } return((MonoScript)monoS); }
public Material Clone(AssetCabinet file, bool cloneTextures) { Component mat = file != this.file ? file.Bundle != null && !file.Bundle.m_IsStreamedSceneAssetBundle ? file.Bundle.FindComponent(m_Name, UnityClassID.Material) : file.Components.Find ( delegate(Component asset) { return(asset.classID() == UnityClassID.Material && (asset is NotLoaded ? ((NotLoaded)asset).Name : ((Material)asset).m_Name) == m_Name); } ) : null; if (mat == null) { file.MergeTypeDefinition(this.file, UnityClassID.Material); mat = new Material(file); if (file.Bundle != null && this.file.Bundle != null) { List <Component> externals = new List <Component>(); AssetBundle.AddExternalAssetsFromPreloadTable(this, this.file.Bundle, externals); for (int i = 0; i < externals.Count; i++) { ExternalAsset ext = (ExternalAsset)externals[i]; string assetPath = this.file.References[ext.FileID - 1].assetPath; int cabPos = assetPath.LastIndexOf("/") + 1; if (!AssetCabinet.LoadedCabinets.ContainsKey(assetPath.Substring(cabPos))) { ext.FileID = file.MergeReference(this.file, ext.FileID); } else { externals.RemoveAt(i--); } } file.Bundle.AddComponent(m_Name, mat, externals); } CopyTo((Material)mat, cloneTextures); } else if (mat is NotLoaded) { NotLoaded notLoaded = (NotLoaded)mat; if (notLoaded.replacement != null) { mat = notLoaded.replacement; } else { mat = file.LoadComponent(file.SourceStream, notLoaded); } } return((Material)mat); }
public Shader Clone(AssetCabinet file) { Component sha = file.Bundle != null?file.Bundle.FindComponent(m_Name, UnityClassID.Shader) : null; if (sha == null) { file.MergeTypeDefinition(this.file, UnityClassID.Shader); Shader dest = new Shader(file); if (file.Bundle != null) { file.Bundle.AddComponent(m_Name, dest); } dest.m_Name = m_Name; dest.m_Script = m_Script; dest.m_PathName = m_PathName; foreach (PPtr <Shader> asset in m_Dependencies) { sha = asset.asset; if (sha != null) { Type t = sha.GetType(); MethodInfo info = t.GetMethod("Clone", new Type[] { typeof(AssetCabinet) }); sha = (Component)info.Invoke(sha, new object[] { file }); } dest.m_Dependencies.Add(new PPtr <Shader>(sha)); } dest.m_ShaderIsBaked = m_ShaderIsBaked; return(dest); } else if (sha is NotLoaded) { NotLoaded notLoaded = (NotLoaded)sha; if (notLoaded.replacement != null) { sha = notLoaded.replacement; } else { sha = file.LoadComponent(file.SourceStream, notLoaded); } } return((Shader)sha); }
public Mesh Clone(AssetCabinet file) { Mesh mesh = null; foreach (Component a in file.Components) { if (a.classID() == UnityClassID.Mesh) { if (a is NotLoaded && ((NotLoaded)a).Name == m_Name) { mesh = file.LoadComponent(file.SourceStream, (NotLoaded)a); break; } if (a is Mesh && ((Mesh)a).m_Name == m_Name) { mesh = (Mesh)a; break; } } } if (mesh != null) { if (mesh.m_SubMeshes.Count == m_SubMeshes.Count && mesh.m_VertexData.m_VertexCount == m_VertexData.m_VertexCount && mesh.m_IndexBuffer.Length == m_IndexBuffer.Length && mesh.m_LocalAABB.m_Center == m_LocalAABB.m_Center && mesh.m_LocalAABB.m_Extend == m_LocalAABB.m_Extend) { return(mesh); } } else { file.MergeTypeDefinition(this.file, UnityClassID.Mesh); } mesh = new Mesh(file); using (MemoryStream mem = new MemoryStream()) { WriteTo(mem); mem.Position = 0; mesh.LoadFrom(mem); } return(mesh); }
public Sprite Clone(AssetCabinet file) { Component sprite = file.Bundle.FindComponent(m_Name, UnityClassID.Sprite); if (sprite == null) { if (m_RD.texture.instance == null) { throw new Exception("Cant clone textureless Sprite"); } file.MergeTypeDefinition(this.file, UnityClassID.Sprite); Sprite dest = new Sprite(file); dest.m_Name = m_Name; dest.m_Rect = m_Rect.Clone(); dest.m_Offset = m_Offset; dest.m_Border = m_Border; dest.m_PixelsToUnits = m_PixelsToUnits; dest.m_Extrude = m_Extrude; dest.m_IsPolygon = m_IsPolygon; dest.m_RD = m_RD.Clone(file); file.Bundle.UnregisterFromUpdate(dest.m_RD.texture.instance); file.Bundle.AppendComponent(m_RD.texture.instance.m_Name, UnityClassID.Texture2D, dest); file.Bundle.RegisterForUpdate(dest); return(dest); } else if (sprite is NotLoaded) { NotLoaded notLoaded = (NotLoaded)sprite; if (notLoaded.replacement != null) { sprite = notLoaded.replacement; } else { sprite = file.LoadComponent(file.SourceStream, notLoaded); } } return((Sprite)sprite); }
public PhysicMaterial Clone(AssetCabinet file) { Component pMat = file != this.file ? file.Components.Find ( delegate(Component asset) { return(asset.classID() == UnityClassID.PhysicMaterial && (asset is NotLoaded ? ((NotLoaded)asset).Name : ((PhysicMaterial)asset).m_Name) == m_Name); } ) : null; if (pMat == null) { file.MergeTypeDefinition(this.file, UnityClassID.PhysicMaterial); PhysicMaterial clone = new PhysicMaterial(file); clone.m_Name = m_Name; clone.dynamicFriction = dynamicFriction; clone.staticFriction = staticFriction; clone.bounciness = bounciness; clone.frictionCombine = frictionCombine; clone.bounceCombine = bounceCombine; return(clone); } else if (pMat is NotLoaded) { NotLoaded notLoaded = (NotLoaded)pMat; if (notLoaded.replacement != null) { pMat = notLoaded.replacement; } else { pMat = file.LoadComponent(file.SourceStream, notLoaded); } } return((PhysicMaterial)pMat); }
public Avatar Clone(AssetCabinet file) { Component avatar = file.Components.Find ( delegate (Component asset) { return asset.classID1 == UnityClassID.Avatar && (asset is NotLoaded ? ((NotLoaded)asset).Name : ((Avatar)asset).m_Name) == m_Name; } ); if (avatar == null) { file.MergeTypeDefinition(this.file, UnityClassID.Avatar); Avatar dest = new Avatar(file); using (MemoryStream mem = new MemoryStream()) { this.WriteTo(mem); mem.Position = 0; dest.LoadFrom(mem); } return dest; } else if (avatar is NotLoaded) { NotLoaded notLoaded = (NotLoaded)avatar; avatar = file.LoadComponent(file.SourceStream, notLoaded); } return (Avatar)avatar; }
public Animator Clone(AssetCabinet file) { Component gameObj = file.Bundle.FindComponent(m_GameObject.instance.m_Name, UnityClassID.GameObject); if (gameObj == null) { file.MergeTypeDefinition(this.file, UnityClassID.Animator); Animator dest = new Animator(file); AssetCabinet.IncompleteClones.Add(new Tuple<Component, Component>(this, dest)); return dest; } else if (gameObj is NotLoaded) { NotLoaded notLoaded = (NotLoaded)gameObj; if (notLoaded.replacement != null) { gameObj = notLoaded.replacement; } else { gameObj = file.LoadComponent(file.SourceStream, notLoaded); } } return ((GameObject)gameObj).FindLinkedComponent(UnityClassID.Animator); }
public Texture2D Clone(AssetCabinet file) { Component tex = file.Bundle != null ? file.Bundle.FindComponent(m_Name, UnityClassID.Texture2D) : file.Parser.GetTexture(m_Name); if (tex == null) { file.MergeTypeDefinition(this.file, UnityClassID.Texture2D); tex = new Texture2D(file); if (file.Bundle != null) { file.Bundle.AddComponent(m_Name, tex); } CopyAttributesTo((Texture2D)tex); CopyImageTo((Texture2D)tex); } else if (tex is NotLoaded) { NotLoaded notLoaded = (NotLoaded)tex; if (notLoaded.replacement != null) { tex = notLoaded.replacement; } else { tex = file.LoadComponent(file.SourceStream, notLoaded); } } return (Texture2D)tex; }
public Sprite Clone(AssetCabinet file) { Component sprite = file.Bundle.FindComponent(m_Name, UnityClassID.Sprite); if (sprite == null) { if (m_RD.texture.instance == null) { throw new Exception("Cant clone textureless Sprite"); } file.MergeTypeDefinition(this.file, UnityClassID.Sprite); Sprite dest = new Sprite(file); dest.m_Name = m_Name; dest.m_Rect = m_Rect.Clone(); dest.m_Offset = m_Offset; dest.m_Border = m_Border; dest.m_PixelsToUnits = m_PixelsToUnits; dest.m_Extrude = m_Extrude; dest.m_RD = m_RD.Clone(file); file.Bundle.UnregisterFromUpdate(dest.m_RD.texture.instance); file.Bundle.AppendComponent(m_RD.texture.instance.m_Name, UnityClassID.Texture2D, dest); file.Bundle.RegisterForUpdate(dest); return dest; } else if (sprite is NotLoaded) { NotLoaded notLoaded = (NotLoaded)sprite; if (notLoaded.replacement != null) { sprite = notLoaded.replacement; } else { sprite = file.LoadComponent(file.SourceStream, notLoaded); } } return (Sprite)sprite; }
public Material Clone(AssetCabinet file, bool cloneTextures) { Component mat = file.Bundle != null ? file.Bundle.FindComponent(m_Name, UnityClassID.Material) : null; if (mat == null) { file.MergeTypeDefinition(this.file, UnityClassID.Material); mat = new Material(file); if (file.Bundle != null) { file.Bundle.AddComponent(m_Name, mat); } CopyTo((Material)mat, cloneTextures); } else if (mat is NotLoaded) { NotLoaded notLoaded = (NotLoaded)mat; if (notLoaded.replacement != null) { mat = notLoaded.replacement; } else { mat = file.LoadComponent(file.SourceStream, notLoaded); } } return (Material)mat; }
public TextAsset Clone(AssetCabinet file) { Component text = file.Components.Find ( delegate(Component asset) { return asset.classID1 == UnityClassID.TextAsset && (asset is NotLoaded ? ((NotLoaded)asset).Name : ((TextAsset)asset).m_Name) == m_Name; } ); if (text == null) { file.MergeTypeDefinition(this.file, UnityClassID.TextAsset); TextAsset dest = new TextAsset(file); using (MemoryStream mem = new MemoryStream()) { this.WriteTo(mem); mem.Position = 0; dest.LoadFrom(mem); } return dest; } else if (text is NotLoaded) { NotLoaded notLoaded = (NotLoaded)text; text = file.LoadComponent(file.SourceStream, notLoaded); } return (TextAsset)text; }
public MonoScript Clone(AssetCabinet file) { Component monoS = file.Bundle.FindComponent(m_Name, UnityClassID.MonoScript); if (monoS == null) { file.MergeTypeDefinition(this.file, UnityClassID.MonoScript); monoS = new MonoScript(file); file.Bundle.AddComponent(m_Name, monoS); using (MemoryStream mem = new MemoryStream()) { WriteTo(mem); mem.Position = 0; monoS.LoadFrom(mem); } } else if (monoS is NotLoaded) { NotLoaded notLoaded = (NotLoaded)monoS; if (notLoaded.replacement != null) { monoS = notLoaded.replacement; } else { monoS = file.LoadComponent(file.SourceStream, notLoaded); } } return (MonoScript)monoS; }
public Shader Clone(AssetCabinet file) { Component sha = file.Bundle != null ? file.Bundle.FindComponent(m_Name, UnityClassID.Shader) : null; if (sha == null) { file.MergeTypeDefinition(this.file, UnityClassID.Shader); Shader dest = new Shader(file); if (file.Bundle != null) { file.Bundle.AddComponent(m_Name, dest); } dest.m_Name = m_Name; dest.m_Script = m_Script; dest.m_PathName = m_PathName; foreach (PPtr<Shader> asset in m_Dependencies) { sha = asset.asset; if (sha != null) { Type t = sha.GetType(); MethodInfo info = t.GetMethod("Clone", new Type[] { typeof(AssetCabinet) }); sha = (Component)info.Invoke(sha, new object[] { file }); } dest.m_Dependencies.Add(new PPtr<Shader>(sha)); } dest.m_ShaderIsBaked = m_ShaderIsBaked; return dest; } else if (sha is NotLoaded) { NotLoaded notLoaded = (NotLoaded)sha; if (notLoaded.replacement != null) { sha = notLoaded.replacement; } else { sha = file.LoadComponent(file.SourceStream, notLoaded); } } return (Shader)sha; }