summaryrefslogtreecommitdiff
path: root/src/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core.c')
-rw-r--r--src/core.c229
1 files changed, 223 insertions, 6 deletions
diff --git a/src/core.c b/src/core.c
index ec650f4..d985701 100644
--- a/src/core.c
+++ b/src/core.c
@@ -1030,16 +1030,16 @@ int lcoreSetShaderValue( lua_State* L ) {
/* t = values index. */
int t = 3, i = 0;
- lua_pushnil( L );
+ lua_pushnil( L );
while ( lua_next( L, t ) != 0 ) {
- if ( lua_isnumber( L, -1 ) ) {
+ if ( lua_isnumber( L, -1 ) ) {
floats[i] = lua_tonumber( L, -1 );
ints[i] = lua_tointeger( L, -1 );
- }
- i++;
- lua_pop( L, 1 );
- }
+ }
+ i++;
+ lua_pop( L, 1 );
+ }
lua_pop( L, 1 );
/* Read values end. */
@@ -1950,6 +1950,223 @@ int lcoreDecodeDataBase64( lua_State* L ) {
}
/*
+## Core - Automation events functionality
+*/
+
+/*
+> eventList = RL.LoadAutomationEventList( string|nil fileName )
+
+Load automation events list from file, nil for empty list, capacity = MAX_AUTOMATION_EVENTS
+
+- Success return AutomationEventList
+*/
+int lcoreLoadAutomationEventList( lua_State* L ) {
+ if ( lua_isstring( L, 1 ) ) {
+ uluaPushAutomationEventList( L, LoadAutomationEventList( lua_tostring( L, 1 ) ) );
+ }
+ else if ( lua_isnil( L, 1 ) ) {
+ uluaPushAutomationEventList( L, LoadAutomationEventList( NULL ) );
+ }
+
+ return 1;
+}
+
+/*
+> RL.UnloadAutomationEventList( AutomationEventList list )
+
+Unload automation events list from file
+*/
+int lcoreUnloadAutomationEventList( lua_State* L ) {
+ AutomationEventList* list = uluaGetAutomationEventList( L, 1 );
+
+ UnloadAutomationEventList( list );
+
+ return 0;
+}
+
+/*
+> success = RL.ExportAutomationEventList( string fileName )
+
+Export automation events list as text file
+
+- Failure return false
+- Success return true
+*/
+int lcoreExportAutomationEventList( lua_State* L ) {
+ AutomationEventList* list = uluaGetAutomationEventList( L, 1 );
+ const char* fileName = luaL_checkstring( L, 2 );
+
+ lua_pushboolean( L, ExportAutomationEventList( *list, fileName ) );
+
+ return 1;
+}
+
+/*
+> RL.SetAutomationEventList( AutomationEventList list )
+
+Set automation event list to record to
+*/
+int lcoreSetAutomationEventList( lua_State* L ) {
+ AutomationEventList* list = uluaGetAutomationEventList( L, 1 );
+
+ SetAutomationEventList( list );
+
+ return 0;
+}
+
+/*
+> RL.SetAutomationEventBaseFrame( int frame )
+
+Set automation event internal base frame to start recording
+*/
+int lcoreSetAutomationEventBaseFrame( lua_State* L ) {
+ int frame = luaL_checkinteger( L, 1 );
+
+ SetAutomationEventBaseFrame( frame );
+
+ return 0;
+}
+
+/*
+> RL.StartAutomationEventRecording()
+
+Start recording automation events (AutomationEventList must be set)
+*/
+int lcoreStartAutomationEventRecording( lua_State* L ) {
+ StartAutomationEventRecording();
+
+ return 0;
+}
+
+/*
+> RL.StopAutomationEventRecording()
+
+Stop recording automation events
+*/
+int lcoreStopAutomationEventRecording( lua_State* L ) {
+
+ StopAutomationEventRecording();
+
+ return 0;
+}
+
+/*
+> RL.PlayAutomationEvent( AutomationEvent event )
+
+Play a recorded automation event
+*/
+int lcorePlayAutomationEvent( lua_State* L ) {
+ AutomationEvent* event = uluaGetAutomationEvent( L, 1 );
+
+ PlayAutomationEvent( *event );
+
+ return 0;
+}
+
+/*
+> capacity = RL.GetAutomationEventListCapacity( AutomationEventList list )
+
+Get automation event list capacity
+
+- Success return int
+*/
+int lcoreGetAutomationEventListCapacity( lua_State* L ) {
+ AutomationEventList* list = uluaGetAutomationEventList( L, 1 );
+
+ lua_pushinteger( L, list->capacity );
+
+ return 1;
+}
+
+/*
+> count = RL.GetAutomationEventListCount( AutomationEventList list )
+
+Get automation event list count
+
+- Success return int
+*/
+int lcoreGetAutomationEventListCount( lua_State* L ) {
+ AutomationEventList* list = uluaGetAutomationEventList( L, 1 );
+
+ lua_pushinteger( L, list->count );
+
+ return 1;
+}
+
+/*
+> event = RL.GetAutomationEvent( AutomationEventList list, int index )
+
+Get automation event from automation event list
+
+- Failure return nil
+- Success return AutomationEvent
+*/
+int lcoreGetAutomationEvent( lua_State* L ) {
+ AutomationEventList* list = uluaGetAutomationEventList( L, 1 );
+ int index = luaL_checkinteger( L, 2 );
+
+ if ( 0 <= index && index < list->count ) {
+ uluaPushAutomationEvent( L, list->events[ index ] );
+ }
+ else {
+ TraceLog( LOG_WARNING, "GetAutomationEvent index %d out of bounds", index );
+ lua_pushnil( L );
+ }
+
+ return 1;
+}
+
+/*
+> frame = RL.GetAutomationEventFrame( AutomationEvent event )
+
+Get automation event frame
+
+- Success return int
+*/
+int lcoreGetAutomationEventFrame( lua_State* L ) {
+ AutomationEvent* event = uluaGetAutomationEvent( L, 1 );
+
+ lua_pushinteger( L, event->frame );
+
+ return 1;
+}
+
+/*
+> type = RL.GetAutomationEventType( AutomationEvent event )
+
+Get automation event type
+
+- Success return int
+*/
+int lcoreGetAutomationEventType( lua_State* L ) {
+ AutomationEvent* event = uluaGetAutomationEvent( L, 1 );
+
+ lua_pushinteger( L, event->type );
+
+ return 1;
+}
+
+/*
+> params = RL.GetAutomationEventParams( AutomationEvent event )
+
+Get automation event params
+
+- Success return int{}
+*/
+int lcoreGetAutomationEventParams( lua_State* L ) {
+ AutomationEvent* event = uluaGetAutomationEvent( L, 1 );
+
+ lua_createtable( L, 4, 0 );
+
+ for ( int i = 0; i < 4; i++ ) {
+ lua_pushnumber( L, event->params[i] );
+ lua_rawseti( L, -2, i + 1 );
+ }
+
+ return 1;
+}
+
+/*
## Core - Input-related functions: keyboard
*/