示例#1
0
 public void ToggleItemViewMat(InventoryItemView iiv)
 {
     if (iiv.ItemCache != null)
     {
         Material material = this._defaultMaterial;
         for (int i = 0; i < this._bonuses.Length; i++)
         {
             if (iiv.ActiveBonus == this._bonuses[i]._bonusToActivate)
             {
                 material = this._bonuses[i]._material;
                 break;
             }
         }
         if (iiv._renderers[0]._defaultMaterial != material)
         {
             iiv._renderers[0]._defaultMaterial = material;
             iiv.Highlight(false);
         }
         return;
     }
 }
示例#2
0
        public void SpawnAnyMultiview(InventoryItemView source, Transform parent, bool randomRotation, ItemProperties properties)
        {
            Vector3  euler     = new Vector3(0f, (float)UnityEngine.Random.Range(-50, 50), 0f);
            bool     flag      = source.Equals(this);
            Collider component = source.GetComponent <Collider>();
            Vector3  size;

            if (component is BoxCollider)
            {
                size = ((BoxCollider)component).size;
            }
            else if (component is CapsuleCollider)
            {
                CapsuleCollider capsuleCollider = (CapsuleCollider)component;
                int             direction       = capsuleCollider.direction;
                if (direction != 0)
                {
                    if (direction != 1)
                    {
                        size = new Vector3(capsuleCollider.radius * 2f, capsuleCollider.radius * 2f, capsuleCollider.height);
                    }
                    else
                    {
                        size = new Vector3(capsuleCollider.radius * 2f, capsuleCollider.height, capsuleCollider.radius * 2f);
                    }
                }
                else
                {
                    size = new Vector3(capsuleCollider.height, capsuleCollider.radius * 2f, capsuleCollider.radius * 2f);
                }
            }
            else
            {
                size = component.bounds.size;
            }
            Vector3 vector = UnityEngine.Random.insideUnitSphere;

            if (!flag)
            {
                vector *= 3f;
            }
            if (size.x * 2f < size.z)
            {
                vector   /= 15f;
                vector   *= size.x * 0.75f;
                vector.x /= 2f;
            }
            else if (size.z * 2f < size.x)
            {
                vector   /= 15f;
                vector   *= size.z * 0.75f;
                vector.z /= 2f;
            }
            else
            {
                vector /= 8f;
                bool flag2 = size.z * 2f > size.y;
                bool flag3 = size.x * 2f > size.y;
                if (flag2 && !flag3)
                {
                    euler.z = (float)UnityEngine.Random.Range(-45, 45);
                }
                if (flag3 && !flag2)
                {
                    euler.x = (float)UnityEngine.Random.Range(-45, 45);
                }
            }
            vector.y = 0f;
            InventoryItemView inventoryItemView = UnityEngine.Object.Instantiate <InventoryItemView>(source, base.transform.position + vector, (!randomRotation) ? source.transform.rotation : (source.transform.rotation * Quaternion.Euler(euler)));

            inventoryItemView.transform.parent     = parent;
            inventoryItemView.transform.localScale = source.transform.localScale;
            inventoryItemView._isCraft             = true;
            inventoryItemView.MultiViewOwner       = this;
            inventoryItemView.enabled = true;
            inventoryItemView.gameObject.SetActive(true);
            inventoryItemView.Init();
            inventoryItemView.Highlight(false);
            inventoryItemView.OnMultiviewSpawned();
            if (properties != ItemProperties.Any)
            {
                inventoryItemView.Properties.Copy(properties);
            }
            if (this._bonusListener)
            {
                this._bonusListener.ToggleItemViewMat(inventoryItemView);
            }
            this._multiViews.Add(inventoryItemView);
        }