public FormLoadedByTypeDefinition(UnityParser uParser, string parserVar) { try { InitializeComponent(); this.ShowHint = DockState.Document; LoadedByTypeDefinition parser = (LoadedByTypeDefinition)Gui.Scripting.Variables[parserVar]; this.Text = AssetCabinet.ToString(parser); this.ToolTipText = uParser.FilePath + @"\" + this.Text; EditorVar = Gui.Scripting.GetNextVariable("loadedByTypeDefinitionEditor"); Editor = (LoadedByTypeDefinitionEditor)Gui.Scripting.RunScript(EditorVar + " = LoadedByTypeDefinitionEditor(parser=" + parserVar + ")"); toolTip1.SetToolTip(buttonRevert, DateTime.Now.ToString()); Gui.Docking.ShowDockContent(this, Gui.Docking.DockEditors, ContentCategory.Others); float treeViewFontSize = (float)Gui.Config["TreeViewFontSize"]; if (treeViewFontSize > 0) { treeViewMembers.Font = new Font(treeViewMembers.Font.Name, treeViewFontSize); } LoadContents(); } catch (Exception e) { Utility.ReportException(e); } }
public LoadedByTypeDefinitionEditor(LoadedByTypeDefinition parser) { Parser = parser; using (Stream stream = new MemoryStream()) { Parser.WriteTo(stream); backupLoadedByTypeDefinition = new LoadedByTypeDefinition(Parser.file, Parser.classID1, Parser.classID2); stream.Position = 0; backupLoadedByTypeDefinition.LoadFrom(stream); backupLoadedByTypeDefinition.file.Components.Remove(backupLoadedByTypeDefinition); } }
public LoadedByTypeDefinition Clone(AssetCabinet file) { if (file.Parser.ExtendedSignature == null) { return(null); } AssetCabinet.TypeDefinition srcDef; if (this.file.VersionNumber < AssetCabinet.VERSION_5_5_0 || classID2 != UnityClassID.MonoBehaviour) { srcDef = this.file.Types.Find ( delegate(AssetCabinet.TypeDefinition def) { return(def.typeId == (int)this.classID1); } ); } else { srcDef = this.file.Types[(int)this.classID1]; } bool found = false; AssetCabinet.TypeDefinition destDef = null; for (int i = 0; i < file.Types.Count; i++) { if (AssetCabinet.CompareTypes(srcDef, file.Types[i])) { destDef = file.Types[i]; found = true; break; } } if (!found) { destDef = srcDef.Clone(file.VersionNumber); file.Types.Add(destDef); } LoadedByTypeDefinition dest = new LoadedByTypeDefinition(file, classID1, classID2); dest.parser = new TypeParser(file, destDef); AssetCabinet.IncompleteClones.Add(new Tuple <Component, Component>(this, dest)); return(dest); }
private void LoadMembers(int changedLine, int numNodes) { HashSet <int> updates = new HashSet <int>(); if (changedLine >= 0) { HashSet <int> changes = GetChanges(treeViewMembers.Nodes); foreach (int change in changes) { int update = change >= changedLine + numNodes ? change + numNodes : change; updates.Add(update); } } SuspendLayout(); treeViewMembers.Nodes.Clear(); line = 0; LoadedByTypeDefinition parser = Editor.Parser; int startMember = parser.m_GameObject != null ? 1 : 0; for (int i = startMember; i < parser.parser.type.Members.Count; i++) { CreateMember(ref line, parser.parser.type.Members[i], -1, treeViewMembers.Nodes); } if (updates.Count > 0) { UpdateNodes(treeViewMembers.Nodes, updates); } if (line < 25) { treeViewMembers.ExpandAll(); } ResumeLayout(); ReselectEditedNode(); }
public void CopyTo(LoadedByTypeDefinition dest) { UPPtr.AnimatorRoot = null; PPtr <GameObject> gameObjPtr = dest.m_GameObject; if (gameObjPtr != null) { GameObject gameObj = (GameObject)gameObjPtr.asset; if (gameObj != null) { Transform trans = gameObj.FindLinkedComponent(typeof(Transform)); while (trans.Parent != null) { trans = trans.Parent; } UPPtr.AnimatorRoot = trans; } parser.type.CopyToRootClass(dest.parser.type); } else { parser.type.CopyTo(dest.parser.type); } }
private void LoadContents() { LoadedByTypeDefinition parser = Editor.Parser; LoadMembers(-1, 0); }
public override void CopyTo(UType dest) { Component asset = null; if (Value.asset != null) { string name = AssetCabinet.ToString(Value.asset); asset = ((UPPtr)dest).file.Bundle.FindComponent(name, Value.asset.classID()); if (asset == null) { switch (Value.asset.classID()) { case UnityClassID.GameObject: if (((UPPtr)dest).Value == null) { GameObject gObj = (GameObject)Value.asset; if (gObj != null) { Transform trans = gObj.FindLinkedComponent(typeof(Transform)); trans = AnimatorRoot != null?Operations.FindFrame(trans.GetTransformPath(), AnimatorRoot) : null; if (trans != null) { asset = trans.m_GameObject.instance; break; } } Report.ReportLog("Warning! Losing PPtr<" + Value.asset.classID() + "> " + Name + " to " + name); break; } return; case UnityClassID.Light: GameObject gameObj = ((Light)Value.asset).m_GameObject.instance; if (gameObj != null) { Transform trans = gameObj.FindLinkedComponent(typeof(Transform)); trans = AnimatorRoot != null?Operations.FindFrame(trans.GetTransformPath(), AnimatorRoot) : null; if (trans != null) { asset = trans.m_GameObject.instance.FindLinkedComponent(UnityClassID.Light); } else { foreach (Component a in ((UPPtr)dest).file.Components) { if (a.classID() == UnityClassID.Light) { string n = a is NotLoaded ? ((NotLoaded)a).Name : AssetCabinet.ToString(a); if (n == name) { asset = a; Report.ReportLog("Warning! Unsharp search for PPtr<" + Value.asset.classID() + "> " + Name + " to " + name + " found PathID=" + a.pathID); break; } } } if (asset == null) { Report.ReportLog("Warning! Losing PPtr<" + Value.asset.classID() + "> " + Name + " to " + name); } } } break; case UnityClassID.MonoBehaviour: gameObj = ((MonoBehaviour)Value.asset).m_GameObject.instance; if (gameObj != null) { Transform trans = gameObj.FindLinkedComponent(typeof(Transform)); trans = AnimatorRoot != null?Operations.FindFrame(trans.GetTransformPath(), AnimatorRoot) : null; if (trans != null) { AssetCabinet.TypeDefinition srcDef = this.file.VersionNumber < AssetCabinet.VERSION_5_5_0 ? this.file.Types.Find ( delegate(AssetCabinet.TypeDefinition def) { return(def.typeId == (int)((MonoBehaviour)Value.asset).classID1); } ) : this.file.Types[(int)((MonoBehaviour)Value.asset).classID1]; bool found = false; var m_Component = trans.m_GameObject.instance.m_Component; for (int i = 0; i < m_Component.Count; i++) { if (m_Component[i].Value.asset != null && m_Component[i].Value.asset.classID() == UnityClassID.MonoBehaviour) { AssetCabinet.TypeDefinition destDef = ((UPPtr)dest).file.VersionNumber < AssetCabinet.VERSION_5_5_0 ? ((UPPtr)dest).file.Types.Find ( delegate(AssetCabinet.TypeDefinition def) { return(def.typeId == (int)((MonoBehaviour)m_Component[i].Value.asset).classID1); } ) : ((UPPtr)dest).file.Types[(int)((MonoBehaviour)m_Component[i].Value.asset).classID1]; if (AssetCabinet.CompareTypes(destDef, srcDef)) { asset = m_Component[i].Value.asset; found = true; break; } } } if (!found) { asset = ((MonoBehaviour)Value.asset).Clone(((UPPtr)dest).file); trans.m_GameObject.instance.AddLinkedComponent((LinkedByGameObject)asset); } } else { Report.ReportLog("Error! Reference to " + Value.asset.classID() + " " + name + " lost. Member " + Name); } } else { asset = ((MonoBehaviour)Value.asset).Clone(((UPPtr)dest).file); } break; case UnityClassID.MonoScript: asset = ((MonoScript)Value.asset).Clone(((UPPtr)dest).file); break; case UnityClassID.Sprite: asset = ((Sprite)Value.asset).Clone(((UPPtr)dest).file); break; case UnityClassID.Transform: asset = AnimatorRoot != null?Operations.FindFrame(((Transform)Value.asset).GetTransformPath(), AnimatorRoot) : null; if (asset == null) { Report.ReportLog("Warning! Reference to " + UnityClassID.Transform + " " + name + " lost. Member " + Name); } break; case UnityClassID.Material: asset = ((Material)Value.asset).Clone(((UPPtr)dest).file); break; case UnityClassID.MeshRenderer: case UnityClassID.SkinnedMeshRenderer: asset = AnimatorRoot != null?Operations.FindMesh(AnimatorRoot, name) : null; if (asset == null) { Report.ReportLog("Warning! Reference to " + Value.asset.classID() + " " + name + " lost. Member " + Name); } break; case UnityClassID.Texture2D: asset = ((Texture2D)Value.asset).Clone(((UPPtr)dest).file); break; case UnityClassID.Cubemap: asset = ((Cubemap)Value.asset).Clone(((UPPtr)dest).file); break; default: if (Value.asset is LoadedByTypeDefinition) { LoadedByTypeDefinition loadedByTypeDef = (LoadedByTypeDefinition)Value.asset; PPtr <GameObject> gameObjPtr = loadedByTypeDef.m_GameObject; if (gameObjPtr == null) { AssetCabinet file = ((UPPtr)dest).file; foreach (Component a in file.Components) { if (a.classID() == loadedByTypeDef.classID() && (a is NotLoaded ? ((NotLoaded)a).Name : AssetCabinet.ToString(a)) == loadedByTypeDef.m_Name) { asset = a; file = null; break; } } if (file != null) { asset = loadedByTypeDef.Clone(file); } } else { Transform srcTrans = gameObjPtr.instance.FindLinkedComponent(typeof(Transform)); Transform destTrans = AnimatorRoot != null?Operations.FindFrame(srcTrans.GetTransformPath(), AnimatorRoot) : null; if (destTrans != null) { asset = destTrans.m_GameObject.instance.FindLinkedComponent(loadedByTypeDef.classID()); } else { foreach (Component a in ((UPPtr)dest).file.Components) { if (a.classID() == Value.asset.classID()) { string n = a is NotLoaded ? ((NotLoaded)a).Name : AssetCabinet.ToString(a); if (n == name) { asset = a; Report.ReportLog("Warning! Unsharp search for PPtr<" + Value.asset.classID() + "> " + Name + " to " + name + " found PathID=" + a.pathID); break; } } } if (asset == null) { Report.ReportLog("Warning! Losing PPtr<" + Value.asset.classID() + "> " + Name + " to " + name); } } } } else { Report.ReportLog("Warning! Reference to " + Value.asset.classID() + " " + name + " unhandled. Member " + Name); } break; } } } ((UPPtr)dest).Value = new PPtr <Object>(asset); }