* I had to make changes to remove unnecessary global includes, which
caused command changes on files across projects
* Added Math.cake, which revealed a problem in macro
evaluation (delimiters need to be part of the context when evaluating
macros after the first evaluation)
* Cleaned up namings in OgreInitialize.cake
* Added ogre-create-light
* Created OgreHlms.cpp, which is copied from Ogre's Sample
PbsMaterialsGameState.cpp and modified
* Moved declare-extern-function so I could avoid making a header file
for test file OgreHlms.cpp
* Reorganized where build options are in a few files
* Update Cakelisp for HotReloading copy lib to Active version so it
the original can be modified (otherwise, it can cause a crash)
* Only reload on key release so it isn't reloaded for as long as the
user holds the key (many times per quick press, even)
* Update Cakelisp for proper executable copy procedure
* Use C linkage only because HotReloadingCodeModifier imports
HotReloading.cake with C linkage. If it didn't it could be removed
It's janky, but it's a good first step!
* Update Cakelisp for module vs. global C search directories. This was
necessary so HotReloading.hpp can be found by every module in the
hot-reloading library
* command-add-string-argument is now part of Cakelisp
* Created Loader, which handles main, hot-reloading, and links the
libraries the reloadable library needs. By having those libraries in
the loader, they will not be destroyed when the reloadable is
destroyed
* Moved state variables and changed array to pointer for VocalGame to
support hot-reloading
* Ogre materials are now loading, though my Monkey material is
incompatible with Ogre 2
* Convert audio from recording format to playback format. This was
necessary because I record at 48kHz but playback is at
44.1kHz. Without this conversion, recorded audio would sound lower,
because it was being played at a slower rate
* Initialize audio buffer to correct silence value. This prevents
popping when the recording didn't set the entire buffer
* Select different devices when pulseaudio is the active
driver. Evidently launching from Emacs will cause a different audio
driver to be active (alsa from Emacs, pulseaudio from the command
line)
* Abort audio initialization if either device fails
* Update Cakelisp for --execute option
* Discovered problem where recording device is sampled at a higher
rate than playback device. I'll need to resample in order to
playback properly
* Added some missing audio-close places
* Monkey now moves forward/backward depending on loudness of sample
* Make sure to close audio devices, else the operating system will
think the device is still busy, and no other apps will play audio
* Removed unused code and comments which are likely to get out of sync
* Added audio-dump-recorded-buffer, which outputs in a format gnuplot
can easily read
* Added configuration for a pretty plot of the audio data
* Update Cakelisp for parentheses around deref and addr, resolving
ambiguities
* Added audio output to VocalGame. I had a few false starts due to not
having my good device selected as default. The current version won't
work on any other machine because I hard-coded the audio device
* Moved test files into src/ so the test directory can accumulate
necessary data without it being hard to find the code
* Fix SDL build including the '-I', which breaks things
* Only build all tests if they're succeeding
* Update cakelisp for add-c-search-directory and add-build-options
* Replace some remaining nullptrs with null
* Building each app separately was causing rebuilds of comptime
definitions, which I have now fixed in Cakelisp
* Moved some SDL stuff around and added a initialize function which
should support using SDL for drawing
* Moved some macros out of GameLib and into Cakelisp
* Replaced nullptr with Cakelisp's fancy null
* Added UpdateBuildCakelisp.sh so I don't get confused when I break
things forgetting to build
Using compile-time code generation/modification, functions with
"test--" prefix are automatically called by AutoTest's generated main
function.
I'm not really bought into "Test Driven Design", but I do like having
high-level demonstrations of functionality built in to the
modules. Currently, both SDL and Tracy modules have test
functions. Ogre will need some more work to ensure it has the
necessary files.
* I used the currentGLDrawable option, which may cause me problems
later
* Set GL version to 4.6 only because RenderDoc required it. This
version matches my current driver version
* Experimented with timing and input
* Add more ignores