- Multiple ChunkRenderOptimizers can now optimize one block if desired
- CROs require that an interface is implemented, not class extended
- ChunkRenderOptimizerCube has been refactored:
- Blocks that a not opaque are now optimized
- Blocks have per-face opacity
- Blocks can render inner faces
- Example: test glass
- Code is now readable
- Faces was rewritten to support flipping
- .createBlockFace is now readable
- Camera now manipulates coordinate systems in a more obvious way
- Camera now uses world coordinate system
- Z is up
- Yaw 0 looks to the North (+X)
- Positive pitch is up
- Improved control code readability somewhat
- Fixed test UI compass
- Added Typeface
- Added Font (Typeface + style)
- Added Label to display text in GUI
- Added Panels to quickly group Components
- Added a test font
- Ignores all parameters but text itself
- Only ABCD are supported (no whitespace)
- Removed TextureManager, use TextureLoader instead
- Removed PngLoader, AWT image compat moved to TextureUtils
- Pixels renamed to TextureData
- Added TextureDataEditor for runtime editing of TextureData
- Added SimpleTextures to load random, one-off textures
- Added Atlases to load textures into runtime-compiled atlases
- BlockRenders now contains a method to load a block texture properly
- Moved block textures into assets/textures/blocks/
- Added Components
- Also added component-related events and several Layouts
- Added GUILayer to integrate Components into Layers
- Added InputBuses to handle consumable events
- Layers now have a separate input handling pipeline
- Mouse button clicks are now handled together with keyboard keys
- KeyEvent, Keys, InputTracker consider MBs to be keys
- Cursor position and pressed keys are now tracked by InputTracker
- GLFW key codes can now be mapped to names with Keys
- Added KeyMatcher for later
- Fixed world clipping into UI
- Cursor info is no longer available thru GraphicsInterface, use
InputTracker instead
- Added FlatRenderProgram to render 2D graphics
- Can be used as-is
- Supports rectangular coordinate-aligned nested masks
- Added AssembledFlatLayer to cache 2D graphics
- Use RenderTarget for add elements during reassembly
- ShapeRenderProgram now allows null textures (defaults to white BG)
- Sprite now deduces size based on primitive's content size
- unless given size explicitly
- ShapeRenderHelper.*WorldTransform methods renamed to .*Transform
- ShapeRP now handles positions, textures and color multipliers only,
normals, view transforms and light calculations are now in WorldRP
- Renamed WorldRenderer to ShapeRenderHelper
- Moved normal computation to WorldRP code from Face
- No default ShapeRP exists, methods in Faces and Shapes now explicitly
require a program
- Removed unnecessary glBind from texture loader
- Refactored and renamed GLSL code
- Added a view bobbing test, enable with I_WANT_TO_THROW_UP in
LayerWorld