Esempio n. 1
0
        private void OnAddParameterButtonClicked(Button button)
        {
            var window            = (IVisjectSurfaceWindow)Values[0];
            var newParameterTypes = window.NewParameterTypes;

            // Show context menu with list of parameter types to add
            var cm = new ItemsListContextMenu(180);

            foreach (var newParameterType in newParameterTypes)
            {
                var name = newParameterType.Type != null?window.VisjectSurface.GetTypeName(newParameterType) : newParameterType.Name;

                var item = new ItemsListContextMenu.Item(name, newParameterType)
                {
                    TooltipText = newParameterType.TypeName,
                };
                var attributes       = newParameterType.GetAttributes(false);
                var tooltipAttribute = (TooltipAttribute)attributes.FirstOrDefault(x => x is TooltipAttribute);
                if (tooltipAttribute != null)
                {
                    item.TooltipText += '\n';
                    item.TooltipText += tooltipAttribute.Text;
                }
                cm.AddItem(item);
            }
            cm.ItemClicked += OnAddParameterItemClicked;
            cm.SortChildren();
            cm.Show(button.Parent, button.BottomLeft);
        }
Esempio n. 2
0
        private void PickBone(Button button, Action <string> action, bool showOnlyExisting)
        {
            // Show context menu with list of bones to pick
            var cm            = new ItemsListContextMenu(280);
            var ragdoll       = (Ragdoll)Values[0];
            var bodies        = ragdoll.Children.Where(x => x is RigidBody && x.IsActive);
            var animatedModel = (AnimatedModel)ragdoll.Parent;

            animatedModel.SkinnedModel.WaitForLoaded();
            var nodes = animatedModel.SkinnedModel.Nodes;
            var bones = animatedModel.SkinnedModel.Bones;

            foreach (var bone in bones)
            {
                var node = nodes[bone.NodeIndex];
                if (showOnlyExisting && !bodies.Any(x => x.Name == node.Name))
                {
                    continue;
                }
                string prefix = string.Empty, tooltip = node.Name;
                var    boneParentIndex = bone.ParentIndex;
                while (boneParentIndex != -1)
                {
                    prefix         += "   ";
                    tooltip         = nodes[bones[boneParentIndex].NodeIndex].Name + " > " + tooltip;
                    boneParentIndex = bones[boneParentIndex].ParentIndex;
                }
                var item = new ItemsListContextMenu.Item
                {
                    Name        = prefix + node.Name,
                    TooltipText = tooltip,
                    Tag         = node.Name,
                };
                if (!showOnlyExisting && !bodies.Any(x => x.Name == node.Name))
                {
                    item.TintColor = new Color(1, 0.8f, 0.8f, 0.6f);
                }
                cm.AddItem(item);
            }
            cm.ItemClicked += item => action((string)item.Tag);
            cm.SortChildren();
            cm.Show(button.Parent, button.BottomLeft);
        }
Esempio n. 3
0
        private void OnAddParameterItemClicked(ItemsListContextMenu.Item item)
        {
            var type   = (ScriptType)item.Tag;
            var window = (IVisjectSurfaceWindow)Values[0];
            var asset  = window?.VisjectAsset;

            if (asset == null || !asset.IsLoaded)
            {
                return;
            }
            var action = new AddRemoveParamAction
            {
                Window = window,
                IsAdd  = true,
                Name   = StringUtils.IncrementNameNumber("New parameter", x => OnParameterRenameValidate(null, x)),
                Type   = type,
                Index  = window.VisjectSurface.Parameters.Count,
            };

            window.VisjectSurface.Undo.AddAction(action);
            action.Do();
        }
Esempio n. 4
0
        private void AddScriptButtonOnClicked(Button button)
        {
            var scripts = Editor.Instance.CodeEditing.Scripts.Get();

            if (scripts.Count == 0)
            {
                // No scripts
                var cm1 = new ContextMenu();
                cm1.AddButton("No scripts in project");
                cm1.Show(this, button.BottomLeft);
                return;
            }

            // Show context menu with list of scripts to add
            var cm = new ItemsListContextMenu(180);

            for (int i = 0; i < scripts.Count; i++)
            {
                var scriptType = scripts[i];
                var item       = new ItemsListContextMenu.Item(scriptType.Name, scriptType)
                {
                    TooltipText = scriptType.TypeName,
                };
                var attributes       = scriptType.GetAttributes(false);
                var tooltipAttribute = (TooltipAttribute)attributes.FirstOrDefault(x => x is TooltipAttribute);
                if (tooltipAttribute != null)
                {
                    item.TooltipText += '\n';
                    item.TooltipText += tooltipAttribute.Text;
                }
                cm.AddItem(item);
            }
            cm.ItemClicked += item => AddScript((ScriptType)item.Tag);
            cm.SortChildren();
            cm.Show(this, button.BottomLeft);
        }