public ActionFloatProgression Clone()
    {
        ActionFloatProgression float_progression = new ActionFloatProgression(0);

        float_progression.m_progression    = m_progression;
        float_progression.m_ease_type      = m_ease_type;
        float_progression.m_from           = m_from;
        float_progression.m_to             = m_to;
        float_progression.m_to_to          = m_to_to;
        float_progression.m_to_to_bool     = m_to_to_bool;
        float_progression.m_unique_randoms = m_unique_randoms;
        float_progression.m_override_animate_per_option = m_override_animate_per_option;
        float_progression.m_animate_per = m_animate_per;

        return(float_progression);
    }
    public ActionFloatProgression Clone()
    {
        ActionFloatProgression float_progression = new ActionFloatProgression(0);

        float_progression.m_progression = m_progression;
        float_progression.m_ease_type = m_ease_type;
        float_progression.m_from = m_from;
        float_progression.m_to = m_to;
        float_progression.m_to_to = m_to_to;
        float_progression.m_to_to_bool = m_to_to_bool;
        float_progression.m_unique_randoms = m_unique_randoms;
        float_progression.m_override_animate_per_option = m_override_animate_per_option;
        float_progression.m_animate_per = m_animate_per;

        return float_progression;
    }
    public float DrawFloatEditorGUI(ActionFloatProgression float_prog, GUIContent label, Rect position, bool offset_legal, bool unique_random_legal = false, bool bold_label = true)
    {
        float x_offset = position.x + ACTION_INDENT_LEVEL_1;
        float y_offset = DrawProgressionEditorHeader(float_prog, label, position, offset_legal, unique_random_legal, bold_label);

        float_prog.m_from = EditorGUI.FloatField(new Rect(x_offset, y_offset, VECTOR_3_WIDTH, LINE_HEIGHT), float_prog.m_progression == ValueProgression.Constant ? "Value" : "Value From", float_prog.m_from);
        y_offset += LINE_HEIGHT;

        if(float_prog.m_progression != ValueProgression.Constant)
        {
            float_prog.m_to = EditorGUI.FloatField(new Rect(x_offset, y_offset, VECTOR_3_WIDTH, LINE_HEIGHT), "Value To", float_prog.m_to);
            y_offset += LINE_HEIGHT;

            if(float_prog.m_progression == ValueProgression.Eased && float_prog.m_to_to_bool)
            {
                float_prog.m_to_to = EditorGUI.FloatField(new Rect(x_offset, y_offset, VECTOR_3_WIDTH, LINE_HEIGHT), "Value Then", float_prog.m_to_to);
                y_offset += LINE_HEIGHT;
            }
        }

        return (y_offset) - position.y;
    }