Пример #1
0
 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);
 }
Пример #2
0
        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++;
        }
Пример #3
0
        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);
        }