API & Extension Review - PilotLightTech/pilotlight GitHub Wiki
Table of Contents
Status
Status Legend
The status symbols found below will be used throughout this document, but I will further explain them here.
Symbol | Description | Notes |
---|---|---|
✔️ | 1.0 | API is stable (will not be broken) but can be added to |
🟢 | Review Needed | Candidate for 1.0. Just need more eyes on the API |
🟡 | Beta | Most of the API is stable but there are known changes needed |
🔴 | Active Development | API is under active development and subject to frequent changes |
:memo: | Documentation Needed | This doesn't hold up 1.0 |
:traffic_light: | Tests Needed | This doesn't hold up 1.0 |
Core
The Core of Pilot Light is very small and entirely contained in the src directory. The Core APIs are found in the pl.h header file and are required by any Pilot Light application. The current status of these APIs can be found in the table below:
API | Status | Description | |
---|---|---|---|
Base | platform agnostic systems | ||
API Registry | ✔️ :memo: :traffic_light: | ||
Data Registry | ✔️ :memo: :traffic_light: | ||
Extension Registry | ✔️ :memo: :traffic_light: | ||
IO | ✔️ :memo: :traffic_light: | keyboard + mouse + event input/output |
Extensions
If some functionality can be an extension, then it should be. Most of the real work is put into the extensions which are found in the extensions directory. The Standard extensions are those included directly in the Pilot Light code base. The current status of the APIs provided by these extensions can be found in the table below:
API | Status | File | Description |
---|---|---|---|
Log | ✔️ :memo: :traffic_light: | pl_log_ext.h | simple logger |
Profile | ✔️ :memo: :traffic_light: | pl_profile_ext.h | simple profiler |
File | ✔️ :memo: :traffic_light: | pl_file_ext.h | simple binary file API |
Library | ✔️ :memo: :traffic_light: | pl_library_ext.h | shared library loading |
Window | ✔️ :memo: :traffic_light: | pl_window_ext.h | simple windowing |
Network | ✔️ :memo: :traffic_light: | pl_network_ext.h | UDP/TCP API |
Threads | ✔️ :memo: :traffic_light: | pl_threads_ext.h | basic thread & synchronization primitives |
Atomics | ✔️ :memo: :traffic_light: | pl_atomics_ext.h | basic atomic primitives |
Virtual Memory | ✔️ :memo: :traffic_light: | pl_virtual_memory_ext.h | virtual memory access |
String Intern | ✔️ :memo: :traffic_light: | pl_string_intern_ext.h | string interning |
Image | ✔️ :memo: :traffic_light: | pl_image_ext.h | image loading |
Stats | ✔️ :memo: :traffic_light: | pl_stats_ext.h | statistics |
Rect Pack | ✔️ :memo: :traffic_light: | pl_rect_pack_ext.h | rectangle packing |
Job | ✔️ :memo: :traffic_light: | pl_job_ext.h | basic job system |
GPU Allocators | ✔️ :memo: :traffic_light: | pl_gpu_allocators_ext.h | GPU allocators |
Shader | ✔️ :memo: :traffic_light: | pl_shader_ext.h | shader compiling |
Draw | ✔️ :memo: :traffic_light: | pl_draw_ext.h | 2D/3D drawing |
Console | ✔️ :memo: :traffic_light: | pl_console_ext.h | |
Screen Log | ✔️ :memo: :traffic_light: | pl_screen_log_ext.h | |
UI | ✔️ :memo: :traffic_light: | pl_ui_ext.h | debug UI |
Profile | ✔️ :memo: :traffic_light: | pl_profile_ext.h | profiler |
Graphics | ✔️ :memo: :traffic_light: | pl_graphics_ext.h | graphics API abstraction over Vulkan & Metal 2.0 |
Draw Backend | ✔️ :memo: | pl_draw_backend_ext.h | draw backend using pl_graphics_ext.h |
Tools | ✔️ :memo: | pl_tools_ext.h | |
BVH | 🟡 :memo: :traffic_light: | pl_bvh_ext.h | |
Collision | 🟡 :memo: :traffic_light: | pl_collision_ext.h | |
Physics | 🟡 :memo: :traffic_light: | pl_physics_ext.h | |
Gizmo | 🟡 :memo: | pl_gizmo_ext.h | |
ECS | 🟡 :memo: :traffic_light: | pl_ecs_ext.h | |
ECS Tools | 🟡 :memo: | pl_ecs_tools_ext.h | |
Model Loader | 🟡 :memo: :traffic_light: | pl_model_loader_ext.h | model loaders |
Resource Manager | 🟡 :memo: :traffic_light: | pl_resource_ext.h | resource manager |
Renderer | 🔴 :memo: :traffic_light: | pl_renderer_ext.h | reference renderer |
Libraries
The Libraries are referring to the STB style libraries found in the libs directory. These are completely standalone libraries. The status of this can be seen below:
Library | Status | File | Description |
---|---|---|---|
Data Structures | ✔️ :traffic_light: | pl_ds.h | minimal data structures |
JSON | ✔️ :traffic_light: | pl_json.h | JSON parser |
Log | ✔️ :traffic_light: | pl_log.h | logger |
Math | ✔️ :traffic_light: | pl_math.h | math |
Memory | ✔️ :traffic_light: | pl_memory.h | memory allocators |
Profiler | ✔️ :traffic_light: | pl_profile.h | profiler |
STL | ✔️ :traffic_light: | pl_stl.h | STL File parser |
String | ✔️ :traffic_light: | pl_string.h | string utilities |
Testing | ✔️ | pl_test.h | minimal testing library |