|
Air-Trap 1.0.0
A multiplayer R-Type clone game engine built with C++23 and ECS architecture
|
#include <Registry.hpp>
Public Member Functions | |
| ~Registry () noexcept=default | |
| auto | spawn (void) -> std::expected< Entity, rtp::Error > |
| void | kill (Entity entity) |
| template<Component T, typename Self > | |
| auto | subscribe (this Self &self) -> std::expected< std::reference_wrapper< ConstLike< Self, SparseArray< T > > >, rtp::Error > |
| bool | isAlive (Entity entity) const noexcept |
| template<Component T, typename... Args> | |
| auto | add (Entity entity, Args &&...args) -> std::expected< std::reference_wrapper< T >, rtp::Error > |
| template<Component T, typename Self > | |
| auto | get (this const Self &self) -> std::expected< std::reference_wrapper< ConstLike< Self, SparseArray< T > > >, rtp::Error > |
| template<Component T> | |
| bool | has (Entity entity) const noexcept |
| template<Component T> | |
| void | remove (Entity entity) noexcept |
| void | clear (void) noexcept |
| void | purge (void) noexcept |
| template<Component... Ts, typename Self > | |
| auto | view (this Self &self) |
| template<Component... Ts, typename Self > | |
| auto | zipView (this Self &self) |
| std::size_t | entityCount (void) const noexcept |
| template<Component... Ts> | |
| std::size_t | componentCount (void) const noexcept |
Private Member Functions | |
| template<Component T, typename Self > | |
| auto | getArray (this Self &self) -> ConstLikeRef< Self, SparseArray< T > > |
| template<Component T, Component... Ts, typename Self > | |
| auto & | getSmallestArray (this Self &self) |
| template<Component... Ts> | |
| bool | hasAllComponents (Entity entity) const noexcept |
Private Attributes | |
| std::unordered_map< std::type_index, std::unique_ptr< ISparseArray > > | _arrays |
| Registered component arrays. | |
| std::vector< std::uint32_t > | _generations |
| Generation counters for entities. | |
| std::deque< std::size_t > | _freeIndices |
| Recyclable entity indices. | |
| std::shared_mutex | _mutex |
| Mutex for thread-safe operations. | |
Definition at line 45 of file Registry.hpp.
|
defaultnoexcept |
| auto rtp::ecs::Registry::add | ( | Entity | entity, |
| Args &&... | args | ||
| ) | -> std::expected< std::reference_wrapper< T >, rtp::Error > |
Referenced by rtp::server::EntitySystem::applyWeaponToEntity(), rtp::client::Application::changeState(), rtp::client::graphics::UiFactory::createButton(), rtp::client::graphics::UiFactory::createDropdown(), rtp::server::EntitySystem::createEnemyEntity(), rtp::server::EntitySystem::createObstacleEntity(), rtp::server::EntitySystem::createPlayerEntity(), rtp::server::EntitySystem::createPowerupEntity(), rtp::client::graphics::UiFactory::createSlider(), rtp::client::graphics::UiFactory::createSpritePreview(), rtp::client::graphics::UiFactory::createText(), rtp::client::graphics::UiFactory::createTextInput(), rtp::server::NetworkSyncSystem::handleInput(), rtp::client::scenes::MenuScene::onEnter(), rtp::client::scenes::PlayingScene::onEnter(), rtp::client::NetworkSyncSystem::onEntityDeath(), rtp::client::NetworkSyncSystem::onSpawnEntityFromServer(), rtp::client::UISystem::playClickSound(), rtp::client::InputSystem::playShotSound(), rtp::server::EnemyShootSystem::spawnBullet(), rtp::server::PlayerShootSystem::spawnBullet(), rtp::server::PlayerShootSystem::spawnChargedBullet(), rtp::server::PlayerShootSystem::spawnDebugPowerup(), rtp::server::CollisionSystem::spawnPowerup(), rtp::server::LevelSystem::update(), and rtp::server::CollisionSystem::update().
|
noexcept |
Definition at line 102 of file Registry.cpp.
Referenced by rtp::client::scenes::ModMenuScene::applyCustomSprite(), rtp::client::Application::changeState(), rtp::client::scenes::ModMenuScene::handleEvent(), rtp::client::Application::setupSettingsCallbacks(), rtp::client::scenes::ModMenuScene::showCategoryList(), rtp::client::scenes::ModMenuScene::showEntityCodex(), and rtp::client::scenes::LobbyScene::update().
|
noexcept |
|
noexcept |
Definition at line 127 of file Registry.cpp.
| auto rtp::ecs::Registry::get | ( | this const Self & | self | ) | -> std::expected< std::reference_wrapper< ConstLike< Self, SparseArray< T > > >, rtp::Error > |
Referenced by rtp::server::GameManager::GameManager(), rtp::server::EntitySystem::applyWeaponToEntity(), rtp::server::Room::broadcastRoomState(), rtp::client::scenes::LobbyScene::buildUi(), rtp::client::Application::changeState(), rtp::client::UISystem::clearAllTextInputFocus(), rtp::server::BulletCleanupSystem::despawn(), rtp::server::CollisionSystem::despawn(), rtp::server::RoomSystem::despawnPlayerEntity(), rtp::client::UISystem::focusTextInputAt(), rtp::client::scenes::PlayingScene::handleEvent(), rtp::server::NetworkSyncSystem::handleInput(), rtp::client::UISystem::handleKeyPressed(), rtp::client::UISystem::handleMouseClick(), rtp::client::UISystem::handleMouseMove(), rtp::server::GameManager::handlePlayerDisconnect(), rtp::client::UISystem::handleTextEntered(), rtp::client::NetworkSyncSystem::onBeamState(), rtp::client::scenes::MenuScene::onEnter(), rtp::client::scenes::PlayingScene::onEnter(), rtp::client::scenes::RoomWaitingScene::onEnter(), rtp::client::NetworkSyncSystem::onEntityDeath(), rtp::client::NetworkSyncSystem::onRoomUpdate(), rtp::client::NetworkSyncSystem::onSpawnEntityFromServer(), rtp::client::scenes::PlayingScene::openChat(), rtp::client::scenes::RoomWaitingScene::openChat(), rtp::client::scenes::GamepadSettingsScene::refreshButtonLabel(), rtp::client::scenes::KeyBindingScene::refreshButtonLabel(), rtp::client::systems::UIRenderSystem::renderButtons(), rtp::client::systems::UIRenderSystem::renderDropdowns(), rtp::client::systems::UIRenderSystem::renderSliders(), rtp::client::systems::UIRenderSystem::renderSpritePreviews(), rtp::client::systems::UIRenderSystem::renderTextInputs(), rtp::client::systems::UIRenderSystem::renderTexts(), rtp::client::scenes::PlayingScene::sendChatMessage(), rtp::client::scenes::RoomWaitingScene::sendChatMessage(), rtp::server::GameManager::sendEntitySpawnToSessions(), rtp::server::GameManager::sendRoomEntitySpawnsToSession(), rtp::server::PlayerShootSystem::spawnBullet(), rtp::server::PlayerShootSystem::spawnChargedBullet(), rtp::server::LevelSystem::spawnEntityForRoom(), rtp::client::EntityBuilder::update(), rtp::client::scenes::MenuScene::update(), rtp::client::scenes::PlayingScene::update(), rtp::client::scenes::RoomWaitingScene::update(), rtp::client::ShieldSystem::update(), rtp::client::UISystem::update(), rtp::server::BoomerangSystem::update(), rtp::server::BulletCleanupSystem::update(), rtp::server::CollisionSystem::update(), rtp::server::EnemyAISystem::update(), rtp::server::HomingSystem::update(), rtp::server::PlayerShootSystem::update(), rtp::client::InputSystem::update(), rtp::client::scenes::PlayingScene::updateChatHistoryText(), rtp::client::scenes::RoomWaitingScene::updateChatHistoryText(), and rtp::client::scenes::MenuScene::updateWeaponDisplay().
|
private |
|
private |
|
noexcept |
|
privatenoexcept |
|
noexcept |
Definition at line 90 of file Registry.cpp.
| void rtp::ecs::Registry::kill | ( | Entity | entity | ) |
Definition at line 73 of file Registry.cpp.
References _arrays, _freeIndices, _generations, _mutex, rtp::ecs::Entity::generation(), and rtp::ecs::Entity::index().
Referenced by rtp::client::scenes::PlayingScene::closeChat(), rtp::client::scenes::RoomWaitingScene::closeChat(), rtp::server::BulletCleanupSystem::despawn(), rtp::server::CollisionSystem::despawn(), rtp::server::RoomSystem::despawnPlayerEntity(), rtp::server::GameManager::handlePlayerDisconnect(), rtp::client::EntityBuilder::kill(), rtp::client::NetworkSyncSystem::onEntityDeath(), rtp::client::ShieldSystem::update(), rtp::server::BoomerangSystem::update(), and rtp::server::PlayerShootSystem::update().
|
noexcept |
Definition at line 113 of file Registry.cpp.
|
noexcept |
| auto rtp::ecs::Registry::spawn | ( | void | ) | -> std::expected<Entity, rtp::Error> |
Definition at line 51 of file Registry.cpp.
References rtp::Error::failure(), rtp::ecs::Entity::MAX_INDEX, and rtp::RegistryFull.
Referenced by rtp::client::graphics::UiFactory::createButton(), rtp::client::graphics::UiFactory::createDropdown(), rtp::server::EntitySystem::createEnemyEntity(), rtp::server::EntitySystem::createObstacleEntity(), rtp::server::EntitySystem::createPlayerEntity(), rtp::server::EntitySystem::createPowerupEntity(), rtp::client::graphics::UiFactory::createSlider(), rtp::client::graphics::UiFactory::createSpritePreview(), rtp::client::graphics::UiFactory::createText(), rtp::client::graphics::UiFactory::createTextInput(), rtp::client::scenes::MenuScene::onEnter(), rtp::client::scenes::PlayingScene::onEnter(), rtp::client::UISystem::playClickSound(), rtp::client::InputSystem::playShotSound(), rtp::server::EnemyShootSystem::spawnBullet(), rtp::server::PlayerShootSystem::spawnBullet(), rtp::server::PlayerShootSystem::spawnChargedBullet(), rtp::server::PlayerShootSystem::spawnDebugPowerup(), and rtp::server::CollisionSystem::spawnPowerup().
| auto rtp::ecs::Registry::subscribe | ( | this Self & | self | ) | -> std::expected< std::reference_wrapper< ConstLike< Self, SparseArray< T > > >, rtp::Error > |
| auto rtp::ecs::Registry::view | ( | this Self & | self | ) |
Referenced by rtp::client::ScoreSystem::update().
| auto rtp::ecs::Registry::zipView | ( | this Self & | self | ) |
Referenced by rtp::server::GameManager::sendRoomEntitySpawnsToSession(), rtp::server::LevelSystem::update(), rtp::client::AnimationSystem::update(), rtp::client::ParallaxSystem::update(), rtp::client::RenderSystem::update(), rtp::server::EnemyAISystem::update(), rtp::server::EnemyShootSystem::update(), rtp::server::HomingSystem::update(), rtp::server::MovementSystem::update(), rtp::server::PlayerMouvementSystem::update(), rtp::server::PlayerShootSystem::update(), rtp::client::AudioSystem::updateAudioSources(), and rtp::client::AudioSystem::updateSoundEvents().
|
private |
|
private |
|
private |
Generation counters for entities.
Definition at line 104 of file Registry.hpp.
Referenced by kill().
|
mutableprivate |
Mutex for thread-safe operations.
Definition at line 106 of file Registry.hpp.
Referenced by kill().