public void OnTimelineTimeChanged(JSONStorable storable) { if (_ignoreVamTimelineAnimationFrameUpdated) { return; } _ignoreVamTimelineAnimationFrameUpdated = true; try { var proxy = GetOrDispose(_selectedLink); if (proxy == null || proxy.storable != storable) { return; } var animationName = proxy.animation.val; var isPlaying = proxy.isPlaying.val; var time = proxy.time.val; } finally { _ignoreVamTimelineAnimationFrameUpdated = false; } }
public ExpressionController(DollmasterPlugin dm) : base(dm) { expressionsEnabled = new JSONStorableBool("expressionsEnabled", true); dm.RegisterBool(expressionsEnabled); UIDynamicToggle moduleEnableToggle = dm.CreateToggle(expressionsEnabled); moduleEnableToggle.label = "Enable Expressions + Voice"; moduleEnableToggle.backgroundColor = Color.green; JSONStorable geometry = atom.GetStorableByID("geometry"); DAZCharacterSelector character = geometry as DAZCharacterSelector; morphControl = character.morphsControlUI; mouthOpenMorph = morphControl.GetMorphByDisplayName("Mouth Open Wide"); tongueRaiseMorph = morphControl.GetMorphByDisplayName("Tongue Raise-Lower"); interpolationSpeed = new JSONStorableFloat("expression speed", 8f, 0.1f, 20.0f, true); dm.RegisterFloat(interpolationSpeed); dm.CreateSlider(interpolationSpeed); upperJaw = atom.GetStorableByID("upperJaw") as DAZBone; lowerJaw = atom.GetStorableByID("lowerJaw") as DAZBone; // Hack to fix bad tongue morph values morphControl.GetMorphByDisplayName("Tongue In-Out").startValue = 1.0f; dm.CreateSpacer(); }
public GlobalCommands(JSONStorable owner, Atom containingAtom, ISelectionHistoryManager selectionHistoryManager, RemoteCommandsManager remoteCommandsManager) { _owner = owner; _containingAtom = containingAtom; _selectionHistoryManager = selectionHistoryManager; _remoteCommandsManager = remoteCommandsManager; }
private void TryRegister(JSONStorable storable) { var bindings = new List <object>(); storable.SendMessage("OnBindingsListRequested", bindings, SendMessageOptions.DontRequireReceiver); if (bindings.Count > 0) { var actions = new List <JSONStorableAction>(); var floats = new List <JSONStorableFloat>(); foreach (var binding in bindings) { if (!(TryAdd(actions, binding) || TryAdd(floats, binding))) { SuperController.LogError($"{nameof(Sender)}: Received unknown binding type {binding.GetType()} from {storable.name} in atom {storable.containingAtom?.name ?? "(no containing atom)"}."); } } _receivers.Add(new Receiver { storable = storable, actions = actions, floats = floats }); SuperController.LogMessage($"{nameof(Sender)}: Registered {actions.Count + floats.Count} bindings"); } }
public FloatParamAnimationTarget(JSONStorable storable, JSONStorableFloat floatParam) : this(storable.containingAtom, storable.storeId, floatParam.name) { this.storable = storable; this.floatParam = floatParam; _available = true; }
public Receiver(Breathe script, List <string> atoms, int index, bool rightSide) { this.index = index; script.CreateSpacer(rightSide); vartrigChooser = new JSONStorableStringChooser("receiver" + index, atoms, "", "Variable Trigger " + index); vartrigChooser.setCallbackFunction += (string atomId) => { Atom atom = script.GetAtomById(atomId); JSONStorable storable = (atom != null) ? storable = atom.GetStorableByID("Trigger") : null; vartrig = (storable != null) ? storable.GetFloatJSONParam("value") : null; }; script.CreateScrollablePopup(vartrigChooser, rightSide); script.RegisterStringChooser(vartrigChooser); List <string> modes = new List <string>() { "Out+In", "OutHold", "InHold", "OutInSmooth", "OutSmooth", "InSmooth" }; blendModeChooser = new JSONStorableStringChooser("mode" + index, modes, modes[blendMode], "Mode " + index); blendModeChooser.setCallbackFunction += (string modeName) => { blendMode = modes.FindIndex((string entry) => { return(entry == modeName); }); }; script.CreateScrollablePopup(blendModeChooser, rightSide); script.RegisterStringChooser(blendModeChooser); offsetStart = script.SetupSlider("Time Offset Start " + index, 0.0f, -0.5f, 0.5f, rightSide); offsetEnd = script.SetupSlider("Time Offset End " + index, 0.0f, -0.5f, 2.0f, rightSide); power = script.SetupSlider("Power " + index, 1.0f, 0.0f, 1.0f, rightSide); }
public HeadController(DollmasterPlugin dm) : base(dm) { headControlEnabled = new JSONStorableBool("headControlEnabled", true); dm.RegisterBool(headControlEnabled); UIDynamicToggle moduleEnableToggle = dm.CreateToggle(headControlEnabled); moduleEnableToggle.label = "Enable Head Gaze"; moduleEnableToggle.backgroundColor = Color.green; durationBetweenLookChange = new JSONStorableFloat("duration between look at toggle", 8, 1, 30, false); dm.RegisterFloat(durationBetweenLookChange); dm.CreateSlider(durationBetweenLookChange); headTurnSpeed = new JSONStorableFloat("headTurnSpeed", 2.5f, 0.01f, 20.0f); dm.RegisterFloat(headTurnSpeed); dm.CreateSlider(headTurnSpeed); headControl = atom.GetStorableByID("headControl") as FreeControllerV3; chestControl = atom.GetStorableByID("chestControl") as FreeControllerV3; neckBone = atom.GetStorableByID("neck") as DAZBone; alwaysLookAtMe = new JSONStorableBool("alwaysLookAtMe", false); dm.RegisterBool(alwaysLookAtMe); UIDynamicToggle forceLookToggle = ui.CreateToggle("Hold Gaze", 180, 40); alwaysLookAtMe.toggle = forceLookToggle.toggle; forceLookToggle.transform.Translate(0.415f, 0.01f, 0, Space.Self); forceLookToggle.backgroundColor = new Color(0.2f, 0.2f, 0.2f); forceLookToggle.labelText.color = new Color(1, 1, 1); eyesStorable = atom.GetStorableByID("Eyes"); dm.CreateSpacer(true); }
public void TweenTransform(Pose from, Pose to, float alpha, bool easing = false) { alpha = Mathf.Clamp01(alpha); if (easing) { alpha = CubicEaseInOut(alpha); } Transform personRoot = atom.mainController.transform; from.transforms.Keys.ToList().ForEach(id => { if (from.transforms.ContainsKey(id) == false) { return; } if (to.transforms.ContainsKey(id) == false) { return; } PoseTransform fromT = from.transforms[id]; PoseTransform toT = to.transforms[id]; if (fromT == null || toT == null) { return; } JSONStorable storable = atom.GetStorableByID(id); storable.transform.localPosition = Vector3.Lerp(fromT.localPosition, toT.localPosition, alpha); storable.transform.localRotation = Quaternion.Lerp(fromT.localRotation, toT.localRotation, alpha); }); }
protected void FixedUpdate() { if (toggles["Play"].toggle.isOn) { JSONStorable geometry = containingAtom.GetStorableByID("geometry"); DAZCharacterSelector character = geometry as DAZCharacterSelector; GenerateDAZMorphsControlUI morphControl = character.morphsControlUI; Dictionary <string, UIDynamicToggle> togglesOn = toggles.Where(t => t.Value.toggle.isOn).ToDictionary(p => p.Key, p => p.Value); // morph progressively every morphs to their new values foreach (KeyValuePair <string, UIDynamicToggle> entry in togglesOn) { string name = entry.Key; if (name != "Play") { DAZMorph morph = morphControl.GetMorphByDisplayName(name); if (morph.animatable == false) { float valeur = Mathf.Lerp(CurrentMorphsValues[name], newMorphValues[name], Time.deltaTime * animLengthSlider.val * masterSpeedSlider.val); CurrentMorphsValues[name] = morph.morphValue = valeur; } } } } }
public override IEnumerable <string> GetParameterNames(JSONStorable s) { foreach (var n in s.GetUrlParamNames()) { yield return(n); } }
public CommandInvokerBase(JSONStorable storable, string ns, string localName) { this.storable = storable; this.ns = ns; this.localName = localName; this.commandName = $"{ns}.{localName}"; }
GenerateDAZMorphsControlUI returnMorphs() { JSONStorable geometry = containingAtom.GetStorableByID("geometry"); DAZCharacterSelector character = geometry as DAZCharacterSelector; return(character.morphsControlUI); }
public static void ZeroPoseMorphs(Atom atom) { JSONStorable geometry = atom.GetStorableByID("geometry"); if (geometry == null) { return; } DAZCharacterSelector character = geometry as DAZCharacterSelector; var morphControl = character.morphsControlUI; morphControl.GetMorphDisplayNames().ToList().ForEach(name => { DAZMorph morph = morphControl.GetMorphByDisplayName(name); if (morph == null) { return; } if (morph.region == null) { return; } if (morph.isPoseControl || morph.region.Contains("Expression")) { morph.SetValue(morph.startValue); } }); }
public PluginStringChooserChange(JSONStorable plugin, string key, int incrementBy) { _atomUid = plugin.containingAtom.uid; _pluginName = plugin.name; _key = key; _incrementBy = incrementBy; }
IEnumerator CreateAssetAtom(string uniqueAtomName, string pathToAsset, string prefabName, string nameOfGameObjectToFind, AtomCreatedEvent OnAtomCreated) { yield return(new WaitForSeconds(0.5f)); Atom createdAtom = GetAtomById(uniqueAtomName); if (createdAtom == null) { SuperController.singleton.StartCoroutine(SuperController.singleton.AddAtomByType("CustomUnityAsset", uniqueAtomName, true)); yield return(new WaitWhile(() => GetAtomById(uniqueAtomName) == null)); createdAtom = GetAtomById(uniqueAtomName); } JSONStorable storable = createdAtom.GetStorableByID("asset"); storable.SetUrlParamValue("assetUrl", pathToAsset); storable.SetStringChooserParamValue("assetName", prefabName); yield return(new WaitWhile(() => GameObject.Find(nameOfGameObjectToFind) == null)); if (OnAtomCreated != null) { OnAtomCreated(createdAtom); } }
public override void Init() { try { if (containingAtom.type != "Person") { SuperController.LogError($"Requires atom of type person, instead selected: {containingAtom.type}"); return; } JSONStorable geometry = containingAtom.GetStorableByID("geometry"); DAZCharacterSelector dcs = geometry as DAZCharacterSelector; GenerateDAZMorphsControlUI morphUI = dcs.morphsControlUI; if (morphUI != null) { eyesClosed = morphUI.GetMorphByDisplayName("Eyes Closed"); } JSONStorable eyelids = containingAtom.GetStorableByID("EyelidControl"); autoBlink = eyelids.GetBoolJSONParam("blinkEnabled"); } catch (System.Exception e) { SuperController.LogError("Exception caught: " + e); } }
protected void UpdateRandomParams() { JSONStorable geometry = containingAtom.GetStorableByID("geometry"); DAZCharacterSelector character = geometry as DAZCharacterSelector; GenerateDAZMorphsControlUI morphControl = character.morphsControlUI; // define the random values to switch to morphControl.GetMorphDisplayNames().ForEach((name) => { DAZMorph morph = morphControl.GetMorphByDisplayName(name); if (toggles.ContainsKey(name) == false) { return; } if (toggles[name].toggle.isOn) { if (morph.animatable == false) { float valeur = UnityEngine.Random.Range(minSlider.val, maxSlider.val) * multiSlider.val; newMorphValues[name] = valeur; } } }); }
public PluginBoolSet(JSONStorable plugin, string key, bool value) { _atomUid = plugin.containingAtom.name; _pluginName = plugin.name; _key = key; _value = value; }
protected void SyncReceiver(string receiverID) { List <string> receiverTargetChoices = new List <string>(); receiverTargetChoices.Add("None"); if (receivingAtom != null && receiverID != null) { receiver = receivingAtom.GetStorableByID(receiverID); if (receiver != null) { foreach (string actionParams in receiver.GetActionNames()) { receiverTargetChoices.Add(actionParams); } } else if (receiverID != "None") { // some storables can be late loaded, like skin, clothing, hair, etc so must keep track of missing receiver //Debug.Log("Missing receiver " + receiverID); _missingReceiverStoreId = receiverID; } } else { receiver = null; } receiverTargetJSON.choices = receiverTargetChoices; receiverTargetJSON.val = "None"; }
public void SetStorable(string id) { if (atom_ == null || string.IsNullOrEmpty(id)) { return; } var s = atom_.GetStorableByID(id); if (s == null) { Synergy.LogError( $"storable id '{id}' not found in atom '{atom_.uid}'"); return; } storable_ = s; if (Parameter != null) { if (!SetParameterImpl(parameter_.Name)) { Parameter = null; } } }
private JSONClass GetPersonJson() { JSONClass json = new JSONClass { ["storables"] = new JSONArray() }; JSONStorable control = containingAtom.GetStorableByID("control"); json["storables"].Add(control.GetJSON()); foreach (string id in animationStorableIds) { JSONClass controlJson = containingAtom.GetStorableByID(animationStorableIdToControlId(id)).GetJSON(); JSONClass animationJson = containingAtom.GetStorableByID(id).GetJSON(); if (animationJson["steps"].AsArray.Count > 0) { json["storables"].Add(animationJson); //JSONClass animationStepJson = (animationJson["steps"].AsArray)[0].AsObject; //modifyControlJsonForSave(controlJson, animationStepJson); } //else //{ // modifyControlJsonForSave(controlJson, null); //} json["storables"].Add(controlJson); } return(json); }
private void InitializeMorphs() { var atom = containingAtom; JSONStorable geometry = atom.GetStorableByID("geometry"); if (geometry == null) { throw new InvalidOperationException($"Cannot get morphs control for this atom: {atom.uid}"); } DAZCharacterSelector dcs = geometry as DAZCharacterSelector; if (dcs == null) { throw new InvalidOperationException($"Cannot get morphs control for this atom: {atom.uid}"); } morphsControl = dcs.morphsControlUI; foreach (var item in vibrationStrengths) { var morph = morphsControl.GetMorphByDisplayName(item.Key); if (morph != null) { previousMorphChange[item.Key] = 0.0f; } } }
protected void SyncReceiver(string receiverID) { List <string> receiverTargetChoices = new List <string>(); receiverTargetChoices.Add("None"); if (receivingAtom != null && receiverID != null) { receiver = receivingAtom.GetStorableByID(receiverID); if (receiver != null) { foreach (string floatParam in receiver.GetFloatParamNames()) { receiverTargetChoices.Add(floatParam); } } else if (receiverID != "None") { _missingReceiverStoreId = receiverID; } } else { receiver = null; } receiverTargetJSON.choices = receiverTargetChoices; receiverTargetJSON.val = "None"; }
public PluginFloatChange(JSONStorable plugin, string key, float amount) { _atomUid = plugin.containingAtom.uid; _pluginName = plugin.name; _key = key; _amount = amount; }
public FloatParamAnimationTarget Add(JSONStorable storable, JSONStorableFloat jsf) { if (targetFloatParams.Any(t => t.storableId == storable.storeId && t.floatParamName == jsf.name)) { return(null); } return(Add(new FloatParamAnimationTarget(storable, jsf))); }
public void SetupDollControl(Atom atom) { meterTransform = containingAtom.GetComponentsInChildren <Transform>().ToList().First((s) => s.name == "O****m Meter"); JSONStorable ometerStorable = atom.GetStorableByID(atom.GetStorableIDs().ToList().First((s) => s.Contains("OMeter"))); intensityStorable = ometerStorable.GetFloatJSONParam("<3"); }
public void OnActionsProviderDestroyed(JSONStorable storable) { if (!_valid) { return; } _remoteCommandsManager.Remove(storable); }
public void OnTimelineAnimationReady(JSONStorable storable) { if (ReferenceEquals(storable, _plugin) || _peers.Contains(storable)) { return; } _peers.Add(storable); }
public void OnActionsProviderAvailable(JSONStorable storable) { if (!_valid) { return; } _remoteCommandsManager.TryRegister(storable); }
public FloatParamAnimationTarget(JSONStorable storable, JSONStorableFloat floatParam) { storableId = storable.storeId; this.storable = storable; floatParamName = floatParam.name; this.floatParam = floatParam; _available = true; }