Example #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;
        }
        internal static void ChangeHat(VRRig __instance)
        {
            Transform existingHat = __instance.head.rigTarget.Find("Hat");

            if (existingHat != null)
            {
                existingHat.parent = null;
                existingHat.gameObject.SetActive(false);
                UnityEngine.Object.Destroy(existingHat.gameObject);
            }
            if (IsLocalPlayer(__instance) || GorillaCosmetics.applyHatsToOtherPlayers.Value)
            {
                GorillaHat hat = AssetLoader.SelectedHat();
                if (hat != null && hat.Hat != null)
                {
                    GameObject hatObject = UnityEngine.Object.Instantiate(hat.Hat);
                    hatObject.name = "Hat";
                    hatObject.transform.SetParent(__instance.head.rigTarget);
                    hatObject.transform.localScale    = new Vector3(0.25f, 0.25f, 0.25f);
                    hatObject.transform.localPosition = new Vector3(0f, 0.365f, 0.04f);
                    hatObject.transform.localRotation = Quaternion.identity;
                    hatObject.transform.Rotate(new Vector3(0, 90, 10));
                }
            }
        }
        public void SetHat(GorillaHat hat)
        {
            Hat = hat;
            if (previewHat != null)
            {
                Destroy(previewHat);
                previewHat = null;
            }
            if (Hat != null)
            {
                previewHat = Hat.GetCleanAsset();
                HeadModel controlledModel = wardrobeItemButton.controlledModel;
                previewHat.transform.parent = controlledModel.gameObject.transform;
                // TODO: Get the actual proper numbers
                previewHat.transform.localPosition = Constants.PreviewHatLocalPosition;
                previewHat.transform.localRotation = Constants.PreviewHatLocalRotation;
                previewHat.transform.localScale    = Constants.PreviewHatLocalScale;
            }

            UpdateButton();
        }
Example #4
0
        public static IList <GorillaHat> LoadHats(IEnumerable <string> hatFiles)
        {
            IList <GorillaHat> hats = new List <GorillaHat> {
                new GorillaHat("Default")
            };

            foreach (string hatFile in hatFiles)
            {
                try
                {
                    GorillaHat hat = new GorillaHat(hatFile);
                    hats.Add(hat);
                }
                catch (Exception ex)
                {
                    Debug.Log("ERROR!");
                    Debug.Log(ex);
                }
            }
            return(hats);
        }
Example #5
0
        public static int SelectedHatFromConfig()
        {
            string selectedHatString = GorillaCosmetics.selectedHat.Value.ToLower().Trim();

            for (int i = 1; i < GorillaHatObjects.Count; i++)
            {
                GorillaHat gorillaHatObject = GorillaHatObjects[i];
                if (gorillaHatObject == null)
                {
                    return(0);
                }
                if (gorillaHatObject.Descriptor.HatName.ToLower().Trim() == selectedHatString)
                {
                    return(i);
                }
                else if (Path.GetFileNameWithoutExtension(gorillaHatObject.FileName).ToLower().Trim() == selectedHatString)
                {
                    return(i);
                }
            }
            return(0);
        }
        public void SetHat(GorillaHat hat)
        {
            if (hat == null)
            {
                ResetHat();
                return;
            }

            Plugin.Log($"Player: {NickName} switching hat from {CurrentHat?.Descriptor?.Name} to {hat?.Descriptor?.Name}");
            CurrentHat = hat;

            if (currentHatObject != null)
            {
                GameObject.Destroy(currentHatObject);
            }

            currentHatObject = hat.GetAsset();
            currentHatObject.transform.SetParent(rig.head.rigTarget);
            currentHatObject.transform.localScale    = Vector3.one * 0.25f;
            currentHatObject.transform.localPosition = new Vector3(0, 0.365f, 0.04f);
            currentHatObject.transform.localRotation = Quaternion.Euler(0, 90, 10);

            //throw new NotImplementedException();
        }