public static bool SetAttributes(UType utype, ref int currentLine, int lineToChange, string value, AssetCabinet file) { if (utype is UClass) { if (((UClass)utype).ClassName == "string") { if (currentLine == lineToChange) { ((UClass)utype).SetString(value); return(true); } } else if (((UClass)utype).ClassName == "Vector2f") { if (currentLine == lineToChange) { string[] sArr = value.Split(','); ((Ufloat)((UClass)utype).Members[0]).Value = Single.Parse(sArr[0]); ((Ufloat)((UClass)utype).Members[1]).Value = Single.Parse(sArr[1]); return(true); } } else if (((UClass)utype).ClassName == "Vector3f") { if (currentLine == lineToChange) { string[] sArr = value.Split(','); ((Ufloat)((UClass)utype).Members[0]).Value = Single.Parse(sArr[0]); ((Ufloat)((UClass)utype).Members[1]).Value = Single.Parse(sArr[1]); ((Ufloat)((UClass)utype).Members[2]).Value = Single.Parse(sArr[2]); return(true); } } else if (((UClass)utype).ClassName == "Vector4f") { if (currentLine == lineToChange) { string[] sArr = value.Split(','); ((Ufloat)((UClass)utype).Members[0]).Value = Single.Parse(sArr[0]); ((Ufloat)((UClass)utype).Members[1]).Value = Single.Parse(sArr[1]); ((Ufloat)((UClass)utype).Members[2]).Value = Single.Parse(sArr[2]); ((Ufloat)((UClass)utype).Members[3]).Value = Single.Parse(sArr[3]); return(true); } } else if (((UClass)utype).ClassName == "Quaternionf") { if (currentLine == lineToChange) { string[] sArr = value.Split(','); ((Ufloat)((UClass)utype).Members[0]).Value = Single.Parse(sArr[0]); ((Ufloat)((UClass)utype).Members[1]).Value = Single.Parse(sArr[1]); ((Ufloat)((UClass)utype).Members[2]).Value = Single.Parse(sArr[2]); ((Ufloat)((UClass)utype).Members[3]).Value = Single.Parse(sArr[3]); return(true); } } else if (((UClass)utype).ClassName == "ColorRGBA" && ((UClass)utype).Members.Count == 4) { if (currentLine == lineToChange) { string[] sArr = value.Split(','); ((Ufloat)((UClass)utype).Members[0]).Value = Single.Parse(sArr[0]); ((Ufloat)((UClass)utype).Members[1]).Value = Single.Parse(sArr[1]); ((Ufloat)((UClass)utype).Members[2]).Value = Single.Parse(sArr[2]); ((Ufloat)((UClass)utype).Members[3]).Value = Single.Parse(sArr[3]); return(true); } } else { currentLine++; for (int i = 0; i < ((UClass)utype).Members.Count; i++) { if (SetAttributes(((UClass)utype).Members[i], ref currentLine, lineToChange, value, file)) { return(true); } } currentLine--; } } else if (utype is UPPtr) { if (currentLine == lineToChange) { Int64 pathID = Int64.Parse(value); Component comp = pathID != 0 ? file.findComponent[pathID] : null; ((UPPtr)utype).Value = new PPtr <Object>(comp); return(true); } } else if (utype is Uarray) { currentLine++; for (int i = 0; i < ((Uarray)utype).Value.Length; i++) { if (SetAttributes(((Uarray)utype).Value[i], ref currentLine, lineToChange, value, file)) { return(true); } } currentLine--; } else if (utype is Ufloat) { if (currentLine == lineToChange) { ((Ufloat)utype).Value = Single.Parse(value); return(true); } } else if (utype is Udouble) { if (currentLine == lineToChange) { ((Udouble)utype).Value = Double.Parse(value); return(true); } } else if (utype is Uint8) { if (currentLine == lineToChange) { ((Uint8)utype).Value = Byte.Parse(value); return(true); } } else if (utype is Uint16) { if (currentLine == lineToChange) { ((Uint16)utype).Value = Int16.Parse(value); return(true); } } else if (utype is Uuint16) { if (currentLine == lineToChange) { ((Uuint16)utype).Value = UInt16.Parse(value); return(true); } } else if (utype is Uint32) { if (currentLine == lineToChange) { ((Uint32)utype).Value = Int32.Parse(value); return(true); } } else if (utype is Uuint32) { if (currentLine == lineToChange) { ((Uuint32)utype).Value = UInt32.Parse(value); return(true); } } else if (utype is Uint64) { if (currentLine == lineToChange) { ((Uint64)utype).Value = Int64.Parse(value); return(true); } } else if (utype is Uuint64) { if (currentLine == lineToChange) { ((Uuint64)utype).Value = UInt64.Parse(value); return(true); } } else { Report.ReportLog(currentLine + " " + utype.Name + " " + utype.GetType() + " unhandled"); } currentLine++; return(false); }
public static void CreateMember(ref int line, UType utype, int arrayIndex, TreeNodeCollection nodes) { if (utype is UClass) { if (((UClass)utype).ClassName == "string") { CreateTreeNode(line, nodes, utype.Name, " (string)", ((UClass)utype).GetString(), arrayIndex); } else if (((UClass)utype).ClassName == "Vector2f") { string value = ((Ufloat)((UClass)utype).Members[0]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[1]).Value.ToFloatString(); CreateTreeNode(line, nodes, utype.Name, " (Vector2f)", value, arrayIndex); } else if (((UClass)utype).ClassName == "Vector3f") { string value = ((Ufloat)((UClass)utype).Members[0]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[1]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[2]).Value.ToFloatString(); CreateTreeNode(line, nodes, utype.Name, " (Vector3f)", value, arrayIndex); } else if (((UClass)utype).ClassName == "Vector4f") { string value = ((Ufloat)((UClass)utype).Members[0]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[1]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[2]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[3]).Value.ToFloatString(); CreateTreeNode(line, nodes, utype.Name, " (Vector4f)", value, arrayIndex); } else if (((UClass)utype).ClassName == "Quaternionf") { string value = ((Ufloat)((UClass)utype).Members[0]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[1]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[2]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[3]).Value.ToFloatString(); CreateTreeNode(line, nodes, utype.Name, " (Quaternionf)", value, arrayIndex); } else if (((UClass)utype).ClassName == "ColorRGBA" && ((UClass)utype).Members.Count == 4) { string value = ((Ufloat)((UClass)utype).Members[0]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[1]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[2]).Value.ToFloatString() + ", " + ((Ufloat)((UClass)utype).Members[3]).Value.ToFloatString(); CreateTreeNode(line, nodes, utype.Name, " (ColorRGBA)", value, arrayIndex); } else { TreeNode classNode = CreateTreeNode(line, nodes, utype.Name, " " + ((UClass)utype).ClassName, null, arrayIndex, false); line++; for (int i = 0; i < ((UClass)utype).Members.Count; i++) { CreateMember(ref line, ((UClass)utype).Members[i], -1, classNode.Nodes); } line--; } } else if (utype is UPPtr) { UPPtr ptr = (UPPtr)utype; Component asset = ptr.Value != null ? ptr.Value.asset : null; CreateTreeNode(line, nodes, utype.Name, " (PPtr<" + (asset != null ? asset.classID().ToString() : "") + ">)", ptr.Value != null ? (asset != null ? asset is NotLoaded ? ((NotLoaded)asset).Name : AssetCabinet.ToString(asset) : String.Empty) + " PathID=" + ptr.Value.m_PathID : null, arrayIndex); } else if (utype is Uarray) { TreeNode arrayNode = CreateTreeNode(line, nodes, "", "Array size " + (((Uarray)utype).Value != null ? ((Uarray)utype).Value.Length : 0), null, arrayIndex, false); arrayNode.Tag = utype; line++; if (((Uarray)utype).Value != null) { for (int i = 0; i < ((Uarray)utype).Value.Length; i++) { CreateMember(ref line, ((Uarray)utype).Value[i], i, arrayNode.Nodes); } } line--; } else if (utype is Ufloat) { CreateTreeNode(line, nodes, utype.Name, " (float)", ((Ufloat)utype).Value.ToFloatString(), arrayIndex); } else if (utype is Udouble) { CreateTreeNode(line, nodes, utype.Name, " (double)", ((Udouble)utype).Value.ToDoubleString(), arrayIndex); } else if (utype is Uint8) { CreateTreeNode(line, nodes, utype.Name, " (int8)", ((Uint8)utype).Value.ToString(), arrayIndex); } else if (utype is Uint16) { CreateTreeNode(line, nodes, utype.Name, " (int16)", ((Uint16)utype).Value.ToString(), arrayIndex); } else if (utype is Uuint16) { CreateTreeNode(line, nodes, utype.Name, " (uint16)", ((Uuint16)utype).Value.ToString(), arrayIndex); } else if (utype is Uint32) { CreateTreeNode(line, nodes, utype.Name, " (int32)", ((Uint32)utype).Value.ToString(), arrayIndex); } else if (utype is Uuint32) { CreateTreeNode(line, nodes, utype.Name, " (uint32)", ((Uuint32)utype).Value.ToString(), arrayIndex); } else if (utype is Uint64) { CreateTreeNode(line, nodes, utype.Name, " (int64)", ((Uint64)utype).Value.ToString(), arrayIndex); } else if (utype is Uuint64) { CreateTreeNode(line, nodes, utype.Name, " (uint64)", ((Uuint64)utype).Value.ToString(), arrayIndex); } else { CreateTreeNode(line, nodes, utype.Name, " " + utype.GetType() + " unhandled", null, arrayIndex, false); } line++; }
public static bool ArrayOperation(UType utype, ref int currentLine, int actionLine, Uarray.action func) { if (utype is UClass) { switch (((UClass)utype).ClassName) { case "string": case "Vector2f": case "Vector3f": case "Vector4f": case "Quaternionf": break; default: if (((UClass)utype).ClassName == "ColorRGBA" && ((UClass)utype).Members.Count == 4) { break; } currentLine++; for (int i = 0; i < ((UClass)utype).Members.Count; i++) { if (ArrayOperation(((UClass)utype).Members[i], ref currentLine, actionLine, func)) { return(true); } } currentLine--; break; } } else if (utype is UPPtr) { } else if (utype is Uarray) { if (currentLine == actionLine) { Uarray arr = (Uarray)utype; if (func == Uarray.Delete && (arr.Value == null || arr.Value.Length == 0)) { currentLine = -1; return(true); } func((Uarray)utype, -1); return(true); } currentLine++; for (int i = 0; i < ((Uarray)utype).Value.Length; i++) { if (currentLine == actionLine) { func((Uarray)utype, i); return(true); } if (ArrayOperation(((Uarray)utype).Value[i], ref currentLine, actionLine, func)) { return(true); } } currentLine--; } else if (utype is Ufloat || utype is Udouble || utype is Uint8 || utype is Uint16 || utype is Uuint16 || utype is Uint32 || utype is Uuint32 || utype is Uint64 || utype is Uuint64) { } else { Report.ReportLog(currentLine + " " + utype.Name + " " + utype.GetType() + " unhandled"); } currentLine++; return(false); }