示例#1
0
        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;
        }
示例#2
0
        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;
        }