Ejemplo n.º 1
0
    public void Init()
    {
        // GameMode
        CreateAction("GameMode", "PlayMode", () => SuperController.singleton.gameMode = SuperController.GameMode.Play);
        CreateAction("GameMode", "EditMode", () => SuperController.singleton.gameMode = SuperController.GameMode.Edit);

        // Main menu
        CreateAction("Global", "OpenMainMenu", () => SuperController.singleton.activeUI = SuperController.ActiveUI.MainMenu);
        CreateAction("Global", "SaveScene", SuperController.singleton.SaveSceneDialog);
        CreateAction("Global", "LoadScene", SuperController.singleton.LoadSceneDialog);
        CreateAction("Global", "MergeLoadScene", SuperController.singleton.LoadMergeSceneDialog);
        CreateAction("Global", "ScreenshotMode", SuperController.singleton.SelectModeScreenshot);
        CreateAction("Global", "OnlineBrowser", () => SuperController.singleton.activeUI = SuperController.ActiveUI.OnlineBrowser);
        CreateAction("Global", "Toggle_ShowHiddenAtoms", SuperController.singleton.ToggleShowHiddenAtoms);
        CreateAction("Global", "Toggle_Targets", SuperController.singleton.ToggleTargetsOnWithButton);
        CreateAction("Global", "CycleStack", SuperController.singleton.ProcessTargetSelectionCycleSelectMouse);
        CreateAction("Global", "Exit", SuperController.singleton.Quit);

        // Monitor
        CreateAction("Monitor", "Toggle_MainMonitor", SuperController.singleton.ToggleMainMonitor);
        CreateAction("Monitor", "Toggle_MonitorUI", SuperController.singleton.ToggleMonitorUI);
        CreateAction("Monitor", "Toggle_MonitorHudMonitor", SuperController.singleton.ToggleMainHUDMonitor);

        // Menu
        CreateAction("AtomUI", "Open", () => OpenTab(null));
        CreateAction("AtomUI", "CloseAllPanels", CloseAllPanels);
        CreateAction("AtomUI", "ControlTab", () => OpenTab(type => type == "Person" ? "ControlAndPhysics1" : "Control"));
        CreateAction("AtomUI", "PresetTab", () => OpenTab(_ => "Preset"));
        CreateAction("AtomUI", "MoveTab", () => OpenTab(_ => "Move"));
        CreateAction("AtomUI", "AnimationTab", () => OpenTab(_ => "Animation"));
        CreateAction("AtomUI", "PhysicsControlTab", () => OpenTab(_ => "Physics Control"));
        CreateAction("AtomUI", "PhysicsObjectTab", () => OpenTab(_ => "Physics Object"));
        CreateAction("AtomUI", "CollisionTriggerTab", () => OpenTab(_ => "Collision Trigger"));
        CreateAction("AtomUI", "MaterialTab", () => OpenTab(_ => "Material"));
        CreateAction("AtomUI", "PluginsTab", () => OpenTab(_ => "Plugins"));
        CreateAction("AtomUI", "PluginsTab_Plugin#0", () => OpenPlugin(0));
        CreateAction("AtomUI", "PluginsTab_Plugin#1", () => OpenPlugin(1));
        CreateAction("AtomUI", "PluginsTab_Plugin#2", () => OpenPlugin(2));
        CreateAction("AtomUI", "PluginsTab_Plugin#3", () => OpenPlugin(3));
        CreateAction("AtomUI", "PluginsTab_Plugin#4", () => OpenPlugin(4));
        CreateAction("AtomUI", "PluginsTab_Plugin#5", () => OpenPlugin(5));
        CreateAction("AtomUI", "PluginsTab_Plugin#6", () => OpenPlugin(6));
        CreateAction("AtomUI", "PluginsTab_Plugin#7", () => OpenPlugin(7));
        CreateAction("AtomUI", "PluginsTab_Plugin#8", () => OpenPlugin(8));
        CreateAction("AtomUI", "PluginsTab_Plugin#9", () => OpenPlugin(9));
        // Person
        CreateAction("AtomUI", "ClothingTab", () => OpenTab(_ => "Clothing", "Person"));
        CreateAction("AtomUI", "ClothingTab", () => OpenTab(_ => "Clothing", "Person"));
        CreateAction("AtomUI", "HairTab", () => OpenTab(_ => "Hair", "Person"));
        CreateAction("AtomUI", "AppearancePresetsTab", () => OpenTab(_ => "Appearance Presets", "Person"));
        CreateAction("AtomUI", "GeneralPresetsTab", () => OpenTab(_ => "General Presets", "Person"));
        CreateAction("AtomUI", "PosePresetsTab", () => OpenTab(_ => "Pose Presets", "Person"));
        CreateAction("AtomUI", "SkinPresetsTab", () => OpenTab(_ => "Skin Presets", "Person"));
        CreateAction("AtomUI", "PluginsPresetsTab", () => OpenTab(_ => "Plugins Presets", "Person"));
        CreateAction("AtomUI", "MorphsPresetsTab", () => OpenTab(_ => "Morphs Presets", "Person"));
        CreateAction("AtomUI", "HairPresetsTab", () => OpenTab(_ => "Hair Presets", "Person"));
        CreateAction("AtomUI", "ClothingPresetsTab", () => OpenTab(_ => "Clothing Presets", "Person"));
        CreateAction("AtomUI", "MaleMorphsTab", () => OpenTab(_ => "Male Morphs", "Person"));
        CreateAction("AtomUI", "FemaleMorphsTab", () => OpenTab(_ => "Female Morphs", "Person"));
        // Animation Pattern
        CreateAction("AtomUI", "AnimationPatternTab", () => OpenTab(_ => "Animation Pattern", "AnimationPattern"));
        CreateAction("AtomUI", "AnimationTriggersTab", () => OpenTab(_ => "Animation Triggers", "AnimationPattern"));
        // Custom Unity Asset
        CreateAction("AtomUI", "AssetTab", () => OpenTab(_ => "Asset", "CustomUnityAsset"));
        // Audio Source
        CreateAction("AtomUI", "AudioSourceTab", () => OpenTab(_ => "Audio Source", "AudioSource"));

        // Main Tabs
        CreateAction("MainUI", "Open", () => OpenMainTab(null));
        CreateAction("MainUI", "FileTab", () => OpenMainTab("TabFile"));
        CreateAction("MainUI", "UserPrefsTab", () => OpenMainTab("TabUserPrefs"));
        CreateAction("MainUI", "NavigationTab", () => OpenMainTab("TabNavigation"));
        CreateAction("MainUI", "SelectTab", () => OpenMainTab("TabSelect"));
        CreateAction("MainUI", "SessionPluginPresetsTab", () => OpenMainTab("TabSessionPluginPresets"));
        CreateAction("MainUI", "SessionPluginsTab", () => OpenMainTab("TabSessionPlugins"));
        CreateAction("MainUI", "ScenePluginsTab", () => OpenMainTab("TabScenePlugins"));
        CreateAction("MainUI", "ScenePluginPresetsTab", () => OpenMainTab("TabScenePluginPresets"));
        CreateAction("MainUI", "SceneLightingTab", () => OpenMainTab("TabSceneLighting"));
        CreateAction("MainUI", "SceneMiscTab", () => OpenMainTab("TabSceneMisc"));
        CreateAction("MainUI", "SceneAnimationTab", () => OpenMainTab("TabAnimation"));
        CreateAction("MainUI", "AddAtomTab", () => OpenMainTab("TabAddAtom"));
        CreateAction("MainUI", "AudioTab", () => OpenMainTab("TabAudio"));
        // CreateAction("OpenMainMenuDebugTab", () => OpenMainTab("TabDebug"));
        // TODO: Next/Previous tab

        // Selection
        CreateAction("Select", "Deselect", () => SuperController.singleton.SelectController(null));
        CreateAction("Select", "HistoryBack", SelectHistoryBack);
        CreateAction("Select", "PreviousAtom", () => SelectPreviousAtom());
        CreateAction("Select", "NextAtom", () => SelectNextAtom());
        CreateAction("Select", "PreviousPersonAtom", () => SelectPreviousAtom("Person"));
        CreateAction("Select", "NextPersonAtom", () => SelectNextAtom("Person"));
        CreateAction("Select", "RootControl", () => SelectControllerByName("control"));
        CreateAction("Select", "HeadControl", () => SelectControllerByName("headControl"));
        CreateAction("Select", "NeckControl", () => SelectControllerByName("neckControl"));
        CreateAction("Select", "LShoulderControl", () => SelectControllerByName("lShoulderControl"));
        CreateAction("Select", "RShoulderControl", () => SelectControllerByName("rShoulderControl"));
        CreateAction("Select", "LArmControl", () => SelectControllerByName("lArmControl"));
        CreateAction("Select", "RArmControl", () => SelectControllerByName("rArmControl"));
        CreateAction("Select", "LElbowControl", () => SelectControllerByName("lElbowControl"));
        CreateAction("Select", "RElbowControl", () => SelectControllerByName("rElbowControl"));
        CreateAction("Select", "LHandControl", () => SelectControllerByName("lHandControl"));
        CreateAction("Select", "RHandControl", () => SelectControllerByName("rHandControl"));
        CreateAction("Select", "ChestControl", () => SelectControllerByName("chestControl"));
        CreateAction("Select", "LNippleControl", () => SelectControllerByName("lNippleControl"));
        CreateAction("Select", "RNippleControl", () => SelectControllerByName("rNippleControl"));
        CreateAction("Select", "Abdomen2Control", () => SelectControllerByName("abdomen2Control"));
        CreateAction("Select", "AbdomenControl", () => SelectControllerByName("abdomenControl"));
        CreateAction("Select", "HipControl", () => SelectControllerByName("hipControl"));
        CreateAction("Select", "TestesControl", () => SelectControllerByName("testesControl"));
        CreateAction("Select", "PenisBaseControl", () => SelectControllerByName("penisBaseControl"));
        CreateAction("Select", "PenisMidControl", () => SelectControllerByName("penisMidControl"));
        CreateAction("Select", "PenisTipControl", () => SelectControllerByName("penisTipControl"));
        CreateAction("Select", "PelvisControl", () => SelectControllerByName("pelvisControl"));
        CreateAction("Select", "LThighControl", () => SelectControllerByName("lThighControl"));
        CreateAction("Select", "RThighControl", () => SelectControllerByName("rThighControl"));
        CreateAction("Select", "LKneeControl", () => SelectControllerByName("lKneeControl"));
        CreateAction("Select", "RKneeControl", () => SelectControllerByName("rKneeControl"));
        CreateAction("Select", "LFootControl", () => SelectControllerByName("lFootControl"));
        CreateAction("Select", "RFootControl", () => SelectControllerByName("rFootControl"));
        CreateAction("Select", "LToeControl", () => SelectControllerByName("lToeControl"));
        CreateAction("Select", "RToeControl", () => SelectControllerByName("rToeControl"));
        CreateAction("Select", "EyeTargetControl", () => SelectControllerByName("eyeTargetControl"));

        // Dev
        CreateAction("Plugins", "ReloadAllScenePlugins", ReloadAllScenePlugins);

        // Edit atom
        CreateAction("Atom", "Toggle_OnOff", () => OnSelectedAtom(atom => atom.ToggleOn()));
        CreateAction("Atom", "On", () => OnSelectedAtom(atom => atom.SetOn(true)));
        CreateAction("Atom", "Off", () => OnSelectedAtom(atom => atom.SetOn(false)));
        CreateAction("Atom", "EnableCollisions", () => OnSelectedAtom(atom => atom.collisionEnabled  = true));
        CreateAction("Atom", "DisableCollisions", () => OnSelectedAtom(atom => atom.collisionEnabled = true));

        // Add atom
        CreateAction("Add", "Clone_CurrentAtom", () => _owner.StartCoroutine(CloneCurrentAtom()));
        CreateAction("Add", "AnimationPattern", () => SuperController.singleton.AddAtomByType("AnimationPattern", true, true, true));
        CreateAction("Add", "FloorsAndWalls_AtomSlate", () => SuperController.singleton.AddAtomByType("Slate", true, true, true));
        CreateAction("Add", "FloorsAndWalls_AtomWall", () => SuperController.singleton.AddAtomByType("Wall", true, true, true));
        CreateAction("Add", "FloorsAndWalls_AtomWoodPanel", () => SuperController.singleton.AddAtomByType("WoodPanel", true, true, true));
        CreateAction("Add", "Force_CycleForce", () => SuperController.singleton.AddAtomByType("CycleForce", true, true, true));
        CreateAction("Add", "Force_GrabPoint", () => SuperController.singleton.AddAtomByType("GrabPoint", true, true, true));
        CreateAction("Add", "Force_RhythmForce", () => SuperController.singleton.AddAtomByType("RhythmForce", true, true, true));
        CreateAction("Add", "Force_SyncForce", () => SuperController.singleton.AddAtomByType("SyncForce", true, true, true));
        CreateAction("Add", "Light_InvisibleLight", () => SuperController.singleton.AddAtomByType("InvisibleLight", true, true, true));
        CreateAction("Add", "Misc_ClothGrabSphere", () => SuperController.singleton.AddAtomByType("ClothGrabSphere", true, true, true));
        CreateAction("Add", "Misc_CustomUnityAsset", () => SuperController.singleton.AddAtomByType("CustomUnityAsset", true, true, true));
        CreateAction("Add", "Misc_Empty", () => SuperController.singleton.AddAtomByType("Empty", true, true, true));
        CreateAction("Add", "Misc_ImagePanel", () => SuperController.singleton.AddAtomByType("ImagePanel", true, true, true));
        CreateAction("Add", "Misc_SimpleSign", () => SuperController.singleton.AddAtomByType("SimpleSign", true, true, true));
        CreateAction("Add", "Misc_SubScene", () => SuperController.singleton.AddAtomByType("SubScene", true, true, true));
        CreateAction("Add", "Misc_UIText", () => SuperController.singleton.AddAtomByType("UIText", true, true, true));
        CreateAction("Add", "Misc_VaMLogo", () => SuperController.singleton.AddAtomByType("VaMLogo", true, true, true));
        CreateAction("Add", "Misc_WebBrowser", () => SuperController.singleton.AddAtomByType("WebBrowser", true, true, true));
        CreateAction("Add", "Misc_WebPanel", () => SuperController.singleton.AddAtomByType("WebPanel", true, true, true));
        CreateAction("Add", "People_Person", () => SuperController.singleton.AddAtomByType("Person", true, true, true));
        CreateAction("Add", "Props_SimSheet", () => SuperController.singleton.AddAtomByType("SimSheet", true, true, true));
        CreateAction("Add", "Reflective_Glass", () => SuperController.singleton.AddAtomByType("Glass", true, true, true));
        CreateAction("Add", "Reflective_ReflectiveSlate", () => SuperController.singleton.AddAtomByType("ReflectiveSlate", true, true, true));
        CreateAction("Add", "Reflective_ReflectiveWoodPanel", () => SuperController.singleton.AddAtomByType("ReflectiveWoodPanel", true, true, true));
        CreateAction("Add", "Shapes_Cube", () => SuperController.singleton.AddAtomByType("Cube", true, true, true));
        CreateAction("Add", "Shapes_Sphere", () => SuperController.singleton.AddAtomByType("Sphere", true, true, true));
        CreateAction("Add", "Shapes_Capsule", () => SuperController.singleton.AddAtomByType("Capsule", true, true, true));
        CreateAction("Add", "Sound_AudioSource", () => SuperController.singleton.AddAtomByType("AudioSource", true, true, true));
        CreateAction("Add", "Toys_Dildo", () => SuperController.singleton.AddAtomByType("D***o", true, true, true));
        CreateAction("Add", "Triggers_CollisionTrigger", () => SuperController.singleton.AddAtomByType("CollisionTrigger", true, true, true));
        CreateAction("Add", "Triggers_LookAtTrigger", () => SuperController.singleton.AddAtomByType("LookAtTrigger", true, true, true));
        CreateAction("Add", "Triggers_UIButton", () => SuperController.singleton.AddAtomByType("UIButton", true, true, true));
        CreateAction("Add", "Triggers_UISlider", () => SuperController.singleton.AddAtomByType("UISlider", true, true, true));
        CreateAction("Add", "Triggers_UIToggle", () => SuperController.singleton.AddAtomByType("UIToggle", true, true, true));
        CreateAction("Add", "Triggers_VariableTrigger", () => SuperController.singleton.AddAtomByType("VariableTrigger", true, true, true));

        // Remove atom
        CreateAction("Remove", "SelectedAtom", () => SuperController.singleton.RemoveAtom(SuperController.singleton.GetSelectedAtom()));

        // Edit controller
        CreateAction("Controller", "PositionState_On", () => OnSelectedController(c => c.currentPositionState  = FreeControllerV3.PositionState.On));
        CreateAction("Controller", "PositionState_Off", () => OnSelectedController(c => c.currentPositionState = FreeControllerV3.PositionState.Off));
        CreateAction("Controller", "RotationState_On", () => OnSelectedController(c => c.currentRotationState  = FreeControllerV3.RotationState.On));
        CreateAction("Controller", "RotationState_Off", () => OnSelectedController(c => c.currentRotationState = FreeControllerV3.RotationState.Off));
        CreateAction("Controller", "PositionAndRotationState_On", () => OnSelectedController(c => { c.currentPositionState = FreeControllerV3.PositionState.On; c.currentRotationState = FreeControllerV3.RotationState.On; }));
        CreateAction("Controller", "PositionAndRotationState_Off", () => OnSelectedController(c => { c.currentPositionState = FreeControllerV3.PositionState.Off; c.currentRotationState = FreeControllerV3.RotationState.Off; }));

        // Animation
        CreateAction("Animations", "StartPlayback", () => SuperController.singleton.motionAnimationMaster.StartPlayback());
        CreateAction("Animations", "StopPlayback", () => SuperController.singleton.motionAnimationMaster.StopPlayback());
        CreateAction("Animations", "Reset", () => SuperController.singleton.motionAnimationMaster.ResetAnimation());
        // TODO: Add more options

        // Time
        CreateAction("Time", "Toggle_FreezeMotionAndSound", () => SuperController.singleton.freezeAnimationToggle.isOn = !SuperController.singleton.freezeAnimationToggle.isOn);
        CreateAction("Time", "TimeScale_Set_Normal", () => TimeControl.singleton.currentScale  = 1f);
        CreateAction("Time", "TimeScale_Set_Half", () => TimeControl.singleton.currentScale    = 0.5f);
        CreateAction("Time", "TimeScale_Set_Quarter", () => TimeControl.singleton.currentScale = 0.25f);
        CreateAction("Time", "TimeScale_Set_Minimum", () => TimeControl.singleton.currentScale = 0.1f);

        // Movement
        _moveX         = CreateAnalog("Move", "Move_Absolute_X");
        _moveY         = CreateAnalog("Move", "Move_Absolute_Y");
        _moveZ         = CreateAnalog("Move", "Move_Absolute_Z");
        _rotateX       = CreateAnalog("Rotate", "Rotate_Absolute_X");
        _rotateY       = CreateAnalog("Rotate", "Rotate_Absolute_Y");
        _rotateZ       = CreateAnalog("Rotate", "Rotate_Absolute_Z");
        _moveCameraX   = CreateAnalog("Move", "Move_RelativeToCamera_X");
        _moveCameraY   = CreateAnalog("Move", "Move_RelativeToCamera_Y");
        _moveCameraZ   = CreateAnalog("Move", "Move_RelativeToCamera_Z");
        _rotateCameraX = CreateAnalog("Move", "Rotate_RelativeToCamera_X");
        _rotateCameraY = CreateAnalog("Move", "Rotate_RelativeToCamera_Y");
        _rotateCameraZ = CreateAnalog("Move", "Rotate_RelativeToCamera_Z");
        CreateAction("Move", "MoveToCameraRaycastHit", MoveToCameraRaycastHit);
        CreateAction("Move", "MoveAndAlignToCamera", MoveAndAlignToCamera);

        // Camera
        CreateAction("Camera", "Toggle_FreeMoveMouse", SuperController.singleton.ToggleModeFreeMoveMouse);
        CreateAction("Camera", "FocusOnSelectedController", () => SuperController.singleton.FocusOnSelectedController());
        CreateAction("Camera", "FocusMoveOnSelectedController", () => SuperController.singleton.FocusOnSelectedController(false));
        CreateAction("Camera", "ResetFocusPoint", () => SuperController.singleton.ResetFocusPoint());
        _cameraPanX      = CreateAnalog("Camera", "Pan_X");
        _cameraPanXFast  = CreateAnalog("Camera", "Pan_X.Fast");
        _cameraPanY      = CreateAnalog("Camera", "Pan_Y");
        _cameraPanYFast  = CreateAnalog("Camera", "Pan_Y.Fast");
        _cameraPanZ      = CreateAnalog("Camera", "Pan_Z");
        _cameraPanZFast  = CreateAnalog("Camera", "Pan_Z.Fast");
        _cameraOrbitX    = CreateAnalog("Camera", "Orbit_X");
        _cameraOrbitY    = CreateAnalog("Camera", "Orbit_Y");
        _cameraDollyZoom = CreateAnalog("Camera", "DollyZoom");

        // Logging
        CreateAction("Logs", "ClearMessageLog", SuperController.singleton.ClearMessages);
        CreateAction("Logs", "OpenMessageLog", SuperController.singleton.OpenMessageLogPanel);
        CreateAction("Logs", "CloseMessageLog", SuperController.singleton.CloseMessageLogPanel);
        CreateAction("Logs", "ToggleMessageLog", () => SuperController.singleton.msgLogPanel.gameObject.SetActive(!SuperController.singleton.msgLogPanel.gameObject.activeSelf));
        CreateAction("Logs", "ClearErrorLog", SuperController.singleton.ClearErrors);
        CreateAction("Logs", "OpenErrorLog", SuperController.singleton.OpenErrorLogPanel);
        CreateAction("Logs", "CloseErrorLog", SuperController.singleton.CloseErrorLogPanel);
        CreateAction("Logs", "ToggleErrorLog", () => SuperController.singleton.errorLogPanel.gameObject.SetActive(!SuperController.singleton.errorLogPanel.gameObject.activeSelf));

        // Settings
        CreateAction("Settings", "TogglePerformanceMonitor", TogglePerformanceMonitor);
        CreateAction("Settings", "PhysicsRate_Auto", () => UserPreferences.singleton.physicsRate  = UserPreferences.PhysicsRate.Auto);
        CreateAction("Settings", "PhysicsRate_45", () => UserPreferences.singleton.physicsRate    = UserPreferences.PhysicsRate._45);
        CreateAction("Settings", "PhysicsRate_90", () => UserPreferences.singleton.physicsRate    = UserPreferences.PhysicsRate._90);
        CreateAction("Settings", "PhysicsRate_120", () => UserPreferences.singleton.physicsRate   = UserPreferences.PhysicsRate._120);
        CreateAction("Settings", "PixelLights_0", () => UserPreferences.singleton.pixelLightCount = 0);
        CreateAction("Settings", "PixelLights_1", () => UserPreferences.singleton.pixelLightCount = 0);
        CreateAction("Settings", "PixelLights_2", () => UserPreferences.singleton.pixelLightCount = 0);
        CreateAction("Settings", "PixelLights_3", () => UserPreferences.singleton.pixelLightCount = 0);
        CreateAction("Settings", "SmoothPass_0", () => UserPreferences.singleton.smoothPasses     = 0);
        CreateAction("Settings", "SmoothPass_1", () => UserPreferences.singleton.smoothPasses     = 1);
        CreateAction("Settings", "SmoothPass_2", () => UserPreferences.singleton.smoothPasses     = 2);
        CreateAction("Settings", "SmoothPass_3", () => UserPreferences.singleton.smoothPasses     = 3);
        CreateAction("Settings", "SmoothPass_4", () => UserPreferences.singleton.smoothPasses     = 4);
        CreateAction("Settings", "Toggle_MirrorReflections", () => UserPreferences.singleton.mirrorReflections = !UserPreferences.singleton.mirrorReflections);
        CreateAction("Settings", "Toggle_SoftPhysics", () => UserPreferences.singleton.softPhysics             = !UserPreferences.singleton.softPhysics);
        CreateAction("Settings", "Toggle_MirrorToDisplay", () => UserPreferences.singleton.mirrorToDisplay     = !UserPreferences.singleton.mirrorToDisplay);
        CreateAction("Settings", "PhysicsUpdateCap_1", () => UserPreferences.singleton.physicsUpdateCap        = 1);
        CreateAction("Settings", "PhysicsUpdateCap_2", () => UserPreferences.singleton.physicsUpdateCap        = 2);
        CreateAction("Settings", "PhysicsUpdateCap_3", () => UserPreferences.singleton.physicsUpdateCap        = 3);
        CreateAction("Settings", "HandModel_SphereNone", () => SelectHandModel("None", false));
        CreateAction("Settings", "HandModel_SphereKinematic", () => SelectHandModel("SphereKinematic", false));
        CreateAction("Settings", "HandModel_Male1", () => SelectHandModel("Male1", true));
        CreateAction("Settings", "HandModel_Male2", () => SelectHandModel("Male2", true));
        CreateAction("Settings", "Toggle_HandCollisions", () => UserPreferences.singleton.motionHandModelControl.ToggleCollision());

        CreateAction("Leap", "Toggle_AllowPinchGrab", () => SuperController.singleton.leapHandModelControl.allowPinchGrab  = !SuperController.singleton.leapHandModelControl.allowPinchGrab);
        CreateAction("Leap", "Enable_AllowPinchGrab", () => SuperController.singleton.leapHandModelControl.allowPinchGrab  = true);
        CreateAction("Leap", "Disable_AllowPinchGrab", () => SuperController.singleton.leapHandModelControl.allowPinchGrab = false);
        CreateAction("Leap", "Toggle_LeapMotion", () => GlobalSceneOptions.singleton.disableLeap  = !GlobalSceneOptions.singleton.disableLeap);
        CreateAction("Leap", "Enable_LeapMotion", () => GlobalSceneOptions.singleton.disableLeap  = false);
        CreateAction("Leap", "Disable_LeapMotion", () => GlobalSceneOptions.singleton.disableLeap = true);

        CreateAction("Packages", "RescanAddonPackages", () => SuperController.singleton.RescanPackages());
        CreateAction("Packages", "OpenPackageBuilder", () => SuperController.singleton.OpenPackageBuilder());
        CreateAction("Packages", "OpenPackageManager", () => SuperController.singleton.OpenPackageManager());
        // TODO: Got permission from LFE to check out what he thought off, take a look and make sure to double-credit him! :)

        // TODO: Find a few useful examples for this
        // _remoteCommandsManager.Add(new JSONStorableBoolCommandInvoker(
        //     _owner,
        //     "Tests",
        //     "BoolTest", new JSONStorableBool("test", false, (bool val) =>
        //         {
        //             SuperController.singleton.ClearMessages();
        //             SuperController.LogMessage(val.ToString());
        //         }
        //     )));
    }