:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/4.3/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/4.3/doc/classes/Curve.xml. .. _class_Curve: Curve ===== **Inherits:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` A mathematical curve. .. rst-class:: classref-introduction-group Description ----------- This resource describes a mathematical curve by defining a set of points and tangents at each point. By default, it ranges between ``0`` and ``1`` on the Y axis and positions points relative to the ``0.5`` Y position. See also :ref:`Gradient` which is designed for color interpolation. See also :ref:`Curve2D` and :ref:`Curve3D`. .. rst-class:: classref-reftable-group Properties ---------- .. table:: :widths: auto +---------------------------+--------------------------------------------------------------+---------+ | :ref:`int` | :ref:`bake_resolution` | ``100`` | +---------------------------+--------------------------------------------------------------+---------+ | :ref:`float` | :ref:`max_value` | ``1.0`` | +---------------------------+--------------------------------------------------------------+---------+ | :ref:`float` | :ref:`min_value` | ``0.0`` | +---------------------------+--------------------------------------------------------------+---------+ | :ref:`int` | :ref:`point_count` | ``0`` | +---------------------------+--------------------------------------------------------------+---------+ .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`add_point`\ (\ position\: :ref:`Vector2`, left_tangent\: :ref:`float` = 0, right_tangent\: :ref:`float` = 0, left_mode\: :ref:`TangentMode` = 0, right_mode\: :ref:`TangentMode` = 0\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`bake`\ (\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clean_dupes`\ (\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear_points`\ (\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`TangentMode` | :ref:`get_point_left_mode`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_point_left_tangent`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`get_point_position`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`TangentMode` | :ref:`get_point_right_mode`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_point_right_tangent`\ (\ index\: :ref:`int`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`remove_point`\ (\ index\: :ref:`int`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`sample`\ (\ offset\: :ref:`float`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`sample_baked`\ (\ offset\: :ref:`float`\ ) |const| | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_left_mode`\ (\ index\: :ref:`int`, mode\: :ref:`TangentMode`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_left_tangent`\ (\ index\: :ref:`int`, tangent\: :ref:`float`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`set_point_offset`\ (\ index\: :ref:`int`, offset\: :ref:`float`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_right_mode`\ (\ index\: :ref:`int`, mode\: :ref:`TangentMode`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_right_tangent`\ (\ index\: :ref:`int`, tangent\: :ref:`float`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_point_value`\ (\ index\: :ref:`int`, y\: :ref:`float`\ ) | +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Signals ------- .. _class_Curve_signal_range_changed: .. rst-class:: classref-signal **range_changed**\ (\ ) :ref:`🔗` Emitted when :ref:`max_value` or :ref:`min_value` is changed. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Enumerations ------------ .. _enum_Curve_TangentMode: .. rst-class:: classref-enumeration enum **TangentMode**: :ref:`🔗` .. _class_Curve_constant_TANGENT_FREE: .. rst-class:: classref-enumeration-constant :ref:`TangentMode` **TANGENT_FREE** = ``0`` The tangent on this side of the point is user-defined. .. _class_Curve_constant_TANGENT_LINEAR: .. rst-class:: classref-enumeration-constant :ref:`TangentMode` **TANGENT_LINEAR** = ``1`` The curve calculates the tangent on this side of the point as the slope halfway towards the adjacent point. .. _class_Curve_constant_TANGENT_MODE_COUNT: .. rst-class:: classref-enumeration-constant :ref:`TangentMode` **TANGENT_MODE_COUNT** = ``2`` The total number of available tangent modes. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Property Descriptions --------------------- .. _class_Curve_property_bake_resolution: .. rst-class:: classref-property :ref:`int` **bake_resolution** = ``100`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_bake_resolution**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_bake_resolution**\ (\ ) The number of points to include in the baked (i.e. cached) curve data. .. rst-class:: classref-item-separator ---- .. _class_Curve_property_max_value: .. rst-class:: classref-property :ref:`float` **max_value** = ``1.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_max_value**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_max_value**\ (\ ) The maximum value the curve can reach. .. rst-class:: classref-item-separator ---- .. _class_Curve_property_min_value: .. rst-class:: classref-property :ref:`float` **min_value** = ``0.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_min_value**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_min_value**\ (\ ) The minimum value the curve can reach. .. rst-class:: classref-item-separator ---- .. _class_Curve_property_point_count: .. rst-class:: classref-property :ref:`int` **point_count** = ``0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_point_count**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_point_count**\ (\ ) The number of points describing the curve. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_Curve_method_add_point: .. rst-class:: classref-method :ref:`int` **add_point**\ (\ position\: :ref:`Vector2`, left_tangent\: :ref:`float` = 0, right_tangent\: :ref:`float` = 0, left_mode\: :ref:`TangentMode` = 0, right_mode\: :ref:`TangentMode` = 0\ ) :ref:`🔗` Adds a point to the curve. For each side, if the ``*_mode`` is :ref:`TANGENT_LINEAR`, the ``*_tangent`` angle (in degrees) uses the slope of the curve halfway to the adjacent point. Allows custom assignments to the ``*_tangent`` angle if ``*_mode`` is set to :ref:`TANGENT_FREE`. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_bake: .. rst-class:: classref-method |void| **bake**\ (\ ) :ref:`🔗` Recomputes the baked cache of points for the curve. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_clean_dupes: .. rst-class:: classref-method |void| **clean_dupes**\ (\ ) :ref:`🔗` Removes duplicate points, i.e. points that are less than 0.00001 units (engine epsilon value) away from their neighbor on the curve. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_clear_points: .. rst-class:: classref-method |void| **clear_points**\ (\ ) :ref:`🔗` Removes all points from the curve. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_left_mode: .. rst-class:: classref-method :ref:`TangentMode` **get_point_left_mode**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` Returns the left :ref:`TangentMode` for the point at ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_left_tangent: .. rst-class:: classref-method :ref:`float` **get_point_left_tangent**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` Returns the left tangent angle (in degrees) for the point at ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_position: .. rst-class:: classref-method :ref:`Vector2` **get_point_position**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` Returns the curve coordinates for the point at ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_right_mode: .. rst-class:: classref-method :ref:`TangentMode` **get_point_right_mode**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` Returns the right :ref:`TangentMode` for the point at ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_get_point_right_tangent: .. rst-class:: classref-method :ref:`float` **get_point_right_tangent**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` Returns the right tangent angle (in degrees) for the point at ``index``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_remove_point: .. rst-class:: classref-method |void| **remove_point**\ (\ index\: :ref:`int`\ ) :ref:`🔗` Removes the point at ``index`` from the curve. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_sample: .. rst-class:: classref-method :ref:`float` **sample**\ (\ offset\: :ref:`float`\ ) |const| :ref:`🔗` Returns the Y value for the point that would exist at the X position ``offset`` along the curve. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_sample_baked: .. rst-class:: classref-method :ref:`float` **sample_baked**\ (\ offset\: :ref:`float`\ ) |const| :ref:`🔗` Returns the Y value for the point that would exist at the X position ``offset`` along the curve using the baked cache. Bakes the curve's points if not already baked. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_left_mode: .. rst-class:: classref-method |void| **set_point_left_mode**\ (\ index\: :ref:`int`, mode\: :ref:`TangentMode`\ ) :ref:`🔗` Sets the left :ref:`TangentMode` for the point at ``index`` to ``mode``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_left_tangent: .. rst-class:: classref-method |void| **set_point_left_tangent**\ (\ index\: :ref:`int`, tangent\: :ref:`float`\ ) :ref:`🔗` Sets the left tangent angle for the point at ``index`` to ``tangent``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_offset: .. rst-class:: classref-method :ref:`int` **set_point_offset**\ (\ index\: :ref:`int`, offset\: :ref:`float`\ ) :ref:`🔗` Sets the offset from ``0.5``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_right_mode: .. rst-class:: classref-method |void| **set_point_right_mode**\ (\ index\: :ref:`int`, mode\: :ref:`TangentMode`\ ) :ref:`🔗` Sets the right :ref:`TangentMode` for the point at ``index`` to ``mode``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_right_tangent: .. rst-class:: classref-method |void| **set_point_right_tangent**\ (\ index\: :ref:`int`, tangent\: :ref:`float`\ ) :ref:`🔗` Sets the right tangent angle for the point at ``index`` to ``tangent``. .. rst-class:: classref-item-separator ---- .. _class_Curve_method_set_point_value: .. rst-class:: classref-method |void| **set_point_value**\ (\ index\: :ref:`int`, y\: :ref:`float`\ ) :ref:`🔗` Assigns the vertical position ``y`` to the point at ``index``. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` .. |void| replace:: :abbr:`void (No return value.)`