- New Loader class in charge of loading and compiling everything
- ShaderSources now only loads sources
- ShaderSources is immutable now
- Resolver singleton in charge of managing name resolutions
- ProgramSpecs go through Resolver
- WorldShaderPipeline no longer needs reference to ShaderSources
- Rename Client to FlywheelClient
- Remove Shadow plugin
- Remove generated source set
- Remove unused properties in gradle.properties
- Organize all imports
- Thanks for the list pepper!
- Program specs are now loaded from json instead of being defined in code and registered manually.
- Within the json spec, a program can define a list of states.
- A state consists of:
- A "when" clause.
- A list of strings to be #defined.
- A list of extensions to apply at program link time.
- Each frame, the first state whose "when" clause returns true will be used.
- A when clause consists of:
- A state provider defined by a resource location.
- A value to match.
- When the value returned by the provider matches the value defined in the when clause, the when clause is considered to be 'true'.
- There is syntactic sugar for when a provider returns a boolean value.
- This system is in its infancy, and there is plenty of room for improvement.