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; } } }
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(); }
public UnityTyonReplayer(object obj) { type = obj.GetTypeEX(); context = UnityTyonSettings.INSTANCE.CreateContext(); data = context.SerializeValue(type, obj); }
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) ); }