public HatPreview(GorillaHat baseHat, Collider collider) { hat = baseHat; if (hat != null && hat.Hat != null) { gameObject = UnityEngine.Object.Instantiate(hat.Hat); } else { // fake hat time string folder = Path.GetDirectoryName(typeof(GorillaCosmetics).Assembly.Location); gameObject = UnityEngine.Object.Instantiate(PackageUtils.AssetBundleFromPackage($"{folder}\\Misc\\None").LoadAsset <GameObject>("_Hat")); } gameObject.transform.SetParent(collider.transform); gameObject.transform.localPosition = Vector3.zero; gameObject.transform.localRotation = Quaternion.identity; gameObject.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f); gameObject.layer = 18; gameObject.transform.SetParent(null); gameObject.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f); UnityEngine.Object.DontDestroyOnLoad(gameObject); collider.isTrigger = true; collider.gameObject.layer = 18; button = collider.gameObject.AddComponent <HatPreviewButton>(); button.hat = hat; }
public static void Load() { if (Loaded) { return; } string folder = Path.GetDirectoryName(typeof(GorillaCosmetics).Assembly.Location); // Load Materials IEnumerable <string> filter = new List <string> { "*.material", "*.gmat" }; MaterialFiles = GetFileNames($"{folder}\\{MaterialsLocation}", filter, SearchOption.TopDirectoryOnly, false); GorillaMaterialObjects = LoadMaterials(MaterialFiles); // Load Hats IEnumerable <string> hatFilter = new List <string> { "*.hat", "*.ghat" }; HatFiles = GetFileNames($"{folder}\\{HatsLocation}", hatFilter, SearchOption.TopDirectoryOnly, false); GorillaHatObjects = LoadHats(HatFiles); // Parse Configs selectedMaterial = SelectedMaterialFromConfig(GorillaCosmetics.selectedMaterial.Value); selectedInfectedMaterial = SelectedMaterialFromConfig(GorillaCosmetics.selectedInfectedMaterial.Value); selectedHat = SelectedHatFromConfig(); // Load Mirror GameObject Mirror = UnityEngine.Object.Instantiate(PackageUtils.AssetBundleFromPackage($"{folder}\\Misc\\Mirror").LoadAsset <GameObject>("_Hat")); Mirror.transform.localScale = new Vector3(0.29f, 0.29f, 0.29f); Mirror.transform.position = new Vector3(-68.5f, 11.96f, -81.595f); Mirror.transform.rotation = Quaternion.Euler(0.21f, -153.2f, -4.6f); UnityEngine.Object.DontDestroyOnLoad(Mirror); // Load Hat Rack GameObject HatRack = UnityEngine.Object.Instantiate(PackageUtils.AssetBundleFromPackage($"{folder}\\Misc\\HatRack").LoadAsset <GameObject>("_Hat")); HatRack.transform.localScale = new Vector3(3.696f, 3.696f, 0.677f); HatRack.transform.position = new Vector3(-68.003f, 11.471f, -80.637f); HatRack.transform.rotation = Quaternion.Euler(-90f, 0, 0); UnityEngine.Object.DontDestroyOnLoad(HatRack); // Check if we have enough hats for a second one GameObject HatRack2 = null; if (GorillaHatObjects.Count > 6) { HatRack2 = UnityEngine.Object.Instantiate(HatRack); HatRack2.transform.position = new Vector3(-67.895f, 11.511f, -80.41f); HatRack2.transform.rotation = Quaternion.Euler(-90f, 0, -68.608f); UnityEngine.Object.DontDestroyOnLoad(HatRack2); } // Load Material Previews float scale = (0.8f / GorillaMaterialObjects.Count); for (int i = 0; i < GorillaMaterialObjects.Count; i++) { var material = GorillaMaterialObjects[i]; Vector3 pos = new Vector3(-68.287f, 12.04f - (scale * i), -81.251f); new MaterialPreview(material, pos, scale * 0.85f); } // Load Hat Rack Previews Collider[] hatPosColliders = HatRack.transform.GetComponentsInChildren <Collider>(); System.Random random = new System.Random(); Collider[] RandomColliderArray = hatPosColliders.OrderBy(x => random.Next()).ToArray(); for (int i = 0; i < Math.Min(GorillaHatObjects.Count, 6); i++) { var hat = GorillaHatObjects[i]; new HatPreview(hat, RandomColliderArray[i]); } // Load Hat Rack Preview Again, if needed if (HatRack2 != null) { Collider[] hatPosColliders2 = HatRack2.transform.GetComponentsInChildren <Collider>(); Collider[] RandomColliderArray2 = hatPosColliders2.OrderBy(x => random.Next()).ToArray(); for (int i = 6; i < Math.Min(GorillaHatObjects.Count, 12); i++) { var hat = GorillaHatObjects[i]; new HatPreview(hat, RandomColliderArray2[i - 6]); } } Loaded = true; }