Пример #1
0
        public EmhCompose(ExpressionsMenuHierarchyCompiler compiler)
        {
            _mainAssetContainer           = compiler.generatedMenu;
            _defaultIconOptional          = compiler.defaultIcon;
            _mainMenu                     = compiler.mainMenu;
            _generatedMenu                = compiler.generatedMenu;
            _expressionParametersOptional = compiler.expressionParameters;
            _discardTags                  = !string.IsNullOrEmpty(compiler.discardTags) ? compiler.discardTags.Split(',') : new string[0];
            _compilerDiscardType          = compiler.discardType == Emh.EmhDiscardType.Default ? Emh.EmhDiscardType.GrayOut : compiler.discardType;
            _discardGrayOut               = compiler.discardGrayOut == null
                ? new Material(Shader.Find("Hai/ExpressionsMenuHierarchyEditorGrayOut"))
                : compiler.discardGrayOut;

            // Last operation (depends on the previous lines)
            _discardApplicable = compiler.autoDiscard && (_expressionParametersOptional != null || _discardTags.Length != 0);
        }
Пример #2
0
        private void CreateDiscardMenuItem(ExpressionsMenuHierarchyItem item, VRCExpressionsMenu destination, Emh.EmhDiscardType currentDiscard)
        {
            switch (currentDiscard)
            {
            case Emh.EmhDiscardType.BlankOut:
                destination.controls.Add(new VRCExpressionsMenu.Control
                {
                    type      = VRCExpressionsMenu.Control.ControlType.Button,
                    name      = "",
                    icon      = BlankIcon(),
                    value     = 1,
                    parameter = new VRCExpressionsMenu.Control.Parameter
                    {
                        name = ""
                    },
                    subMenu       = null,
                    subParameters = new VRCExpressionsMenu.Control.Parameter[0],
                    labels        = new VRCExpressionsMenu.Control.Label[0],
                });
                break;

            case Emh.EmhDiscardType.GrayOut:
                var iconNullable      = item.icon != null ? item.icon : _defaultIconOptional;
                var finalIconNullable = iconNullable != null && item.shader != null?CreateOrGetIcon(iconNullable, item.shader) : iconNullable;

                var grayedOutIcon = finalIconNullable != null?CreateOrGetIcon(finalIconNullable, _discardGrayOut) : null;

                destination.controls.Add(new VRCExpressionsMenu.Control
                {
                    type      = VRCExpressionsMenu.Control.ControlType.Button,
                    name      = item.ResolveName(),
                    icon      = grayedOutIcon,
                    value     = 1,
                    parameter = new VRCExpressionsMenu.Control.Parameter
                    {
                        name = ""
                    },
                    subMenu       = null,
                    subParameters = new VRCExpressionsMenu.Control.Parameter[0],
                    labels        = new VRCExpressionsMenu.Control.Label[0],
                });
                break;

            case Emh.EmhDiscardType.Remove:
            case Emh.EmhDiscardType.Default:
            default:
                throw new ArgumentOutOfRangeException();
            }
        }