Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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;
 }
Esempio n. 4
0
    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");
        }
    }
Esempio n. 5
0
 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);
            }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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;
                        }
                    }
                }
            }
        }
Esempio n. 10
0
 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}";
 }
Esempio n. 12
0
        GenerateDAZMorphsControlUI returnMorphs()
        {
            JSONStorable         geometry  = containingAtom.GetStorableByID("geometry");
            DAZCharacterSelector character = geometry as DAZCharacterSelector;

            return(character.morphsControlUI);
        }
Esempio n. 13
0
        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);
                }
            });
        }
Esempio n. 14
0
 public PluginStringChooserChange(JSONStorable plugin, string key, int incrementBy)
 {
     _atomUid     = plugin.containingAtom.uid;
     _pluginName  = plugin.name;
     _key         = key;
     _incrementBy = incrementBy;
 }
Esempio n. 15
0
        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);
            }
        }
Esempio n. 16
0
        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);
            }
        }
Esempio n. 17
0
        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;
                    }
                }
            });
        }
Esempio n. 18
0
 public PluginBoolSet(JSONStorable plugin, string key, bool value)
 {
     _atomUid    = plugin.containingAtom.name;
     _pluginName = plugin.name;
     _key        = key;
     _value      = value;
 }
Esempio n. 19
0
        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";
        }
Esempio n. 20
0
        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;
                }
            }
        }
Esempio n. 21
0
        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);
        }
Esempio n. 22
0
        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";
        }
Esempio n. 24
0
 public PluginFloatChange(JSONStorable plugin, string key, float amount)
 {
     _atomUid    = plugin.containingAtom.uid;
     _pluginName = plugin.name;
     _key        = key;
     _amount     = amount;
 }
Esempio n. 25
0
 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)));
 }
Esempio n. 26
0
        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");
        }
Esempio n. 27
0
 public void OnActionsProviderDestroyed(JSONStorable storable)
 {
     if (!_valid)
     {
         return;
     }
     _remoteCommandsManager.Remove(storable);
 }
Esempio n. 28
0
 public void OnTimelineAnimationReady(JSONStorable storable)
 {
     if (ReferenceEquals(storable, _plugin) || _peers.Contains(storable))
     {
         return;
     }
     _peers.Add(storable);
 }
Esempio n. 29
0
 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;
 }