ef12fff06b
Fix builds on macOS
2021-06-11 11:10:29 +07:00
Vsevolod Kremianskii
e265fb43d2
Use precompiled headers to improve compilation time
2021-06-11 10:44:08 +07:00
f3465b742a
Add Slider control
2021-06-10 08:38:14 +07:00
Vsevolod Kremianskii
1690864689
Add placeholders for all script routines
...
Except those used for mini-games.
2021-06-06 13:22:37 +07:00
Vsevolod Kremianskii
582b87b540
Implement saving/loading party members and global variables
...
While at it, refactor GFF field construction.
2021-06-05 02:50:21 +07:00
Vsevolod Kremianskii
f34b0fd3f4
Treat UseFeat as normal attack
...
Until special attacks are properly implemented.
2021-05-27 09:27:50 +07:00
Vsevolod Kremianskii
9166d49f08
Replace OpenLock with UseSkill(Security) action
2021-05-27 07:20:46 +07:00
Vsevolod Kremianskii
b993989ae3
Add use feat actions to the action queue
2021-05-26 23:16:40 +07:00
Vsevolod Kremianskii
76bb4113dc
Convert featureutil into Features class
2021-05-22 15:24:13 +07:00
Vsevolod Kremianskii
abe9aabc96
Convert stateutil to Context
...
Fits better into the new DI architecture.
2021-05-22 13:24:42 +07:00
Vsevolod Kremianskii
fe6abcc412
Refactor dependency injection
...
- Add Service class per module
- Services store and initialize dependencies
- To reduce number of dependenices passed, Service Locator pattern is
used
2021-05-22 11:20:24 +07:00
45de5e7699
fixup! Add install commands to CMake
2021-05-22 08:38:29 +07:00
05cdef97c8
Add install commands to CMake
...
Signed-off-by: William Brawner <me@wbrawner.com>
2021-05-22 08:38:29 +07:00
Vsevolod Kremianskii
f5c0837fc3
Add service locator classes
2021-05-21 12:12:57 +07:00
Vsevolod Kremianskii
ec065ab68b
Simplify null checks in ctors
2021-05-20 21:07:35 +07:00
Vsevolod Kremianskii
e9d0aeac5f
Replace all remaining singletons with dependency injection
...
Needs major cleanup, but allegedly the code is more controllable now.
2021-05-20 20:26:54 +07:00
Vsevolod Kremianskii
1fee22c581
Convert all game singletons to injectable dependencies
2021-05-19 15:59:41 +07:00
Vsevolod Kremianskii
609afc7cf7
Rename SceneLeaf to SceneNodeElement
2021-05-19 12:42:26 +07:00
Vsevolod Kremianskii
8688e9d37b
Load Force Powers from 2DA
2021-05-19 12:06:27 +07:00
Vsevolod Kremianskii
081b4877b8
Load feats from 2DA
2021-05-19 10:10:55 +07:00
Vsevolod Kremianskii
95f9fce3c4
Fix render order between particles and grass clusters
2021-05-19 01:22:05 +07:00
Vsevolod Kremianskii
e27a77b1e9
Combine Object and ActionQueue
2021-05-18 12:21:07 +07:00
Vsevolod Kremianskii
6c47a9de8e
Make ObjectSelector, CreatureFinder and Perception part of Area
2021-05-18 11:44:51 +07:00
Vsevolod Kremianskii
eaaaa834bb
Remove unused DebugOverlay class
2021-05-18 11:22:41 +07:00
Vsevolod Kremianskii
3ea7c3f869
Flatten CreatureAttributes/Abilities/Skills structure
2021-05-18 11:15:26 +07:00
Vsevolod Kremianskii
2113d13a0d
Use Bezier curves for emitter constraints
2021-05-18 08:37:04 +07:00
Vsevolod Kremianskii
fc32d64642
Revert StateManager to stateutil
...
It's just easier to use that way.
2021-05-18 06:01:05 +07:00
Vsevolod Kremianskii
c4985f8684
Disable back-face culling for particles, grass and etc.
2021-05-16 14:08:25 +07:00
Vsevolod Kremianskii
740440ca78
Major refactoring of the scene management system
2021-05-14 23:31:05 +07:00
Vsevolod Kremianskii
aeffc4b453
Rename ModelNodeSceneNode to MeshSceneNode
2021-05-13 15:16:49 +07:00
Vsevolod Kremianskii
366d8d739d
Major graphics/model refactoring
...
- Decouple Model and ModelNode from MdlReader
- Make Emitter a nested struct under ModelNode
- Read all known controller types
2021-05-13 14:54:23 +07:00
Vsevolod Kremianskii
640b5a3c8e
Improve grass lightmapping
...
- Read face materials from MDL
- Use AABB model node, not walkmesh, to create grass clusters
- Use barycentric coordinates to interpolate texture coordinates
While at it, add Mesh methods to draw a subset of triangles.
2021-05-12 12:05:04 +07:00
Vsevolod Kremianskii
2843761be0
Add mesh and texture subdirectories to engine/graphics
2021-05-11 23:05:34 +07:00
Vsevolod Kremianskii
214aded7a4
Refactor ModelMesh
...
- Make it a struct, given how it doesn't have a behavior
- Place it under ModelNode
2021-05-11 22:25:52 +07:00
Vsevolod Kremianskii
0e2ffbee9d
Refactor VertexOffsets
...
- Extract from Mesh
- Rename to VertexAttributes
- Move stride on top
2021-05-11 19:17:34 +07:00
Vsevolod Kremianskii
ad399815b7
Refactor collision detection
...
- Drop CollisionDetector class as unnecessary abstraction
- Move collision detection code from area.cpp into area_collision.cpp
- Implement sliding along obstacle normals
- Temporarily disable collision between creatures
2021-05-10 21:57:21 +07:00
Vsevolod Kremianskii
e8ff1d9ece
Revise PBR shaders
...
While at it, move GLSL sources into a separate folder. Also split them
into multiple files: common, Blinn-Phong and PBR.
2021-05-07 18:55:17 +07:00
Vsevolod Kremianskii
a0e72164ed
Convert stateutil into StateManager
...
Apparently, application-side caching of GL states improves performance.
2021-05-06 08:07:12 +07:00
Vsevolod Kremianskii
ae7dc8eb12
Move GLSL shaders into a separate CPP file
2021-05-06 07:42:28 +07:00
Vsevolod Kremianskii
62ed8f58e2
Move tools, launcher, external and tests under src directory
2021-05-05 08:08:12 +07:00
Vsevolod Kremianskii
67076473b2
Rename librender to libgraphics
2021-05-05 00:24:53 +07:00
Vsevolod Kremianskii
e3d49fd3b2
Implement footstep sounds
2021-05-04 23:21:18 +07:00
Vsevolod Kremianskii
ae47b3de64
Replace libtga with a custom TGAWriter
2021-05-04 16:22:22 +07:00
Vsevolod Kremianskii
d78bd29e6d
Add basic lens flare implementation
2021-05-03 22:48:46 +07:00
Vsevolod Kremianskii
2212f0ff00
Merge ScriptObject and Object
...
ScriptObject is redundant, now, that variables store id, not pointers.
2021-05-03 13:52:22 +07:00
Vsevolod Kremianskii
25253405ce
Revert to storing object id, not object pointer in scripts
...
- This is how vanilla does it
- It will supposedly be easier to save delayed actions this way
2021-04-22 17:53:55 +07:00
Vsevolod Kremianskii
0e0f018b5b
Add tool to convert LIP to JSON and vice versa
2021-04-22 14:02:43 +07:00
Vsevolod Kremianskii
b6c5a9a8cd
Refactor save games
...
SAV file is now an ERF archive with GFF (and later TGA) files.
2021-04-22 11:00:11 +07:00
Vsevolod Kremianskii
1c6e3e05cc
Revert to reading individual fields in MdlReader
...
This is to account for endianess.
2021-04-11 12:20:37 +07:00
Vsevolod Kremianskii
e21f3c66bf
Use Boost::Endian for byte order conversion
...
Less code to maintain and faster due to intristics.
2021-04-11 06:39:03 +07:00