- Renamed CrashReportGenerator.makeCrashReport to .crash for convenience
- Split .crash into subroutines
- Documented Analyzer and ContextProvider
- Both are now supposed to have names In Title Case
- CRG.export now assumes PrintStream does not fail and assumes Log can
fail
Also added entity logic, moved test content to a separate package,
changed ImplementedChangeTracker a bit, added PacketEntityChange, made
entity IDs longs instead of UUIDs, and changed a whole bunch of minor
stuff.
Damn, this took CENTURIES to write. And it's still incomplete and crap.
Like, we've got object allocation all over the place in the tick cycle,
stateful changes are potentially super inefficient and we might have
concurrency problems down the line. AND I'll still have to write 10000
primitive wrappers. Urgh. I don't even feel like writing a coherent
commit message. Screw you, potential future reader of this commit
message.
- Camera now uses anchor objects to obtain position and direction
- Replaceable at runtime
- Anchor supplies info about camera modes (switch with F5)
- Only Entity anchor implemented ATM
- Added PacketSetLocalPlayer
- EntityRenders now produce EntityRenderable
- Holds reference to EntityData
- Has getViewPoint() to use with camera anchors
- Added Matrices (like Vectors)
- Added FloatMathUtils for all those pesky math functions that are only
implemented for double. Curse you double!
- Added EntityData, EntityRender and EntityLogic
- Added QuadripedModel
- Added ComplexTexture to simplify syntax when working with complex
models
- Added the most adorable creature in the universe (as a test feature)
- Camera is now 3rd person (temporary)
- Direction can now be switched with F5
- Blocks are now in packages *.world.block
- Tiles are now in packages *.world.tile
- Renamed WorldRenderable to Renderable
- GraphicsInterface now exposes frame counter
- ...which is now a long
- Removed leftover debug FPS console spam
- Added server
- Managed with ServerState
- Added BlockLogic (no TileLogic yet)
- Added ticking
- Added server-client communication API (only local implemented, no net)
- Added controls system (not fully implemented)
- Added Client class
- Contains most game-related references for client: WorldRender,
Camera, ...
- Managed with ClientState
fjckign finally~
- 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