29 lines
1 KiB
C
29 lines
1 KiB
C
|
|
#pragma once
|
||
|
|
#include "Common.h"
|
||
|
|
#include "Python.h"
|
||
|
|
#include "Animation.h"
|
||
|
|
|
||
|
|
// Module-level Easing enum class (created at runtime using Python's IntEnum)
|
||
|
|
// Stored as a module attribute: mcrfpy.Easing
|
||
|
|
|
||
|
|
class PyEasing {
|
||
|
|
public:
|
||
|
|
// Create the Easing enum class and add to module
|
||
|
|
// Returns the enum class (new reference), or NULL on error
|
||
|
|
static PyObject* create_enum_class(PyObject* module);
|
||
|
|
|
||
|
|
// Helper to extract easing function from Python arg
|
||
|
|
// Accepts Easing enum, string (for backwards compatibility), int, or None
|
||
|
|
// Returns 1 on success, 0 on error (with exception set)
|
||
|
|
// If arg is None, sets *out_func to linear and sets *was_none to true
|
||
|
|
static int from_arg(PyObject* arg, EasingFunction* out_func, bool* was_none = nullptr);
|
||
|
|
|
||
|
|
// Convert easing enum value to string name
|
||
|
|
static const char* easing_name(int value);
|
||
|
|
|
||
|
|
// Cached reference to the Easing enum class for fast type checking
|
||
|
|
static PyObject* easing_enum_class;
|
||
|
|
|
||
|
|
// Number of easing functions
|
||
|
|
static const int NUM_EASING_FUNCTIONS = 32;
|
||
|
|
};
|