qField?.RegisterValueChangedCallback(ev =>
{
    if (rChanged)
    {
        Debug.Log("Avoided changing Q.");
        rChanged = false;
        return;
    }

    qChanged = true;

    int newS = -q.intValue - r.intValue;
    Debug.Log($"New S is: {newS}. q = {-q.intValue} | r = {-r.intValue}");
    s.intValue = newS;
    property.serializedObject.ApplyModifiedProperties();
    property.serializedObject.Update();
});
rField?.RegisterValueChangedCallback(ev =>
{
    if (sChanged)
    {
        Debug.Log("Avoided changing R.");
        sChanged = false;
        return;
    }

    rChanged = true;

    int newQ = -r.intValue - s.intValue;
    Debug.Log($"New Q is: {newQ}. r = {-r.intValue} | s = {-s.intValue}");
    q.intValue = newQ;
    property.serializedObject.ApplyModifiedProperties();
    property.serializedObject.Update();
});
sField?.RegisterValueChangedCallback(ev =>
{
    if (qChanged)
    {
        Debug.Log("Avoided changing S.");
        qChanged = false;
        return;
    }

    sChanged = true;

    int newR = -s.intValue - q.intValue;
    Debug.Log($"New R is: {newR}. s = {-s.intValue} | q = {-q.intValue}");
    r.intValue = newR;
    property.serializedObject.ApplyModifiedProperties();
    property.serializedObject.Update();
});