Exemple #1
0
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            SubClass _s;
            time [0] = Time.realtimeSinceStartup;
            for (int i = 0; i < countNew; i++)
            {
                _s = new SubClass(go, 1, tran.position);
            }
            time [1] = Time.realtimeSinceStartup;

            Debug.Log("Class new [" + countNew + "]:" + (time [1] - time [0]));
        }
        else if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            SubStruct _s;
            time [0] = Time.realtimeSinceStartup;
            for (int i = 0; i < countNew; i++)
            {
                _s = new SubStruct(go, 1, tran.position);
            }
            time [1] = Time.realtimeSinceStartup;

            Debug.Log("Struct new [" + countNew + "]:" + (time [1] - time [0]));
        }
        else if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            time [0] = Time.realtimeSinceStartup;
            SubClass _s = new SubClass(go, 0, tran.position);
            for (int i = 0; i < countUse; i++)
            {
                FunC(_s, countUseSub);
            }
            time [1] = Time.realtimeSinceStartup;
            Debug.Log("Class using [" + countNew + "]:" + (time [1] - time [0]) + ":" + _s.x);
        }
        else if (Input.GetKeyDown(KeyCode.Alpha4))
        {
            time [0] = Time.realtimeSinceStartup;
            SubStruct _s = new SubStruct(go, 0, tran.position);
            for (int i = 0; i < countUse; i++)
            {
                FunS(_s, countUseSub);
            }
            time [1] = Time.realtimeSinceStartup;
            Debug.Log("Struct using [" + countNew + "]:" + (time [1] - time [0]) + ":" + _s.x);
        }
        else if (Input.GetKeyDown(KeyCode.Alpha5))
        {
            time [0] = Time.realtimeSinceStartup;
            SubStruct _s = new SubStruct(go, 0, tran.position);
            for (int i = 0; i < countUse; i++)
            {
                FunS2(ref _s, countUseSub);
            }
            time [1] = Time.realtimeSinceStartup;
            Debug.Log("Struct using(ref) [" + countNew + "]:" + (time [1] - time [0]) + ":" + _s.x);
        }
    }
Exemple #2
0
 public DeeperStruct(int item1, SimpleClass item2)
 {
     SubStructItem = new SubStruct()
     {
         Item1 = item1, Item2 = item2
     };
 }
Exemple #3
0
        public void Read(BinaryReader br)
        {
            uint bonesOffset       = ResourceUtil.ReadOffset(br);
            uint unknownIntsOffset = ResourceUtil.ReadOffset(br);
            uint transforms1Offset = ResourceUtil.ReadOffset(br);
            uint transforms2Offset = ResourceUtil.ReadOffset(br);
            uint transforms3Offset = ResourceUtil.ReadOffset(br);

            BoneCount = br.ReadUInt16();
            Unknown0  = br.ReadInt16();
            Unknown1  = br.ReadInt32();
            Unknown2  = br.ReadInt32();

            BoneIDMappings = new SimpleCollection <BoneIDMapping>(br, r => new BoneIDMapping(r));

            Unknown3    = br.ReadInt32();
            UnknownHash = br.ReadUInt32();
            Unknown4    = br.ReadInt32();

            UnknownSubStruct = new SubStruct(br);

            // Data:

            br.BaseStream.Seek(bonesOffset, SeekOrigin.Begin);
            Bones = new SimpleArray <Bone>(br, BoneCount, r => new Bone(r));

            br.BaseStream.Seek(unknownIntsOffset, SeekOrigin.Begin);
            UnknownInts = new SimpleArray <int>(br, BoneCount, r => r.ReadInt32());

            br.BaseStream.Seek(transforms1Offset, SeekOrigin.Begin);
            Transforms1 = new SimpleArray <Matrix44>(br, BoneCount, r => new Matrix44(r));

            br.BaseStream.Seek(transforms2Offset, SeekOrigin.Begin);
            Transforms2 = new SimpleArray <Matrix44>(br, BoneCount, r => new Matrix44(r));

            br.BaseStream.Seek(transforms3Offset, SeekOrigin.Begin);
            Transforms3 = new SimpleArray <Matrix44>(br, BoneCount, r => new Matrix44(r));

            // Fun stuff...
            // Build a mapping of Offset -> Bone
            var boneOffsetMapping = new Dictionary <uint, Bone>();

            boneOffsetMapping.Add(0, null);
            foreach (var bone in Bones)
            {
                boneOffsetMapping.Add((uint)bone.Offset, bone);
            }

            // Now resolve all the bone offsets to the real bones
            foreach (var bone in Bones)
            {
                bone.Parent      = boneOffsetMapping[bone.ParentOffset];
                bone.FirstChild  = boneOffsetMapping[bone.FirstChildOffset];
                bone.NextSibling = boneOffsetMapping[bone.NextSiblingOffset];
            }
        }
    public static SubStruct Rehydrate(BinaryReader reader)
    {
        SubStruct instance = new SubStruct();

        for (int i = 0; i < instance.d.Length; ++i)
        {
            instance.d[i] = reader.ReadUInt16();
        }

        return(instance);
    }
Exemple #5
0
 void FunS(SubStruct _s, int _count)
 {
     _count--;
     if (_count <= 0)
     {
         return;
     }
     else
     {
         FunS(_s, _count);
         _s.x++;
     }
 }
    public static Struct Rehydrate(BinaryReader reader)
    {
        Struct instance = new Struct();

        instance.a = SubStruct.Rehydrate(reader);

        for (int i = 0; i < instance.b.Length; ++i)
        {
            instance.b[i] = reader.ReadUInt16();
        }

        instance.c = reader.ReadInt32();

        return(instance);
    }
Exemple #7
0
        public int ShowSubXml(string path, out List <SubStruct> targetNodes)
        {
            try
            {
                InitialConfig(path);
                //定义并从xml文件中加载节点(根节点)
                XElement rootNode = XElement.Load(path);

                //查询语句: 获得根节点下Net子节点
                IEnumerable <XElement> Nodes = from target in rootNode.Descendants("Word")
                                               select target;
                targetNodes = new List <SubStruct>();
                foreach (var item in Nodes)
                {
                    //取值并重置
                    SubStruct ns      = new SubStruct();
                    string    AddTime = item.Element("AddTime").ToString();
                    AddTime    = AddTime.Replace("</AddTime>", "");
                    AddTime    = AddTime.Replace("<AddTime>", "");
                    ns.AddTime = AddTime;

                    string SubCount = item.Element("SubCount").ToString();
                    SubCount    = SubCount.Replace("</SubCount>", "");
                    SubCount    = SubCount.Replace("<SubCount>", "");
                    ns.SubCount = int.Parse(SubCount);

                    string SearchWord = item.Attribute("SearchWord").ToString();
                    SearchWord    = SearchWord.Replace("\"", "");
                    SearchWord    = SearchWord.Replace("SearchWord=", "");
                    ns.SearchWord = SearchWord;

                    targetNodes.Add(ns);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            return(1);
        }
		public void Repro64_v2_ReadonlyStructs_Direct()
		{
			var config = new SerializerConfig { DefaultTargets = TargetMember.AllFields, PreserveReferences = false };
			config.Advanced.ReadonlyFieldHandling = ReadonlyFieldHandling.ForcedOverwrite;
			config.Advanced.SkipCompilerGeneratedFields = false;
			config.OnConfigNewType = tc =>
			{
				tc.TypeConstruction = TypeConstruction.ByUninitialized();
			};


			var ceras = new CerasSerializer(config);

			var obj = new NullableWrapper(new Test { Value = 2.34M, SubStruct = new SubStruct(new NameAge("riki", 5), 6, 7) });


			var objClone = ceras.Advanced.Clone(obj);
			Assert.Equal(obj.TestStruct, objClone.TestStruct);

			var subStruct = new SubStruct(new NameAge("riki", 5), 6, 7);
			var ssClone = ceras.Advanced.Clone(subStruct);
			Assert.True(DeepComparer.Instance.CheckEquality(subStruct, ssClone));
		}
Exemple #9
0
        public void Read(BinaryReader br)
        {
            uint bonesOffset = ResourceUtil.ReadOffset(br);
            uint unknownIntsOffset = ResourceUtil.ReadOffset(br);
            uint transforms1Offset = ResourceUtil.ReadOffset(br);
            uint transforms2Offset = ResourceUtil.ReadOffset(br);
            uint transforms3Offset = ResourceUtil.ReadOffset(br);

            BoneCount = br.ReadUInt16();
            Unknown0 = br.ReadInt16();
            Unknown1 = br.ReadInt32();
            Unknown2 = br.ReadInt32();

            BoneIDMappings = new SimpleCollection<BoneIDMapping>(br, r => new BoneIDMapping(r));

            Unknown3 = br.ReadInt32();
            UnknownHash = br.ReadUInt32();
            Unknown4 = br.ReadInt32();

            UnknownSubStruct = new SubStruct(br);

            // Data:

            br.BaseStream.Seek(bonesOffset, SeekOrigin.Begin);
            Bones = new SimpleArray<Bone>(br, BoneCount, r => new Bone(r));

            br.BaseStream.Seek(unknownIntsOffset, SeekOrigin.Begin);
            UnknownInts = new SimpleArray<int>(br, BoneCount, r => r.ReadInt32());

            br.BaseStream.Seek(transforms1Offset, SeekOrigin.Begin);
            Transforms1 = new SimpleArray<Matrix44>(br, BoneCount, r => new Matrix44(r));

            br.BaseStream.Seek(transforms2Offset, SeekOrigin.Begin);
            Transforms2 = new SimpleArray<Matrix44>(br, BoneCount, r => new Matrix44(r));

            br.BaseStream.Seek(transforms3Offset, SeekOrigin.Begin);
            Transforms3 = new SimpleArray<Matrix44>(br, BoneCount, r => new Matrix44(r));

            // Fun stuff...
            // Build a mapping of Offset -> Bone
            var boneOffsetMapping = new Dictionary<uint, Bone>();
            boneOffsetMapping.Add(0, null);
            foreach (var bone in Bones)
            {
                boneOffsetMapping.Add((uint)bone.Offset, bone);
            }

            // Now resolve all the bone offsets to the real bones
            foreach (var bone in Bones)
            {
                bone.Parent = boneOffsetMapping[bone.ParentOffset];
                bone.FirstChild = boneOffsetMapping[bone.FirstChildOffset];
                bone.NextSibling = boneOffsetMapping[bone.NextSiblingOffset];
            }
        }