216 Commits

Author SHA1 Message Date
e7e54d0ffd Code review 2020-11-02 17:27:17 +03:00
384b2047ac Init crash reports 2020-11-02 16:30:14 +03:00
5c90a8025b Refactored sound update logic
- Audio Listener now uses Camera cache to determine position and
orientation
- SoundManager.update() is not triggered from RenderThread directly
2020-10-06 12:15:58 +03:00
3057910269 Merge remote-tracking branch 'github/master' into audio 2020-10-06 11:44:32 +03:00
503963f992 Cleaned up and formatted code 2020-10-06 11:42:36 +03:00
b59c4bdc2b Camera now stores last applied position and direction
Also FloatMathUtils now has sin, cos and tan
2020-10-04 19:50:52 +03:00
a9d2a7f6c5 Added stateful objects
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.
2020-09-28 22:39:01 +03:00
12dc816760 AUDIO: now number of sources is limited
- fixed isPlaying() method
2020-09-24 21:51:06 +03:00
aa640e23d6 Fixed sound positioning while reconnecting 2020-09-23 20:17:02 +03:00
9d1862842d Added sound positioning 2020-09-20 17:40:51 +03:00
437566283c Merge remote-tracking branch 'origin/master' into audio
# Conflicts:
#	src/main/java/ru/windcorp/progressia/client/ProgressiaClientMain.java
2020-09-20 13:00:14 +03:00
aec9301b6b Structured OpenAl
- Now it is possible to:
 - read files as mono or stereo
 - create and play more than one sound
2020-09-20 11:31:15 +03:00
ccc9d8f3a7 Refactored Camera to use anchors
- 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!
2020-09-07 10:16:52 +03:00
c613bef8c5 Added face culling state stack and disabled face culling for entities 2020-09-05 23:26:54 +03:00
9dc3154874 Added entities
- 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
2020-09-04 21:54:55 +03:00
dc74a419c9 Added logger 2020-09-03 23:40:28 +03:00
aa3cb630fb Fixed LayoutVertical 2020-09-02 09:15:54 +03:00
03f9b90239 Trying to make OpenAL to work as intended 2020-08-31 21:15:46 +03:00
068f229a45 Added TileLogic 2020-08-31 20:39:35 +03:00
ab4888e592 working on audio 2020-08-31 19:59:06 +03:00
fcf5da731f Fixed buffer position and limit handling in Resource.readAsBytes 2020-08-31 18:39:35 +03:00
6afb7f8f1b Added Resource.readAsBytes to read a resource to a ByteBuffer 2020-08-31 18:32:54 +03:00
3ff074e384 Unified naming schemes for blocks, tiles and registries
- 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
2020-08-31 15:15:04 +03:00
30e61cf33f Added server and reorganized client
- 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~
2020-08-30 19:30:32 +03:00
e8f3177266 Added runtime localization change support
- Label.update() now invokes requestReassembly() method
2020-08-30 16:29:22 +03:00
9ec89a80d3 Added fallback language support to localizer 2020-08-30 09:10:27 +03:00
d6d1e710d9 Hotfixed localizator 2020-08-28 22:26:41 +03:00
280ffba4c0 Refactored localization 2020-08-28 22:19:58 +03:00
5fcccf05ca Added localization support 2020-08-28 21:54:53 +03:00
79c7aa91f8 Optimized tile render and added CRO tile support
- CROs now support tiles
  - CROCube refactored
- Test content:
  - Added sand and flower tiles
  - Removed grass blocks, added grass tiles
2020-08-27 20:58:27 +03:00
60fbfa9578 Added tiles. Not yet optimized. 2020-08-27 00:24:11 +03:00
21a30e8b97 Created fast Vec caches and increased the use of Vecs in code 2020-08-26 20:58:38 +03:00
65eaae68a8 Added some packages from JPUtil (https://github.com/OLEGSHA/JPUtil)
- ru.windcorp.common.util.ThrowingRunnable replaced with
ru.windcorp.jputil.functions.ThrowingRunnable
2020-08-26 18:34:52 +03:00
a9896fa3e1 Refactored CROs and CROCube, Faces.createBlockFace and Camera
- 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
2020-08-26 01:34:32 +03:00
bdb458b911 Renamed BlockRenderOptimizer to ChunkRenderOptimizer
Also renamed [BRO]Generator to [CRO]Supplier
2020-08-25 21:21:22 +03:00
d58d028e1c Begun refactoring chunk render. Not implemented properly. 2020-08-25 21:11:55 +03:00
1caf82bf8c
Minor updates in Building section of README.md
- Added encoding specification instructions for Eclipse IDE
- Fixed formatting
2020-08-25 20:38:25 +03:00
e1ce8c2e09 Added GNU Unifont typeface, optimized TextureDataEditor greatly
- Added GNU Unifont support
- TextureDataEditor no longer uses AWT internally
  - Optimized Atlases slightly
- SpriteTypeface adds spacing between lines
- Removed TestTypeface
2020-08-17 22:22:13 +03:00
54002475d0 Added SpriteTypeface that implements text styling and layout 2020-08-16 20:37:42 +04:00
0e99685583 Added test text rendering
- 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)
2020-08-16 08:31:06 +04:00
4370c523e6 Flipped Y-axis in flat layers and cursor input. Now (0; 0) is lower left 2020-08-15 22:35:45 +04:00
eb6945b017 Fixed block atlas size 2020-08-15 22:20:42 +04:00
6d2adb0f31 Refactored texture loading system to allow runtime editing and atlases
- 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/
2020-08-15 22:15:26 +04:00
aeed34d105 Changed name to Progressia in README and file headers 2020-08-10 14:07:53 +04:00
4cf0324f1a Moved everything into ru.windcorp.progressia package 2020-08-10 12:22:45 +03:00
45b0ad2888 Switched back to GLSL 1.20 because my laptop is a brick 2020-08-09 11:40:41 +03:00
1362dab2c1 Updated BinUtil and CoordinatePacker
- Added packing 2 ints into a long to CoordinatePacker
- Added iPowerOf2(int) to BinUtil
2020-08-06 21:36:45 +03:00
b9dc25096f Replaced .gui.Size with Vec2i 2020-08-05 11:55:50 +03:00
2abffff843 Ported Component system from https://github.com/OLEGSHA/crystal-farm
- 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
2020-08-05 00:16:44 +03:00
4bd5411abb Added FrameResizeEvent, refactored input events a little 2020-08-03 22:41:07 +03:00