public BreathController(DollmasterPlugin dm) : base(dm) { chestControl = atom.GetStorableByID("chestControl") as FreeControllerV3; string SFX_PATH = DollmasterPlugin.ASSETS_PATH + "/SFX"; breathingMouth = DollmasterPlugin.LoadAudio(SFX_PATH + "/breathing_mouth.wav"); breathingNose = DollmasterPlugin.LoadAudio(SFX_PATH + "/breathing_nose.wav"); breathingPanting = DollmasterPlugin.LoadAudio(SFX_PATH + "/breathing_panting.mp3"); breathEnabled = new JSONStorableBool("breathEnabled", true); dm.RegisterBool(breathEnabled); UIDynamicToggle moduleEnableToggle = dm.CreateToggle(breathEnabled); moduleEnableToggle.label = "Enable Breathing"; moduleEnableToggle.backgroundColor = Color.green; dm.CreateSpacer(); }
public SFXController(DollmasterPlugin dm) : base(dm) { dm.StartCoroutine(CreateAtom("AudioSource", atomPrefix, (createdAtom) => { audioAtom = createdAtom; FreeControllerV3 hipControl = dm.containingAtom.GetStorableByID("hipControl") as FreeControllerV3; audioAtom.mainController.transform.SetPositionAndRotation(hipControl.transform.position, hipControl.transform.rotation); audioAtom.mainController.transform.Translate(0, -0.1f, 0, Space.Self); audioAtom.mainController.currentPositionState = FreeControllerV3.PositionState.ParentLink; audioAtom.mainController.currentRotationState = FreeControllerV3.RotationState.ParentLink; audioAtom.mainController.canGrabPosition = false; audioAtom.mainController.canGrabRotation = false; Rigidbody rb = SuperController.singleton.RigidbodyNameToRigidbody(atom.name + ":hipControl"); audioAtom.mainController.SelectLinkToRigidbody(rb, FreeControllerV3.SelectLinkState.PositionAndRotation); })); JSONClass sfxDefaults = dm.config.configJSON["sfxDefaults"].AsObject; JSONArray skinContacts = sfxDefaults["skinContact"].AsArray; JSONArray insertion = sfxDefaults["insertion"].AsArray; for (int i = 0; i < skinContacts.Count; i++) { string path = DollmasterPlugin.PLUGIN_PATH + "/" + skinContacts[i].Value; skinContactSFX.Add(DollmasterPlugin.LoadAudio(path)); } for (int i = 0; i < insertion.Count; i++) { string path = DollmasterPlugin.PLUGIN_PATH + "/" + insertion[i].Value; insertionSFX.Add(DollmasterPlugin.LoadAudio(path)); } playSoundEffects = new JSONStorableBool("playSoundEffects", true); dm.RegisterBool(playSoundEffects); UIDynamicToggle moduleEnableToggle = dm.CreateToggle(playSoundEffects); moduleEnableToggle.label = "Enable Sound Effects"; moduleEnableToggle.backgroundColor = Color.green; dm.CreateSpacer(); }
public ClimaxController(DollmasterPlugin dm) : base(dm) { climaxEnabled = new JSONStorableBool("climaxEnabled", true); dm.RegisterBool(climaxEnabled); UIDynamicToggle moduleEnableToggle = dm.CreateToggle(climaxEnabled); moduleEnableToggle.label = "Enable Climax"; moduleEnableToggle.backgroundColor = Color.green; climaxHeadRestEnabled = new JSONStorableBool("climaxHeadRestEnabled", true); dm.RegisterBool(climaxHeadRestEnabled); dm.CreateToggle(climaxHeadRestEnabled); climaxConvulsionEnabled = new JSONStorableBool("climaxConvulsionEnabled", true); dm.RegisterBool(climaxConvulsionEnabled); dm.CreateToggle(climaxConvulsionEnabled); restDuration = new JSONStorableFloat("restDuration", 5.0f, 0.1f, 60.0f, false); dm.RegisterFloat(restDuration); dm.CreateSlider(restDuration); climaxButton = dm.ui.CreateButton("Climax!", 300, 120); climaxButton.button.gameObject.SetActive(false); climaxButton.buttonText.fontSize = 48; UI.ColorButton(climaxButton, new Color(1, 1, 1), new Color(0.8f, 0.0f, 0.0f)); climaxButton.button.onClick.AddListener(() => { dm.arousal.MaxOut(); }); headControl = atom.GetStorableByID("headControl") as FreeControllerV3; headHoldRotationTarget = headControl.RBHoldRotationSpring; atom.freeControllers.ToList().ForEach((controller) => { initialRotationSpring[controller] = controller.RBHoldRotationSpring; initialPositionSpring[controller] = controller.RBHoldPositionSpring; }); dm.CreateSpacer(); }
public Expressions(DollmasterPlugin dm) : base(dm) { EXPRESSIONS_PATH = DollmasterPlugin.ASSETS_PATH + "/Expressions"; string MANIFEST_PATH = EXPRESSIONS_PATH + "/expression_manifest.json"; Debug.Log(MANIFEST_PATH); manifest = JSON.Parse(SuperController.singleton.ReadFileIntoString(MANIFEST_PATH)).AsObject; mouthOpenGroup = new ExpressionGroup(manifest["mouth open"].AsObject, dm); mouthClosedGroup = new ExpressionGroup(manifest["mouth closed"].AsObject, dm); eyesGroup = new ExpressionGroup(manifest["eyes"].AsObject, dm); idleGroup = new ExpressionGroup(manifest["idle"].AsObject, dm); kissGroup = new ExpressionGroup(manifest["kiss"].AsObject, dm); climaxGroup = new ExpressionGroup(manifest["climax"].AsObject, dm); JSONStorable geometry = atom.GetStorableByID("geometry"); DAZCharacterSelector character = geometry as DAZCharacterSelector; morphControl = character.morphsControlUI; }
public PluginState(DollmasterPlugin dm) { personalityChoice = new JSONStorableStringChooser("personality", dm.personas.personalityNames, defaultPersonalityName, "Personality", (string choice) => { dm.SetPersonality(choice); }); dm.SetPersonality(personalityChoice.val); dm.RegisterStringChooser(personalityChoice); UIPopup popup = dm.ui.CreatePopup("Personality", 300, 80); popup.transform.Translate(0.7f, 0.065f, 0, Space.Self); popup.showSlider = true; personalityChoice.popup = popup; //UIDynamicPopup personalityPopup = dm.CreatePopup(personalityChoice); //personalityPopup.popup.topButton.image.color = new Color(0.8f, 0.65f, 0.13f); //dm.CreateSpacer(); }
public ThrustAutoController(DollmasterPlugin dm) : base(dm) { autoThrustEnabled = new JSONStorableBool("auto thrust", false); dm.RegisterBool(autoThrustEnabled); UIDynamicToggle autoThrustToggle = ui.CreateToggle("Auto Thrust", 180, 40); autoThrustEnabled.toggle = autoThrustToggle.toggle; autoThrustToggle.transform.Translate(0.415f, -0.0430f, 0, Space.Self); autoThrustToggle.backgroundColor = new Color(0.2f, 0.2f, 0.2f); autoThrustToggle.labelText.color = new Color(1, 1, 1); autoThrustHoldDuration = new JSONStorableFloat("auto thrust hold duration", 4.0f, 1.0f, 10.0f, false); dm.RegisterFloat(autoThrustHoldDuration); dm.CreateSlider(autoThrustHoldDuration); autoThrustVariance = new JSONStorableFloat("auto thrust range", 2f, 0.1f, 5f, false); dm.RegisterFloat(autoThrustVariance); dm.CreateSlider(autoThrustVariance); dm.CreateSpacer(); }
public Arousal(DollmasterPlugin dm) : base(dm) { this.dm = dm; arousalEnabled = new JSONStorableBool("arousalEnabled", true); dm.RegisterBool(arousalEnabled); UIDynamicToggle moduleEnableToggle = dm.CreateToggle(arousalEnabled); moduleEnableToggle.label = "Enable Arousal"; moduleEnableToggle.backgroundColor = Color.green; arousalValue = new JSONStorableFloat("arousal", 0, 0, SLIDER_MAX, false, false); dm.RegisterFloat(arousalValue); UIDynamicSlider arousalSlider = dm.ui.CreateSlider("❤", 300, 120); //arousalSlider.valueFormat = "n0"; arousalValue.slider = arousalSlider.slider; sliderBGImage = arousalSlider.GetComponentInChildren <Image>(); sliderBGImage.color = new Color(0.2f, 0.2f, 0.2f, 1.0f); arousalSlider.labelText.color = new Color(1, 1, 1); arousalRate = new JSONStorableFloat("arousalRate", 1, 0.01f, 10, false, true); dm.RegisterFloat(arousalRate); dm.CreateSlider(arousalRate); arousalDecay = new JSONStorableFloat("arousalDecay", 0.3f, 0.01f, 10, false, true); dm.RegisterFloat(arousalDecay); dm.CreateSlider(arousalDecay); arousalDelay = new JSONStorableFloat("arousalDelay", 0.25f, 0.01f, 5, false, true); dm.RegisterFloat(arousalDelay); dm.CreateSlider(arousalDelay); timeToDecay = new JSONStorableFloat("timeToDecay", 2, 0, 60, false, true); dm.RegisterFloat(timeToDecay); dm.CreateSlider(timeToDecay); dm.CreateSpacer(); }
public TopButtons(DollmasterPlugin dm) : base(dm) { AddButton("Select Person", () => { SuperController.singleton.editModeToggle.isOn = true; SuperController.singleton.ShowMainHUDAuto(); SuperController.singleton.ClearSelection(); SuperController.singleton.SelectController(atom.mainController); }); // Shit's broken yo. //AddButton("Change Look", () => //{ // SuperController.singleton.ShowMainHUDAuto(); // PresetManager pm = atom.GetComponentInChildren<PresetManager>(includeInactive: true); // PresetManagerControlUI pmcui = atom.GetComponentInChildren<PresetManagerControlUI>(includeInactive: true); // if (pm != null && pmcui != null) // { // pm.itemType = PresetManager.ItemType.Atom; // pm.creatorName = null; // pm.storeFolderName = "Appearance"; // pm.storeName = "Appearance"; // pmcui.browsePresetsButton.onClick.Invoke(); // //atom.LoadAppearancePresetDialog(); // } // dm.dressController.OnRestore(); //}); //AddButton("Change Outfit", () => //{ // SuperController.singleton.ShowMainHUDAuto(); // PresetManager pm = atom.GetComponentInChildren<PresetManager>(includeInactive: true); // PresetManagerControlUI pmcui = atom.GetComponentInChildren<PresetManagerControlUI>(includeInactive: true); // if (pm != null && pmcui != null) // { // pm.itemType = PresetManager.ItemType.Custom; // pm.customPath = "Atom/Person/Clothing/"; // pmcui.browsePresetsButton.onClick.Invoke(); // } // dm.dressController.OnRestore(); //}); AddButton("Toggle Clothes", () => { dm.dressController.ToggleDressed(); }); AddButton("Select Pose", () => { SuperController.singleton.ShowMainHUDAuto(); // TODO: Preset pose-loading is not working here. string text = SuperController.singleton.savesDir + atom.type + "\\pose"; SuperController.singleton.fileBrowserUI.defaultPath = text; SuperController.singleton.fileBrowserUI.SetTextEntry(b: false); SuperController.singleton.fileBrowserUI.Show((path) => { if (string.IsNullOrEmpty(path)) { return; } atom.LoadPhysicalPreset(path); SuperController.singleton.PauseSimulation(5, "Loading Pose"); AllJointsController ajc = atom.GetComponentInChildren <AllJointsController>(includeInactive: true); ajc.SetOnlyKeyJointsOn(); dm.thrustController.Clear(); dm.thrustController.GenerateThrustAtoms(); }); }); AddButton("VAMasutra", () => { SuperController.singleton.ShowMainHUDAuto(); string sutraPath = DollmasterPlugin.ASSETS_PATH + "/VAMasutra"; SuperController.singleton.fileBrowserUI.defaultPath = sutraPath; SuperController.singleton.fileBrowserUI.SetTextEntry(b: false); SuperController.singleton.fileBrowserUI.Show((path) => { var montageJSON = JSON.Parse(SuperController.singleton.ReadFileIntoString(path)) as JSONClass; dm.montageController.currentMontage = null; MontageController.BeginMontage(dm, montageJSON); }); }); AddButton("Cycle Thruster", () => { dm.montageController.NextThruster(); }); bool minimized = false; UIDynamicButton minimizeUIButton = ui.CreateButton("Minimize UI", 100, 40); minimizeUIButton.transform.Translate(0.1f, -0.1f, 0, Space.Self); UI.ColorButton(minimizeUIButton, Color.white, Color.black); Dictionary <GameObject, bool> priorActive = new Dictionary <GameObject, bool>(); minimizeUIButton.button.onClick.AddListener(() => { minimized = !minimized; Transform t = ui.canvas.transform; for (int i = 0; i < t.childCount; i++) { GameObject child = t.GetChild(i).gameObject; if (minimized) { priorActive[child] = child.activeSelf; child.SetActive(false); } else { child.SetActive(priorActive[child]); } } minimizeUIButton.gameObject.SetActive(true); minimizeUIButton.label = minimized ? "Max UI" : "Minimize UI"; }); }
public MontageController(DollmasterPlugin dm, PoseController poseController) : base(dm) { this.poseController = poseController; UIDynamicButton saveButton = dm.CreateButton("Create Montage", true); saveButton.button.onClick.AddListener(() => { SuperController.singleton.currentSaveDir = SuperController.singleton.currentLoadDir; string name = "Montage " + montages.Count; Montage montage = new Montage(name, GetMontageAtoms()); montages.Add(montage); montageChoice.SetVal(name); montageChoice.choices = GetMontageNamesList(); currentMontage = montage; nextMontageButton.gameObject.SetActive(true); poseController.nextPoseButton.gameObject.SetActive(true); }); montageChoice = new JSONStorableStringChooser("montage", GetMontageNamesList(), "", "Select Montage", (string montageName) => { Montage found = FindMontageByName(montageName); if (found == null) { //SuperController.LogError("montage not found " + montageName); SetPoseUIActive(false); return; } float prevThrustValue = dm.thrustController.slider.slider.value; found.Apply(); currentMontage = found; Debug.Log("Applying Montage " + montageName); poseController.SetMontage(found); dm.thrustController.slider.slider.value = prevThrustValue; nextMontageButton.gameObject.SetActive(true); poseController.nextPoseButton.gameObject.SetActive(true); SetPoseUIActive(true); }); dm.RegisterStringChooser(montageChoice); //montageChoice.storeType = JSONStorableParam.StoreType.Appearance; nextMontageButton = dm.ui.CreateButton("Next Montage", 300, 80); nextMontageButton.transform.Translate(0, -0.1f, 0, Space.Self); nextMontageButton.buttonColor = new Color(0.4f, 0.3f, 0.05f); nextMontageButton.textColor = new Color(1, 1, 1); nextMontageButton.button.onClick.AddListener(() => { if (montages.Count == 0) { return; } int index = montageChoice.choices.IndexOf(montageChoice.val); int nextIndex = index + 1; if (nextIndex >= montageChoice.choices.Count) { nextIndex = 0; } string choice = montageChoice.choices[nextIndex]; montageChoice.SetVal(choice); poseController.StopCurrentAnimation(); }); nextMontageButton.gameObject.SetActive(false); dm.CreateSpacer(true).height = 25; dm.CreatePopup(montageChoice, true); montageChoice.popup.onOpenPopupHandlers += () => { montageChoice.choices = GetMontageNamesList(); }; dm.CreateButton("Update Selected Montage", true).button.onClick.AddListener(() => { if (currentMontage != null) { currentMontage.montageJSON = GetMontageAtoms(); } }); //dm.CreateButton("Clear Montages", true).button.onClick.AddListener(() => //{ // montages.Clear(); // currentMontage = null; // poseController.SetMontage(null); // nextMontageButton.gameObject.SetActive(false); // poseController.nextPoseButton.gameObject.SetActive(false); //}); dm.CreateButton("Delete Selected Montage", true).button.onClick.AddListener(() => { if (currentMontage == null) { return; } montages.Remove(currentMontage); currentMontage = null; poseController.SetMontage(null); montageChoice.SetVal(""); if (montages.Count == 0) { nextMontageButton.gameObject.SetActive(false); poseController.nextPoseButton.gameObject.SetActive(false); } else { montageChoice.SetVal(montages[0].name); } }); dm.CreateSpacer(true).height = 50; poseChoicePopup = dm.CreatePopup(poseController.poseChoice, true); poseChoicePopup.label = "Select Pose"; poseChoicePopup.popup.onOpenPopupHandlers += () => { if (currentMontage == null) { poseController.poseChoice.choices = new List <string>(); return; } poseController.poseChoice.choices = currentMontage.GetPoseNames(); }; dm.CreateSpacer(true).height = 25; addPoseButton = dm.CreateButton("Add Pose", true); addPoseButton.button.onClick.AddListener(() => { if (currentMontage == null) { return; } currentMontage.AddPose(PoseController.GetLocalPose(atom)); }); deletePoseButton = dm.CreateButton("Delete Selected Pose", true); deletePoseButton.button.onClick.AddListener(() => { if (currentMontage == null) { return; } JSONClass pose = poseController.GetPoseFromName(poseController.poseChoice.val); if (pose == null) { return; } currentMontage.poses.Remove(pose); }); //clearPosesButton = dm.CreateButton("Clear Poses", true); //clearPosesButton.button.onClick.AddListener(() => //{ // if (currentMontage == null) // { // return; // } // currentMontage.poses.Clear(); // poseController.poseChoice.choices = new List<string>(); //}); SetPoseUIActive(false); }
public PoseController(DollmasterPlugin dm) : base(dm) { poseEnabled = new JSONStorableBool("poseEnabled", true); dm.RegisterBool(poseEnabled); UIDynamicToggle moduleEnableToggle = dm.CreateToggle(poseEnabled); moduleEnableToggle.label = "Enable Pose Change"; moduleEnableToggle.backgroundColor = Color.green; poseChoice = new JSONStorableStringChooser("poseChoice", new List <string>(), "Default", "Pose", (string poseName) => { try { if (currentMontage == null) { return; } JSONClass pose = GetPoseFromName(poseName); if (pose == null) { SuperController.LogError("no pose with id " + poseName); return; } AnimateToPose(pose); } catch (Exception e) { Debug.Log(e); } }); dm.RegisterStringChooser(poseChoice); poseAnimationDuration = new JSONStorableFloat("poseAnimationDuration", 1.2f, 0.01f, 10.0f); dm.RegisterFloat(poseAnimationDuration); dm.CreateSlider(poseAnimationDuration); nextPoseButton = dm.ui.CreateButton("Next Pose", 300, 80); nextPoseButton.transform.Translate(0.415f, -0.1f, 0, Space.Self); nextPoseButton.buttonColor = new Color(0.4f, 0.3f, 0.05f); nextPoseButton.textColor = new Color(1, 1, 1); nextPoseButton.button.onClick.AddListener(() => { if (currentMontage == null || poseChoice.choices.Count <= 1) { return; } int index = poseChoice.choices.IndexOf(poseChoice.val); int nextIndex = index + 1; if (nextIndex >= poseChoice.choices.Count) { nextIndex = 0; } poseChoice.SetVal(poseChoice.choices[nextIndex]); }); nextPoseButton.gameObject.SetActive(false); durationBetweenPoseChange = new JSONStorableFloat("durationBetweenPoseChange", 8.0f, 1.0f, 20.0f, false); dm.RegisterFloat(durationBetweenPoseChange); dm.CreateSlider(durationBetweenPoseChange); holdPose = new JSONStorableBool("holdPose", false); dm.RegisterBool(holdPose); UIDynamicToggle holdPoseToggle = ui.CreateToggle("Hold Pose", 180, 40); holdPose.toggle = holdPoseToggle.toggle; holdPoseToggle.transform.Translate(0.415f, 0.0630f, 0, Space.Self); holdPoseToggle.backgroundColor = new Color(0.2f, 0.2f, 0.2f); holdPoseToggle.labelText.color = new Color(1, 1, 1); dm.CreateSpacer(); }
public ThrustController(DollmasterPlugin dm) : base(dm) { thrustEnabled = new JSONStorableBool("thrustEnabled", true); dm.RegisterBool(thrustEnabled); UIDynamicToggle moduleEnableToggle = dm.CreateToggle(thrustEnabled); moduleEnableToggle.label = "Enable Thrusting"; moduleEnableToggle.backgroundColor = Color.green; thrustAtomChooser = new JSONStorableStringChooser("thrustTarget", GetAnimationPatternNames(), "", "Thrust Control", (string name) => { RestoreOriginalSlider(); ap = null; UISetupState(SuperController.singleton.GetAtomByUid(name)); }); thrustAtomChooser.storeType = JSONStorableParam.StoreType.Full; dm.RegisterStringChooser(thrustAtomChooser); UIDynamicPopup popup = dm.CreatePopup(thrustAtomChooser); popup.popup.onOpenPopupHandlers += () => { thrustAtomChooser.choices = GetAnimationPatternNames(); }; slider = dm.ui.CreateSlider("Thrust Speed", 300, 120); slider.transform.Translate(0, 0.15f, 0, Space.Self); slider.slider.onValueChanged.AddListener((float v) => { if (ap == null) { return; } JSONStorableFloat speedStore = ap.GetFloatJSONParam("speed"); if (speedStore.slider != slider.slider) { AttachCustomSlider(); } }); Image img = slider.GetComponentInChildren <Image>(); img.color = new Color(0.4f, 0.2f, 0.245f, 1.0f); slider.labelText.color = new Color(1, 1, 1); slider.gameObject.SetActive(false); createButton = dm.ui.CreateButton("Generate Animation Pattern or...", 400, 120); createButton.transform.Translate(0, 0.15f, 0, Space.Self); createButton.buttonColor = new Color(0.4f, 0.2f, 0.245f, 1.0f); createButton.textColor = new Color(1, 1, 1); createButton.button.onClick.AddListener(GenerateThrustAtoms); selectButton = dm.ui.CreateButton("Select Animation Pattern To Control", 400, 120); selectButton.transform.Translate(0.52f, 0.15f, 0, Space.Self); selectButton.buttonColor = new Color(0.4f, 0.2f, 0.245f, 1.0f); selectButton.textColor = new Color(1, 1, 1); selectButton.button.onClick.AddListener(() => { SuperController.singleton.SelectModeAtom((atom) => { if (atom == null) { return; } if (atom.GetStorableByID("AnimationPattern") == null) { SuperController.LogError("Select an Animation Pattern"); return; } AnimationPattern ap = atom.GetStorableByID("AnimationPattern") as AnimationPattern; ap.SyncStepNames(); ap.autoSyncStepNamesJSON.SetVal(false); thrustAtomChooser.SetVal(atom.uid); }); }); dm.CreateSpacer(); GenerateThrustAtoms(); }
public TopButtons(DollmasterPlugin dm) : base(dm) { Color accessButtonColor = new Color(0.05f, 0.15f, 0.08f); Color accessTextColor = new Color(0.4f, 0.6f, 0.45f); float xSpacing = 0.22f; UIDynamicButton selectButton = ui.CreateButton("Select Person", 100, 40); selectButton.button.onClick.AddListener(() => { SuperController.singleton.editModeToggle.isOn = true; SuperController.singleton.ShowMainHUD(); SuperController.singleton.ClearSelection(); SuperController.singleton.SelectController(atom.mainController); }); selectButton.transform.Translate(0, 0.3f, 0, Space.Self); UI.ColorButton(selectButton, accessTextColor, accessButtonColor); UIDynamicButton loadLookButton = ui.CreateButton("Change Look", 100, 40); loadLookButton.button.onClick.AddListener(() => { SuperController.singleton.ShowMainHUD(); atom.LoadAppearancePresetDialog(); }); loadLookButton.transform.Translate(xSpacing, 0.3f, 0, Space.Self); UI.ColorButton(loadLookButton, accessTextColor, accessButtonColor); UIDynamicButton toggleDressButton = ui.CreateButton("Dress/Undress", 100, 40); toggleDressButton.transform.Translate(xSpacing * 2, 0.3f, 0, Space.Self); toggleDressButton.button.onClick.AddListener(() => { dm.dressController.ToggleDressed(); }); UI.ColorButton(toggleDressButton, accessTextColor, accessButtonColor); UIDynamicButton exposeDressButton = ui.CreateButton("Expose Dress", 100, 40); exposeDressButton.button.onClick.AddListener(() => { dm.dressController.CycleDressExposed(); }); exposeDressButton.transform.Translate(xSpacing * 3, 0.3f, 0, Space.Self); UI.ColorButton(exposeDressButton, accessTextColor, accessButtonColor); bool minimized = false; UIDynamicButton minimizeUIButton = ui.CreateButton("Minimize UI", 100, 40); minimizeUIButton.transform.Translate(0.1f, -0.25f, 0, Space.Self); UI.ColorButton(minimizeUIButton, Color.white, Color.black); Dictionary <GameObject, bool> priorActive = new Dictionary <GameObject, bool>(); minimizeUIButton.button.onClick.AddListener(() => { minimized = !minimized; Transform t = ui.canvas.transform; for (int i = 0; i < t.childCount; i++) { GameObject child = t.GetChild(i).gameObject; if (minimized) { priorActive[child] = child.activeSelf; child.SetActive(false); } else { child.SetActive(priorActive[child]); } } minimizeUIButton.gameObject.SetActive(true); minimizeUIButton.label = minimized ? "Max UI" : "Minimize UI"; }); }
public void Activate(DollmasterPlugin dm) { MontageController.BeginMontage(dm, montageJSON); }
public ThrustController(DollmasterPlugin dm) : base(dm) { thrustEnabled = new JSONStorableBool("thrustEnabled", true); dm.RegisterBool(thrustEnabled); UIDynamicToggle moduleEnableToggle = dm.CreateToggle(thrustEnabled); moduleEnableToggle.label = "Enable Thrusting"; moduleEnableToggle.backgroundColor = Color.green; thrustAtomChooser = new JSONStorableStringChooser("thrustTarget", GetAnimationPatternNames(), "", "Thrust Control", (string name) => { RestoreOriginalSlider(); ap = null; UISetupState(SuperController.singleton.GetAtomByUid(name)); }); thrustAtomChooser.storeType = JSONStorableParam.StoreType.Full; dm.RegisterStringChooser(thrustAtomChooser); UIDynamicPopup popup = dm.CreatePopup(thrustAtomChooser); popup.popup.onOpenPopupHandlers += () => { thrustAtomChooser.choices = GetAnimationPatternNames(); }; slider = dm.ui.CreateSlider("Thrust Speed", 300, 120); slider.transform.Translate(0, 0.15f, 0, Space.Self); slider.slider.onValueChanged.AddListener((float v) => { if (ap == null) { return; } JSONStorableFloat speedStore = ap.GetFloatJSONParam("speed"); if (speedStore.slider != slider.slider) { AttachCustomSlider(); } }); Image img = slider.GetComponentInChildren <Image>(); img.color = new Color(0.4f, 0.2f, 0.245f, 1.0f); slider.labelText.color = new Color(1, 1, 1); slider.gameObject.SetActive(false); createButton = dm.ui.CreateButton("Generate Animation Pattern or...", 400, 120); createButton.transform.Translate(0, 0.15f, 0, Space.Self); createButton.buttonColor = new Color(0.4f, 0.2f, 0.245f, 1.0f); createButton.textColor = new Color(1, 1, 1); createButton.button.onClick.AddListener(() => { dm.StartCoroutine(CreateAtom("AnimationPattern", "Thrust AP", (apAtom) => { AnimationPattern ap = apAtom.GetStorableByID("AnimationPattern") as AnimationPattern; ap.autoSyncStepNamesJSON.SetVal(false); thrustAtomChooser.SetVal(apAtom.name); if (ap.steps.Length >= 2) { return; } FreeControllerV3 hipControl = atom.GetStorableByID("hipControl") as FreeControllerV3; apAtom.mainController.transform.SetPositionAndRotation(hipControl.transform.position, hipControl.transform.rotation); apAtom.SelectAtomParent(atom); //ap.animatedTransform = hipControl.transform; MoveProducer mp = apAtom.GetStorableByID("AnimatedObject") as MoveProducer; mp.SetReceiverByName(atom.name + ":hipControl"); AnimationStep stepA = ap.CreateStepAtPosition(0); stepA.containingAtom.ClearParentAtom(); stepA.containingAtom.mainController.transform.position = apAtom.mainController.transform.position; stepA.containingAtom.mainController.transform.rotation = apAtom.mainController.transform.rotation; //stepA.containingAtom.SetParentAtom(apAtom.name); AnimationStep stepB = ap.CreateStepAtPosition(1); stepB.containingAtom.ClearParentAtom(); FreeControllerV3 abdomen2Control = atom.GetStorableByID("abdomen2Control") as FreeControllerV3; stepB.containingAtom.mainController.transform.position = abdomen2Control.transform.position; stepB.containingAtom.mainController.transform.rotation = apAtom.mainController.transform.rotation; apAtom.mainController.transform.Translate(0, 0, -0.2f, Space.Self); stepA.containingAtom.mainController.currentPositionState = FreeControllerV3.PositionState.ParentLink; stepA.containingAtom.mainController.currentRotationState = FreeControllerV3.RotationState.ParentLink; Rigidbody rba = SuperController.singleton.RigidbodyNameToRigidbody(apAtom.name + ":control"); stepA.containingAtom.mainController.SelectLinkToRigidbody(rba, FreeControllerV3.SelectLinkState.PositionAndRotation); stepB.containingAtom.mainController.currentPositionState = FreeControllerV3.PositionState.ParentLink; stepB.containingAtom.mainController.currentRotationState = FreeControllerV3.RotationState.ParentLink; Rigidbody rbb = SuperController.singleton.RigidbodyNameToRigidbody(apAtom.name + ":control"); stepB.containingAtom.mainController.SelectLinkToRigidbody(rbb, FreeControllerV3.SelectLinkState.PositionAndRotation); UISetupState(apAtom); ap.SyncStepNames(); }, true)); }); selectButton = dm.ui.CreateButton("Select Animation Pattern To Control", 400, 120); selectButton.transform.Translate(0.52f, 0.15f, 0, Space.Self); selectButton.buttonColor = new Color(0.4f, 0.2f, 0.245f, 1.0f); selectButton.textColor = new Color(1, 1, 1); selectButton.button.onClick.AddListener(() => { SuperController.singleton.SelectModeAtom((atom) => { if (atom == null) { return; } if (atom.GetStorableByID("AnimationPattern") == null) { SuperController.LogError("Select an Animation Pattern"); return; } AnimationPattern ap = atom.GetStorableByID("AnimationPattern") as AnimationPattern; ap.SyncStepNames(); ap.autoSyncStepNamesJSON.SetVal(false); thrustAtomChooser.SetVal(atom.uid); }); }); dm.CreateSpacer(); }