Ejemplo n.º 1
0
        public static bool MergeNode(XndNode lh, XndNode rh, FDoConflict DoConflict)
        {
            if (lh.IsWritable == false)
            {
                return(false);
            }
            var atts = rh.GetAttribs();

            foreach (var i in atts)
            {
                var att = lh.FindAttrib(i.GetName());
                if (att != null)
                {
                    DoConflict(att, i);
                }
                else
                {
                    att = lh.AddAttrib(i.GetName());
                    CopyAttrib(att, i);
                }
            }
            var nodes = rh.GetNodes();

            foreach (var i in nodes)
            {
                var node = lh.FindNode(i.GetName());
                if (node == null)
                {
                    node = lh.AddNode(i.GetName(), (long)i.GetClassId(), 0);
                }
                MergeNode(node, i, DoConflict);
            }
            return(true);
        }
Ejemplo n.º 2
0
            //public override void Write(EngineNS.IO.XndNode xndNode)
            //{
            //    var att = xndNode.AddAttrib("ConstructionParams");
            //    att.Version = 0;
            //    att.BeginWrite();
            //    att.Write(ConstructParam);
            //    att.WriteMetaObject(MethodInfo);
            //    att.EndWrite();
            //}
            public override void Read(EngineNS.IO.XndNode xndNode)
            {
                var att = xndNode.FindAttrib("ConstructionParams");

                if (att != null)
                {
                    att.BeginRead();
                    switch (att.Version)
                    {
                    case 0:
                        att.Read(out mConstructParam);
                        if (MethodInfo == null)
                        {
                            MethodInfo = new CustomMethodInfo();
                        }
                        att.ReadMetaObject(MethodInfo);
                        break;

                    case 1:
                        att.ReadMetaObject(this);
                        break;
                    }
                    att.EndRead();
                }
            }
Ejemplo n.º 3
0
            //public override void Write(EngineNS.IO.XndNode xndNode)
            //{
            //    var att = xndNode.AddAttrib("ConstructionParams");
            //    att.Version = 0;
            //    att.BeginWrite();
            //    att.Write(ConstructParam);
            //    var typeStr = EngineNS.Rtti.RttiHelper.GetTypeSaveString(CreateType);
            //    att.Write(typeStr);
            //    att.EndWrite();
            //}
            public override void Read(EngineNS.IO.XndNode xndNode)
            {
                var att = xndNode.FindAttrib("ConstructionParams");

                if (att != null)
                {
                    att.BeginRead();
                    switch (att.Version)
                    {
                    case 0:
                        att.Read(out mConstructParam);
                        string typeStr;
                        att.Read(out typeStr);
                        CreateType = EngineNS.Rtti.RttiHelper.GetTypeFromSaveString(typeStr);
                        break;

                    case 1:
                        att.ReadMetaObject(this);
                        break;
                    }
                    att.EndRead();
                }
            }
Ejemplo n.º 4
0
        public bool LoadXnd(EngineNS.IO.XndNode node)
        {
            var attr = node.FindAttrib("AttributeConstructorParamer" + Index);

            if (attr == null)
            {
                return(false);
            }

            attr.BeginRead();
            attr.ReadMetaObject(this);
            attr.EndRead();

            attr = node.FindAttrib("AttributeConstructorParamer_Value" + Index);
            if (attr == null)
            {
                return(false);
            }
            attr.BeginRead();
            string assembly;

            attr.Read(out assembly);

            string typename;

            attr.Read(out typename);

            try
            {
                Type type = Type.GetType(typename + ", " + assembly);

                if (type.Equals(typeof(string)))
                {
                    string value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(byte)) || type.Equals(typeof(char)))
                {
                    byte value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(bool)))
                {
                    bool value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(int)))
                {
                    Int32 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(Int16)))
                {
                    Int16 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(Int32)))
                {
                    Int32 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(Int64)))
                {
                    Int64 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(uint)))
                {
                    UInt32 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(UInt16)))
                {
                    UInt16 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(UInt32)))
                {
                    UInt32 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(UInt64)))
                {
                    UInt64 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(short)))
                {
                    UInt32 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(long)))
                {
                    Int64 value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.Equals(typeof(double)))
                {
                    double value;
                    attr.Read(out value);
                    Value = value;
                }
                else if (type.IsSubclassOf(typeof(Enum)))
                {
                    UInt64 value;
                    attr.Read(out value);

                    Value = Enum.Parse(type, value.ToString());
                }

                else
                {
                    //TODO. Type..
                }
            }
            catch (System.Exception e)
            {
                Console.WriteLine("System.Exception: " + e);
            }
            attr.EndRead();
            return(true);
        }