コード例 #1
0
        // ![](330E21079BE9A11BBF50634E3F861264.png)
        // ![](A4B633BD4A6C55C7C086DDE7783ADCB6.png;;;0.02569,0.02569)
        public static int GetBaseColorIndex(this CreatureBoardAsset creatureBoardAsset)
        {
            if (Guard.IsNull(creatureBoardAsset, "creatureBoardAsset"))
            {
                return(0);
            }

            MaterialPropertyBlock _matBlock = ReflectionHelper.GetNonPublicField <MaterialPropertyBlock>(creatureBoardAsset, "_matBlock");

            int BaseIndex = Shader.PropertyToID("_baseIndex");

            if (_matBlock == null)
            {
                return(0);
            }

            Renderer[] renderers = creatureBoardAsset.Renderers;

            if (renderers == null)
            {
                return(0);
            }

            if (renderers.Length <= 0 || renderers[0] == null)
            {
                return(0);
            }

            renderers[0].GetPropertyBlock(_matBlock);

            return(_matBlock.GetInt(BaseIndex));
        }
    // Update is called once per frame
    void Update()
    {
        _renderer.GetPropertyBlock(_propBlock);

        Debug.Log(gameObject.name + ", RefNumber: " + _propBlock.GetInt("_RefNumber"));

        //_propBlock.SetInt("_RefNumber", var);
        _propBlock.SetColor("_Color", Color);
        _renderer.SetPropertyBlock(_propBlock);
    }
コード例 #3
0
ファイル: CameraLens.cs プロジェクト: orels1/UdonToolkit
        public void FlipCamera()
        {
            var lRot = cameraObject.transform.localRotation.eulerAngles;

            cameraObject.transform.localRotation = Quaternion.Euler(lRot.x, lRot.y + 180, lRot.z);
            var block = new MaterialPropertyBlock();

            cR.GetPropertyBlock(block);
            var curr = block.GetInt("_Flipped");

            block.SetInt("_Flipped", curr == 0 ? 1 : 0);
            cR.SetPropertyBlock(block);
        }
コード例 #4
0
ファイル: CameraLens.cs プロジェクト: orels1/UdonToolkit
        public void ToggleWatermark()
        {
            sR.GetPropertyBlock(sphereBlock);
            var curr = sphereBlock.GetInt("_Watermark");

            if (curr == 1)
            {
                sphereBlock.SetInt("_Watermark", 0);
            }
            else
            {
                sphereBlock.SetInt("_Watermark", 1);
            }
            sR.SetPropertyBlock(sphereBlock);
        }
コード例 #5
0
    private void SetHighlight(bool isSelected)
    {
        bool curSelectionValue = propBlock.GetInt("_IsSelected") > 0.5f ? true : false;

        // If there is no change, we don't need to do anything
        if (isSelected == curSelectionValue)
        {
            return;
        }

        // Because there is a change, we need to toggle the value
        int newSelectionValue = isSelected ? 1 : 0;

        propBlock.SetInt("_IsSelected", newSelectionValue);
        boxRenderer.SetPropertyBlock(propBlock);
    }
コード例 #6
0
    /// <summary>
    /// Update the image that should be displayed in this slot to display the sprite of the specified item.
    ///
    /// If hidden, effect will not be visible until this slot is unhidden
    ///
    /// </summary>
    /// <param name="item">game object to use to determine what to show in this slot</param>
    /// <param name="color">color tint to apply</param>
    public void UpdateImage(GameObject item = null, Color?color = null)
    {
        var nullItem   = item == null;
        var forceColor = color != null;

        if (nullItem && Item != null)
        {         // Case for when we have a hovered image and insert, then stop hovering
            return;
        }

        // If player is cuffed, a special icon appears on his hand slots, exit without changing it.
        if ((namedSlot == NamedSlot.leftHand || namedSlot == NamedSlot.rightHand) &&
            PlayerManager.LocalPlayerScript.playerMove.IsCuffed)
        {
            return;
        }

        if (!nullItem)
        {
            //determine the sprites to display based on the new item
            var spriteRends = item.GetComponentsInChildren <SpriteRenderer>();
            if (image == null)
            {
                image = GetComponent <Image>();
            }

            ItemAttributesV2 itemAttrs = item.GetComponent <ItemAttributesV2>();

            spriteRends  = spriteRends.Where(x => x.sprite != null && x != Highlight.instance.spriteRenderer).ToArray();
            sprite       = spriteRends[0].sprite;
            image.sprite = sprite;
            image.color  = spriteRends[0].color;
            MaterialPropertyBlock pb = new MaterialPropertyBlock();
            spriteRends[0].GetPropertyBlock(pb);
            bool isPaletted = pb.GetInt("_IsPaletted") > 0;
            if (itemAttrs.ItemSprites.InventoryIcon != null && itemAttrs.ItemSprites.IsPaletted)
            {
                image.material.SetInt("_IsPaletted", 1);
                image.material.SetColorArray("_ColorPalette", itemAttrs.ItemSprites.Palette.ToArray());
            }
            else
            {
                image.material.SetInt("_IsPaletted", 0);
            }


            if (spriteRends.Length > 1)
            {
                if (spriteRends[1].sprite != null)
                {
                    SetSecondaryImage(spriteRends[1].sprite);
                    secondaryImage.color = spriteRends[1].color;
                }
            }

            //determine if we should show an amount
            var stack = item.GetComponent <Stackable>();
            if (stack != null && stack.Amount > 1 && amountText)
            {
                amountText.enabled = true;
                amountText.text    = stack.Amount.ToString();
            }
            else if (stack != null && stack.Amount <= 1 && amountText)
            {
                //remove the stack display
                amountText.enabled = false;
            }
        }
        else
        {
            //no object was passed, so clear out the sprites
            Clear();
        }

        if (forceColor)
        {
            image.color = color.GetValueOrDefault(Color.white);
        }

        image.enabled        = !nullItem && !hidden;
        image.preserveAspect = !nullItem && !hidden;

        if (secondaryImage)
        {
            if (forceColor)
            {
                secondaryImage.color = color.GetValueOrDefault(Color.white);
            }

            secondaryImage.enabled        = secondaryImage.sprite != null && !nullItem && !hidden;
            secondaryImage.preserveAspect = !nullItem && !hidden;
        }
    }