Ejemplo n.º 1
0
 static void Postfix(ZEventListener __instance, IVisitor visitor)
 {
     if (!__instance.eventName_.StartsWith(CustomDataInfo.GetPrefix <MusicChoice>()))
     {
         return;
     }
     CachedMusicChoice.GetOr(__instance, () => MusicChoice.FromObject(__instance));
 }
Ejemplo n.º 2
0
            static bool Prefix(ZEventListener __instance, IVisitor visitor, ISerializable prefabComp, int version)
            {
                if (!(visitor is NGUIComponentInspector))
                {
                    return(true);
                }
                if (!__instance.eventName_.StartsWith(CustomDataInfo.GetPrefix <MusicChoice>()))
                {
                    return(true);
                }
                visitor.Visit("eventName_", ref __instance.eventName_, false, null);
                visitor.Visit("delay_", ref __instance.delay_, false, null);
                var isEditing = (bool)typeof(NGUIComponentInspector).GetField("isEditing_", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(visitor);
                var data      = CachedMusicChoice.GetOr(__instance, () => new MusicChoice());

                if (data.LastWrittenData != __instance.eventName_)
                {
                    data.ReadObject(__instance);
                    data.LastWrittenData = __instance.eventName_;
                    data.LastWritten     = data.Clone();
                }
                else if (!isEditing)
                {
                    var anyChanges = false;
                    var old        = data.LastWritten;
                    if (data.Choices.Count != old.Choices.Count)
                    {
                        anyChanges = true;
                    }
                    foreach (var newChoice in data.Choices)
                    {
                        if (!old.Choices.ContainsKey(newChoice.Key) || old.Choices[newChoice.Key].Track != newChoice.Value.Track)
                        {
                            anyChanges = true;
                            break;
                        }
                    }
                    if (anyChanges)
                    {
                        data.WriteObject(__instance);
                        data.LastWrittenData = __instance.eventName_;
                        data.LastWritten     = data.Clone();
                    }
                }

                foreach (var choice in data.Choices)
                {
                    visitor.Visit($"{choice.Key} Track", ref choice.Value.Track, null);
                }
                return(false);
            }