Adds EVENGINE_ANDROID_TEST_APP build mode: the unit_test sources are
compiled into libmain.so (SDL entry) and packaged by the existing Gradle
APK along with the test assets, so the full zeroerr suite can run on a
device via adb logcat.
- test/main.cpp: Android runner with LogcatBuf (cout/cerr -> logcat),
chdir to <files>/evengine_test, SDL_Init; keeps SDL_main symbol unmangled.
- test/PathBesideSource.h: shared pathBesideThisSource helper that maps
__FILE__ to the on-device unpacked tree on Android.
- EVTestActivity: unpacks assets/test + assets/examples to internal
storage and passes an optional --testcase filter from an intent extra.
- test/CMakeLists.txt: builds `main` instead of unit_test on Android,
excludes desktop-only devtools tests, links Android system libs.
- Makefile: build/android-debug-test, sync/android-test-assets,
run/android-test-debug, log/android-test targets.
- Gradle wrapper bumped to 8.5 for Java 21 compatibility.
Windows/Linux CI has no playback device; force ALSOFT_DRIVERS=null and
skip audio cases gracefully when alcOpenDevice still fails.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Added support for soft hot-reloading of scripts and assets in the engine, allowing for dynamic updates without restarting.
- Introduced new functions in the load.nut script to track and reload modified scripts and assets.
- Enhanced the filesystem module with a HotReload class to manage asset reloading based on file changes.
- Updated CMakeLists.txt to include new timidity share data for desktop platforms.
- Improved the audio module to support MIDI playback with dynamic asset loading.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Added comprehensive unit tests for audio functionalities, including playback control, volume adjustments, and source management.
- Implemented new tests for data handling, focusing on ByteData and DataView functionalities, ensuring proper memory management and error handling.
- Updated CMakeLists to include new test files for improved coverage and organization.
- Enhanced event handling tests to verify message processing and variant functionalities.
Decode via medialoader into SoundData/Decoder; play with static/stream Sources, pitch/loop, and 3D listener/source APIs. Stream decode runs on a worker; main thread pumps AL buffers (also hooked from event.pump).