Rumba C++ SDK
maquina::AnimCurve Class Reference

An animation curve abstraction, can animate any type of value, bool, int, float or other values. More...

#include <AnimCurve.h>

Inheritance diagram for maquina::AnimCurve:
maquina::Value maquina::AnimCurveFloat

Classes

class  Iterator
 
class  Key
 A curve key. More...
 
class  Keys
 A key iteration. More...
 

Public Member Functions

 AnimCurve (const Value &v)
 Cast a Value object in AnimCurve. More...
 
 AnimCurve (const char *key_type)
 Create an empty animation curve where the key value is of type key_type. More...
 
AnimCurve create_empty () const
 Return an empty curve of the same type than this. More...
 
size_t size () const
 Returns the number of keys. More...
 
AnimCurve copy_keys (const gsl::span< const int > &keys) const
 Duplicate a subset of the curve. More...
 
std::vector< int > selected_keys () const
 Return a vector of the selected key indices. More...
 
int key_index (float t) const
 Returns the key at t time or -1 if no such key. More...
 
int previous_key (float t) const
 Returns the key with the biggest but strictly lower than t time or -1 if no such key. More...
 
int next_key (float t) const
 Returns the key with the lowest but strictly higher than t time or -1 if no such key. More...
 
size_t set_value (float frame, const maquina::Value &value=Value::default_value)
 Add a key or replace the existing key at the same frame. More...
 
size_t insert_value (float frame, const maquina::Value &value=Value::default_value, bool before=true)
 
void remove_key (size_t i)
 Remove the i-th key. More...
 
const Key operator[] (size_t i) const
 Get a key. More...
 
Value interpolate (float t, CycleMode pre_cycle_mode, CycleMode post_cycle_mode) const
 This method is used by the curve editor to get a Y value. More...
 
void normalize (bool repeat)
 Normalize the curve once it has been modified to re-apply the tangents modes. More...
 
Iterator begin (bool only_selected=false)
 Begin iterator on keyframes. More...
 
Iterator end ()
 End iterator on keyframes. More...
 
Keys keys (bool only_selected=false)
 Return an iteration on the keys. More...
 
std::optional< Valueclip (float frame_in, float frame_out)
 Clip the curve in the frame range [frame_in, frame_out]. More...
 
Value time_wrap (const gsl::span< const WrapSlice > &wrap_slices, CycleMode pre_cycle_mode, CycleMode post_cycle_mode) const
 Return a copy of the curve 'time wrapped' using the wrap slices. Each slice is taken from the original curve and concatenated into a new curve. Custom keyframes are inserted to ensure accuracy. More...
 
- Public Member Functions inherited from maquina::Value
 Value ()
 
Value duplicate () const
 Duplicate the value. More...
 
bool as_bool () const
 Returns the value as a bool. More...
 
int as_int () const
 Returns the value as an integer. More...
 
float as_float () const
 Returns the value as a float. More...
 
double as_double () const
 Returns the value as a double. More...
 
const std::string & as_string () const
 Returns the value as a string. More...
 
std::wstring as_wstring () const
 Returns the value as a wstring. More...
 
Imath::V2f as_V2f () const
 Returns the value as a V2f. More...
 
Imath::V3f as_V3f () const
 Returns the value as a V3f. More...
 
Imath::V4f as_V4f () const
 Returns the value as a V4f. More...
 
const Imath::V2das_V2d () const
 Returns the value as a V2d. More...
 
const Imath::V3das_V3d () const
 Returns the value as a V3d. More...
 
const Imath::V4das_V4d () const
 Returns the value as a V4d. More...
 
const Imath::V2ias_V2i () const
 Returns the value as a V2i. More...
 
const Imath::V3ias_V3i () const
 Returns the value as a V3i. More...
 
const Imath::V4ias_V4i () const
 Returns the value as a V4i. More...
 
Imath::M44f as_M44f () const
 Returns the value as a M44f. More...
 
const Imath::M44das_M44d () const
 Returns the value as a M44d. More...
 
const Imath::Box3fas_Box3f () const
 Returns the value as a Box3f. More...
 
const Imath::Color4fas_Color4f () const
 Returns the value as a Color4f. More...
 
Imath::Quatf as_Quatf () const
 Returns the value as a Quatf. More...
 
const Imath::Quatdas_Quatd () const
 Returns the value as a Quatd. More...
 
std::shared_ptr< const UserDataas_user_data () const
 Returns the value as a user data. More...
 
StringView type_name () const
 Return the type name of the Value. More...
 
bool has_node_delegate () const
 Check if this value can produces a NodeDelegate. More...
 
std::shared_ptr< NodeDelegatenode_delegate (const std::shared_ptr< NodeDelegate > &parent, const StringView &name) const
 
bool operator== (const Value &o) const
 Compare the two values. More...
 
bool operator!= (const Value &o) const
 
bool is_instance (const char *value_type_name) const
 Check if this type derives from another value type. More...
 
bool is_interpolable () const
 Checks if the value is interpolable. More...
 
Value lerp (const Value &other, double weight) const
 Performs linear interpolation between this value and another value. More...
 
 Value (bool)
 Create a boolean value. More...
 
 Value (int)
 Create an integer value. More...
 
 Value (float)
 Create a float value. More...
 
 Value (double)
 Create a double value. More...
 
 Value (const char *string)
 Create a string value. More...
 
 Value (const wchar_t *string)
 Create a string value. More...
 
 Value (const std::string &string)
 Create a string value. More...
 
 Value (const std::wstring &string)
 Create a wide string value. More...
 
 Value (const Imath::V2f &)
 Create a Imath::V2f value. More...
 
 Value (const Imath::V3f &)
 Create a Imath::V3f value. More...
 
 Value (const Imath::V4f &)
 Create a Imath::V4f value. More...
 
 Value (const Imath::V2d &)
 Create a Imath::V2d value. More...
 
 Value (const Imath::V3d &)
 Create a Imath::V3d value. More...
 
 Value (const Imath::V4d &)
 Create a Imath::V4d value. More...
 
 Value (const Imath::V2i &)
 Create a Imath::V2i value. More...
 
 Value (const Imath::V3i &)
 Create a Imath::V3i value. More...
 
 Value (const Imath::V4i &)
 Create a Imath::V4i value. More...
 
 Value (const Imath::Color4f &)
 Create a Imath::Color4f value. More...
 
 Value (const Imath::M44f &)
 Create a Imath::M44f value. More...
 
 Value (const Imath::M44d &)
 Create a Imath::M44d value. More...
 
 Value (const Imath::Box3f &)
 Create a Imath::Box3f value. More...
 
 Value (const Imath::Quatf &)
 Create a Imath::Quatf value. More...
 
 Value (const Imath::Quatd &)
 Create a Imath::Quatd value. More...
 
 Value (const std::shared_ptr< const UserData > &user_data)
 Create a user data value. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from maquina::Value
static bool validate_type_name (const char *type_name)
 Return true if the name is a valid type name. More...
 
static Value get_default_value (const char *type_name)
 Return a default value for a given type. More...
 
- Static Public Attributes inherited from maquina::Value
static const Value default_value
 The default value. More...
 

Detailed Description

An animation curve abstraction, can animate any type of value, bool, int, float or other values.

Once a curve is modified, it has to be normalized by a call to AnimCurve::normalize() or Channel::set_animation_curve().

Constructor & Destructor Documentation

◆ AnimCurve() [1/2]

maquina::AnimCurve::AnimCurve ( const Value v)

Cast a Value object in AnimCurve.

If v has not the good type, a default value is constructed.

◆ AnimCurve() [2/2]

maquina::AnimCurve::AnimCurve ( const char *  key_type)

Create an empty animation curve where the key value is of type key_type.

Can be "Bool", "Int", "Float" or any other value type. If key_type is "Float", it creates an AnimCurveFloat curve with tangents.

Member Function Documentation

◆ begin()

Iterator maquina::AnimCurve::begin ( bool  only_selected = false)
inline

Begin iterator on keyframes.

◆ clip()

std::optional<Value> maquina::AnimCurve::clip ( float  frame_in,
float  frame_out 
)

Clip the curve in the frame range [frame_in, frame_out].

Values and tangents at the range limits are preserved.

If the intersection between the curve and the range is empty, the returned curve has a single key corresponding to the curve value on the range, and the method returns the value of that key.

If the intersection between the curve and the range is not empty, the method returns nothing. {std::runtime_error,RuntimeError} if the curve has no key.

◆ copy_keys()

AnimCurve maquina::AnimCurve::copy_keys ( const gsl::span< const int > &  keys) const

Duplicate a subset of the curve.

keys are the indices of the keys to include in the returned curve.

◆ create_empty()

AnimCurve maquina::AnimCurve::create_empty ( ) const

Return an empty curve of the same type than this.

◆ end()

Iterator maquina::AnimCurve::end ( )
inline

End iterator on keyframes.

◆ insert_value()

size_t maquina::AnimCurve::insert_value ( float  frame,
const maquina::Value value = Value::default_value,
bool  before = true 
)

Insert a key and return its index. If the key is at the same time than another key, the key is inserted BEFORE the previous keys if before is true, AFTER if before is false.

◆ interpolate()

Value maquina::AnimCurve::interpolate ( float  t,
CycleMode  pre_cycle_mode,
CycleMode  post_cycle_mode 
) const

This method is used by the curve editor to get a Y value.

◆ key_index()

int maquina::AnimCurve::key_index ( float  t) const

Returns the key at t time or -1 if no such key.

◆ keys()

Keys maquina::AnimCurve::keys ( bool  only_selected = false)
inline

Return an iteration on the keys.

Parameters
only_selectedIf true, iterate only on the keyframes selected in the curve editor

◆ next_key()

int maquina::AnimCurve::next_key ( float  t) const

Returns the key with the lowest but strictly higher than t time or -1 if no such key.

◆ normalize()

void maquina::AnimCurve::normalize ( bool  repeat)

Normalize the curve once it has been modified to re-apply the tangents modes.

◆ operator[]()

const Key maquina::AnimCurve::operator[] ( size_t  i) const
inline

Get a key.

◆ previous_key()

int maquina::AnimCurve::previous_key ( float  t) const

Returns the key with the biggest but strictly lower than t time or -1 if no such key.

◆ remove_key()

void maquina::AnimCurve::remove_key ( size_t  i)

Remove the i-th key.

◆ selected_keys()

std::vector<int> maquina::AnimCurve::selected_keys ( ) const

Return a vector of the selected key indices.

◆ set_value()

size_t maquina::AnimCurve::set_value ( float  frame,
const maquina::Value value = Value::default_value 
)

Add a key or replace the existing key at the same frame.

The value is used only for Int, Float and Bool curves

◆ size()

size_t maquina::AnimCurve::size ( ) const

Returns the number of keys.

◆ time_wrap()

Value maquina::AnimCurve::time_wrap ( const gsl::span< const WrapSlice > &  wrap_slices,
CycleMode  pre_cycle_mode,
CycleMode  post_cycle_mode 
) const

Return a copy of the curve 'time wrapped' using the wrap slices. Each slice is taken from the original curve and concatenated into a new curve. Custom keyframes are inserted to ensure accuracy.


The documentation for this class was generated from the following file: