Exemple #1
0
            private static void UpdateWireframes(List <RectangleWireframe[]> wireframes, Func <int, SlotSettings> getSlotSettingsFunc)
            {
                for (var i = wireframes.Count - 1; i >= 0; i--)
                {
                    var container = wireframes[i];
                    try
                    {
                        for (var j = 0; j < container.Length; j++)
                        {
                            var wireframe = container[j];
                            if (wireframe.Pointer == IntPtr.Zero)
                            {
                                continue;                                   // this should be enough to trigger ObjectCollectedException
                            }
                            var settings = getSlotSettingsFunc(j);

                            var collider = wireframe.GetComponent <BoxCollider>();
                            collider.size = settings?.Size ?? new Vector3(0.1f, 0.1f, 0.1f);

                            wireframe.Size = collider.size;
                            wireframe.transform.localPosition = (settings?.Offset - collider.size / 2f) ?? wireframe.DefaultPosition;
                            wireframe.transform.localRotation = settings?.Rotation ?? Quaternion.identity;
                        }
                    }
                    catch (ObjectCollectedException)
                    {
                        QoLFixPlugin.LogWarning($"Container {i} was garbage-collected");
                        wireframes.RemoveAt(i);
                    }
                }
            }
Exemple #2
0
 private static bool LoadSettings()
 {
     AttemptedLoad = true;
     EnsureWatchInitialized();
     try
     {
         var jsonPath   = Path.Combine(BepInEx.Paths.ConfigPath, CONFIG_FILE);
         var serializer = new JsonSerializer
         {
             NullValueHandling     = NullValueHandling.Include,
             MissingMemberHandling = MissingMemberHandling.Ignore,
         };
         serializer.Converters.Add(new Vector3JsonConverter());
         serializer.Converters.Add(new QuaternionJsonConverter());
         var obj = JObject.Parse(File.ReadAllText(jsonPath));
         BoxSlots       = obj["box"]?.ToObject <SlotSettings[]>(serializer);
         LockerSlots    = obj["locker"]?.ToObject <SlotSettings[]>(serializer);
         SettingsLoaded = true;
         return(true);
     }
     catch (Exception ex)
     {
         QoLFixPlugin.LogError("Failed to deserialize wireframes config file: " + ex);
         return(false);
     }
 }
Exemple #3
0
 private static void OnWatcherEvent(object sender, FileSystemEventArgs e)
 {
     QoLFixPlugin.LogDebug($"WATCH EVENT: {e.ChangeType} - {e.Name}");
     if (e.ChangeType != WatcherChangeTypes.Changed && e.ChangeType != WatcherChangeTypes.Created)
     {
         return;
     }
     if (Path.GetFileName(e.Name) != CONFIG_FILE)
     {
         return;
     }
     ShouldUpdateSettings = true;
 }