예제 #1
0
        private void PackTyon()
        {
            if (did_unpack_tyon_data || tyon_data.IsBlank())
            {
                string old_tyon_data = tyon_data;
                List <UnityEngine.Object> old_tyon_unity_objects = tyon_unity_objects.ToList();

                try
                {
                    TyonContext context = UnityTyonSettings.INSTANCE.CreateContext();

                    tyon_data          = context.Serialize(this);
                    tyon_unity_objects = context.GetRegisteredExternalObjects()
                                         .Convert <object, UnityEngine.Object>()
                                         .ToList();

                    pack_error = null;

                    if (tyon_data != old_tyon_data)
                    {
                        UnpackTyon(true);
                    }
                }
                catch (Exception ex)
                {
                    tyon_data          = old_tyon_data;
                    tyon_unity_objects = old_tyon_unity_objects;

                    pack_error = ex.Message + "\n\n" + ex;
                }
            }
        }
예제 #2
0
        public static void Main(string[] args)
        {
            string tyon = @"
Poop {
    outside = @1;
}

            ";

            object p = new Poop();

            Poop aa = new Poop();

            Process <object, TyonContext> operation = TyonSettings_General.INSTANCE.CompilePushToSystemObject(tyon, TyonHydrationMode.Permissive);

            TyonContext context = TyonSettings_General.INSTANCE.CreateContext(Enumerable.New <object>(aa));

            Console.WriteLine(operation.GetDynamicMethodILBody());

            operation(p, context);

            string tyon2 = TyonSettings_General.INSTANCE.Serialize(p);

            Console.WriteLine(tyon2);

            object deserialized2 = TyonSettings_General.INSTANCE.Deserialize(tyon2, TyonHydrationMode.Strict);

            string tyon3 = TyonSettings_General.INSTANCE.Serialize(deserialized2);

            Console.WriteLine(tyon3);
            Console.ReadLine();
        }
예제 #3
0
        public UnityTyonReplayer(object obj)
        {
            type    = obj.GetTypeEX();
            context = UnityTyonSettings.INSTANCE.CreateContext();

            data = context.SerializeValue(type, obj);
        }
예제 #4
0
        private void UnpackTyonEditInternal(TyonHydrationMode mode = TyonHydrationMode.Strict)
        {
            TyonContext context = UnityTyonSettings.INSTANCE.CreateContext(tyon_unity_objects.Convert <UnityEngine.Object, object>());

            context.CreateHydrater(mode)
            .HydrateInto(
                this,
                UnityTyonSettings.INSTANCE.FetchPrefabTyonObject(tyon_data)
                );
        }