]>
git.tdb.fi Git - libs/game.git/log
Mikko Rasa [Tue, 18 Mar 2025 11:21:10 +0000 (13:21 +0200)]
Track individual dependencies in SystemScheduler
Arranging the systems in groups does not provide enough flexibility for
parallelizing the execution.
Mikko Rasa [Sat, 15 Mar 2025 22:27:21 +0000 (00:27 +0200)]
Add texture coordinates to generated meshes
Mikko Rasa [Sat, 15 Mar 2025 22:24:09 +0000 (00:24 +0200)]
Make temporary copies of component/child vectors when synthesizing events
An event listener might add components or child entities, which can
invalidate iterators to the vectors.
Mikko Rasa [Sat, 15 Mar 2025 18:26:13 +0000 (20:26 +0200)]
Add an example application for physics
Mikko Rasa [Sat, 15 Mar 2025 18:24:34 +0000 (20:24 +0200)]
Minor improvements
Mikko Rasa [Sat, 15 Mar 2025 17:39:22 +0000 (19:39 +0200)]
Support loading stage contents from files
Mikko Rasa [Sat, 15 Mar 2025 17:36:59 +0000 (19:36 +0200)]
Basic integration of physics
Mikko Rasa [Sat, 15 Mar 2025 15:23:49 +0000 (17:23 +0200)]
Add an early_tick function to System
Mikko Rasa [Sat, 15 Mar 2025 15:15:45 +0000 (17:15 +0200)]
Add utilities for keeping track of entities with specific components
Mikko Rasa [Sat, 15 Mar 2025 14:49:58 +0000 (16:49 +0200)]
Add generation number to BufferedComponent
Mikko Rasa [Sat, 15 Mar 2025 14:49:12 +0000 (16:49 +0200)]
Make the data members of BufferedComponent private
Derived classes should only access them through the provided functions.
Mikko Rasa [Sat, 15 Mar 2025 13:03:17 +0000 (15:03 +0200)]
Set camera to non-VR view
This accidentally got broken in
503a9c6 while working on the VR stuff.
Mikko Rasa [Sat, 15 Mar 2025 12:55:49 +0000 (14:55 +0200)]
Adjust order of members in Renderer::RenderedEntity
Since destroying the DynamicMeshSource triggers the destruction of the
MeshRenderer, it's important that the former is destroyed first or there
will be an invalid access to an already destroyed Owned handle.
Mikko Rasa [Sat, 15 Mar 2025 10:54:35 +0000 (12:54 +0200)]
Drop the shape wrapper statement from ShapeSetup loader
Instead use an auxiliary loader to allow the shape to be specified
inline with the rest of the setup.
Mikko Rasa [Sat, 15 Mar 2025 10:53:46 +0000 (12:53 +0200)]
Make the shape component available for generated setups
Mikko Rasa [Sat, 15 Mar 2025 10:46:25 +0000 (12:46 +0200)]
Ensure that a Shape's setup actually has a shape
Mikko Rasa [Sat, 15 Mar 2025 10:44:02 +0000 (12:44 +0200)]
Support declaring external types for generated setups
Mikko Rasa [Sat, 15 Mar 2025 10:41:48 +0000 (12:41 +0200)]
Always check pool relationships when a new pool is created
Mikko Rasa [Thu, 6 Mar 2025 13:10:07 +0000 (15:10 +0200)]
Use the auto type to hold the result of dynamic_handle_cast
It's clear enough what the type will be so no need to repeat it.
Mikko Rasa [Thu, 6 Mar 2025 13:09:04 +0000 (15:09 +0200)]
Put simple constructor definitions in headers
Mikko Rasa [Wed, 12 Feb 2025 16:48:12 +0000 (18:48 +0200)]
Rework virtual reality initialization
VR mode must now be requested when creating the Application object,
because it may need to interact with graphics initialization.
Mikko Rasa [Fri, 31 Jan 2025 21:01:31 +0000 (23:01 +0200)]
Fix .gitignore
Mikko Rasa [Fri, 31 Jan 2025 21:00:34 +0000 (23:00 +0200)]
Use the aligned form of operator delete
By the language spec the form of new and delete must match
Mikko Rasa [Fri, 31 Jan 2025 21:00:08 +0000 (23:00 +0200)]
Clean up MeshRenderer when DynamicMeshSource is destroyed
Mikko Rasa [Fri, 31 Jan 2025 20:59:45 +0000 (22:59 +0200)]
Add some missing VR calls
Mikko Rasa [Thu, 30 Jan 2025 17:34:22 +0000 (19:34 +0200)]
Rewrite the VR code to match changes in mspvr
There now needs to be an entity tagged with a TrackingAnchor component
to designate the location of the tracking area within the game world.
A player character entity or something closely related should generally
be suitable.
Mikko Rasa [Sun, 26 Jan 2025 23:21:17 +0000 (01:21 +0200)]
Adjust to different way of accessing VR::MotionController type constant
Mikko Rasa [Sun, 26 Jan 2025 20:49:01 +0000 (22:49 +0200)]
Export TransformValues in the API
Mikko Rasa [Sun, 26 Jan 2025 20:48:19 +0000 (22:48 +0200)]
Add missing includes
Mikko Rasa [Sun, 26 Jan 2025 20:47:12 +0000 (22:47 +0200)]
Use different allocation functions for pools
It appears using alignas with new is a gcc extension.
Mikko Rasa [Sun, 26 Jan 2025 20:43:06 +0000 (22:43 +0200)]
Explicitly declare special members of certain classes
MSVC tries to generate them for DLL export and that fails because of
vectors of unique pointers.
Mikko Rasa [Sun, 26 Jan 2025 18:43:41 +0000 (20:43 +0200)]
Adjust for changes in mspnet
Mikko Rasa [Sun, 26 Jan 2025 20:42:00 +0000 (22:42 +0200)]
Hide thread-local data behind accessor functions
MSVC doesn't like them as static members of classes with DLL interface.
Mikko Rasa [Sun, 26 Jan 2025 16:33:10 +0000 (18:33 +0200)]
Add a component for creating meshes via geometry definitions
Mikko Rasa [Sun, 26 Jan 2025 16:27:37 +0000 (18:27 +0200)]
Add a missing include and forward declaration
Mikko Rasa [Sun, 26 Jan 2025 16:26:37 +0000 (18:26 +0200)]
Add virtual reality support
Mikko Rasa [Sun, 26 Jan 2025 16:20:03 +0000 (18:20 +0200)]
Rework the relationship between renderers and the view
A renderer can't just associate itself with the view in its constructor
since stages may get activated multiple times during the application's
lifetime and the renderer for each stage is only created the first time.
Mikko Rasa [Sun, 26 Jan 2025 15:16:30 +0000 (17:16 +0200)]
Include the input device in the LocalPlayerArrived event
Mikko Rasa [Sun, 26 Jan 2025 15:14:15 +0000 (17:14 +0200)]
Add factory function from a matrix to TransformValues
Mikko Rasa [Sun, 19 Jan 2025 10:08:33 +0000 (12:08 +0200)]
Remove more unnecessary uses of std::ref
These didn't get caught the last time since they lacked the namespace
prefix.
Mikko Rasa [Sat, 27 Jan 2024 09:19:54 +0000 (11:19 +0200)]
Add polymorphism discovery for systems
Mikko Rasa [Sat, 27 Jan 2024 09:13:55 +0000 (11:13 +0200)]
Check bases of intermediate base classes
Without this iterating objects of such an intermediate base type does
not work.
Mikko Rasa [Sat, 27 Jan 2024 08:59:11 +0000 (10:59 +0200)]
Allow reflection to detect polymorphic bases from a type alias
Mikko Rasa [Sun, 21 Jan 2024 18:10:50 +0000 (20:10 +0200)]
Implement queueing for remote calls
This allows received calls to be dispatched in a controlled order during
a frame.
Mikko Rasa [Sun, 21 Jan 2024 17:47:16 +0000 (19:47 +0200)]
Consolidate the remote call classes
Global and entity calls are now declared using the same class. If the
entity type is void (the default), the call is global.
Mikko Rasa [Tue, 16 Jan 2024 21:15:35 +0000 (23:15 +0200)]
Adjust network code for changes in the mspnet library
Mikko Rasa [Sat, 13 Jan 2024 12:51:53 +0000 (14:51 +0200)]
Use iterate_objects in Renderer::tick
Mikko Rasa [Sat, 13 Jan 2024 12:50:56 +0000 (14:50 +0200)]
Cosmetic changes
Mikko Rasa [Sat, 13 Jan 2024 12:30:05 +0000 (14:30 +0200)]
Check that clients only do calls on entities they possess
Mikko Rasa [Sat, 13 Jan 2024 12:10:40 +0000 (14:10 +0200)]
Move an include to where it's actually needed
Mikko Rasa [Sat, 13 Jan 2024 12:09:18 +0000 (14:09 +0200)]
Add some network state checks
Mikko Rasa [Sat, 13 Jan 2024 12:08:24 +0000 (14:08 +0200)]
Don't filter by target players when sending from a client
Mikko Rasa [Sat, 13 Jan 2024 10:11:43 +0000 (12:11 +0200)]
Require entity packets to have an entity_id field of correct type
Mikko Rasa [Thu, 11 Jan 2024 22:01:56 +0000 (00:01 +0200)]
Allow a custom protocol to be set for Replicator
It needs to derive from StageProtocol, which is now exported from the
library.
Mikko Rasa [Thu, 11 Jan 2024 22:00:22 +0000 (00:00 +0200)]
Fix an incorrect argument to key_error
Mikko Rasa [Thu, 11 Jan 2024 21:53:34 +0000 (23:53 +0200)]
Add more kinds of remote calls
Mikko Rasa [Thu, 11 Jan 2024 21:15:25 +0000 (23:15 +0200)]
Avoid sending a packet to the same connection more than once
To keep things efficient, player IDs are now stored as 32-bit quantities,
with the high 16 bits containing an ID for the client connection. Only
the lower 16 bits are transmitted on the network to avoid leaking
information on which players share the same connection.
Mikko Rasa [Thu, 11 Jan 2024 20:55:17 +0000 (22:55 +0200)]
Streamline the send functions in Replicator a bit
Calling the targeted send function with a target of zero will now forward
to the broadcast function, avoiding the need to branch at call sites.
Mikko Rasa [Thu, 11 Jan 2024 17:11:25 +0000 (19:11 +0200)]
Track the sender of the current packet
Mikko Rasa [Tue, 9 Jan 2024 21:49:59 +0000 (23:49 +0200)]
Add facilities to designate entities as player-controlled
Mikko Rasa [Sat, 30 Dec 2023 11:00:49 +0000 (13:00 +0200)]
Fix errors revealed by gcc 13
Mikko Rasa [Sat, 17 Jun 2023 22:09:30 +0000 (01:09 +0300)]
Rework Landscape to support replication
Mikko Rasa [Sat, 17 Jun 2023 21:58:32 +0000 (00:58 +0300)]
Add a dynamic cast function for Owned
Mikko Rasa [Sat, 17 Jun 2023 21:54:38 +0000 (00:54 +0300)]
Add a callback when an entity is spawned over the network
It can be used by the owner of the spawner to send additional packets
to initialize the entity.
Mikko Rasa [Sat, 17 Jun 2023 21:53:36 +0000 (00:53 +0300)]
Add a mechanism for replicating function calls to clients
Mikko Rasa [Sat, 17 Jun 2023 21:40:21 +0000 (00:40 +0300)]
Support custom lookup functions for retrieving setups in Spawner
Mikko Rasa [Sat, 17 Jun 2023 21:31:16 +0000 (00:31 +0300)]
Give IDs to entities replicated over the network
Mikko Rasa [Sat, 17 Jun 2023 21:03:54 +0000 (00:03 +0300)]
Only send spawns to the target players of the replicator
Mikko Rasa [Sat, 17 Jun 2023 21:02:40 +0000 (00:02 +0300)]
Send spawns of newly-created entities in deferred_tick
Spawn info won't have been set in the component_create event for the
zygote.
Mikko Rasa [Sun, 11 Jun 2023 19:22:34 +0000 (22:22 +0300)]
Add a mechanism for spawning entities over the network
Mikko Rasa [Sun, 11 Jun 2023 14:55:31 +0000 (17:55 +0300)]
Add interfaces for using Networking from the outside
Mikko Rasa [Sun, 11 Jun 2023 14:03:11 +0000 (17:03 +0300)]
Emit events when the other side of a network connection changes stages
Mikko Rasa [Sun, 11 Jun 2023 13:22:14 +0000 (16:22 +0300)]
Rename Networking::next_id to next_player_id
Mikko Rasa [Sun, 11 Jun 2023 13:21:12 +0000 (16:21 +0300)]
Use Networking::set_state in start_server and connect_to_server
This gets the event appropriately emitted.
Mikko Rasa [Sun, 11 Jun 2023 12:42:25 +0000 (15:42 +0300)]
Add string interning to the network protocol
This allows transmitting commonly used strings using short IDs.
Mikko Rasa [Thu, 8 Jun 2023 08:29:07 +0000 (11:29 +0300)]
Identify stages with a name
Mikko Rasa [Thu, 8 Jun 2023 08:26:48 +0000 (11:26 +0300)]
Remove unnecessary std::ref invocations
I got confused by the std::thread constructor, which stores its arguments
in a tuple and creates copies without std::ref. It's not needed in these
cases since the arguments are just forwarded directly.
Mikko Rasa [Thu, 8 Jun 2023 08:21:08 +0000 (11:21 +0300)]
Place Networking after event things in Director
It uses the event bus, so correct order of destruction must be ensured.
Mikko Rasa [Thu, 8 Jun 2023 08:04:12 +0000 (11:04 +0300)]
Rename some events for clarity and consistency
Mikko Rasa [Fri, 19 May 2023 20:38:10 +0000 (23:38 +0300)]
Support adding prop entities to Landscape
Mikko Rasa [Mon, 15 May 2023 20:44:38 +0000 (23:44 +0300)]
Add support for shadows
Mikko Rasa [Mon, 15 May 2023 20:38:04 +0000 (23:38 +0300)]
Track destruction of individual components in Renderer
Mikko Rasa [Mon, 15 May 2023 20:38:13 +0000 (23:38 +0300)]
Allow clearing an Owned by assigning nullptr
Mikko Rasa [Sun, 7 May 2023 17:34:26 +0000 (20:34 +0300)]
Make Owned friendly to other template specializations
Mikko Rasa [Sun, 7 May 2023 17:32:43 +0000 (20:32 +0300)]
Make iterate_objects const
Mikko Rasa [Sun, 7 May 2023 17:32:02 +0000 (20:32 +0300)]
Chain certain pool operations to pools of derived objects
Mikko Rasa [Sun, 7 May 2023 15:07:41 +0000 (18:07 +0300)]
Keep track of object pools for derived types
Mikko Rasa [Sun, 7 May 2023 12:54:30 +0000 (15:54 +0300)]
Make the destructor of PoolBase virtual
Mikko Rasa [Sun, 7 May 2023 12:53:07 +0000 (15:53 +0300)]
Make pools non-movable
I'm not actually using move semantics for them and they're of dubious
value due to polymorphism anyway.
Mikko Rasa [Sun, 7 May 2023 12:27:46 +0000 (15:27 +0300)]
Add a generation number to Reflector
Mikko Rasa [Sun, 7 May 2023 11:17:56 +0000 (14:17 +0300)]
Include generated headers from the installed location
Mikko Rasa [Sun, 12 Mar 2023 15:14:13 +0000 (17:14 +0200)]
Add game setup imports as transitive dependencies
Mikko Rasa [Sun, 12 Mar 2023 15:14:01 +0000 (17:14 +0200)]
Update location of generated source files
Mikko Rasa [Sat, 11 Feb 2023 13:56:06 +0000 (15:56 +0200)]
Add components and systems for creating terrains
Mikko Rasa [Sat, 11 Feb 2023 13:19:00 +0000 (15:19 +0200)]
Make Presenter store pointers to systems, not just renderers
Mikko Rasa [Sat, 11 Feb 2023 13:18:20 +0000 (15:18 +0200)]
Add a component for using dynamic meshes in entities
Mikko Rasa [Sat, 28 Jan 2023 20:54:12 +0000 (22:54 +0200)]
Adjust Bassteroids for the lighting changes
Mikko Rasa [Sat, 28 Jan 2023 19:59:09 +0000 (21:59 +0200)]
Create the rendering sequence dynamically
Sequence templates are a bit too rigid for games where it's desirable to
tune many different graphics quality settings independently.
Mikko Rasa [Sat, 28 Jan 2023 14:28:47 +0000 (16:28 +0200)]
Add components for creating lights
Mikko Rasa [Sat, 28 Jan 2023 12:38:59 +0000 (14:38 +0200)]
Further refactor Renderer and MeshRenderer
The ObjectInstance is now hidden inside MeshRenderer and RAII is used to
remove it from the scene. This limits the instance to being in only a
single scene, but I don't think that will be an issue.