Some of the filewatcher's state was being fetched before the trigger was
called and then used after that call. When the trigger modified the
filewatcher's state, it would on occasion explode.
So the profiler apparently expects starts and ends to be consistent in
ordering. Whenever the order changes, it will likely crash. Modified the
main loop so it doesn't add the debug output's timings if the profiler
has been reset due to reloading as a workaround. This needs to be fixed,
though.
Shaders are no longer found under /shaders in the project; they can be
anywhere. In addition, paths for both (program) instructions in the
script and include directives in shader source code are relative to the
file which contains them.
This prevents the script manager and sync manager from watching/loading
their files unless they're explicitely started using
Common::SetInteractiveMode()
This will avoid having the whole thing loaded twice when running the
builder.
The parser accepts (include "some file") at top level. It does nothing
so far, however, and having it do anything will require some new code
for file name / path handling.
This was an attempt at fixing the problem with the profiler's
checkboxes, which sometimes reset immediately after a click. The attempt
failed, profiler's checkboxes are still fucked.
* Get performance information from the GPU using GL timers
* Avoid using glFinish() for the profiler
* Display max( cpu time , gpu time ) in the profiler window