Engine²
Open-source game engine written in C++.
Loading...
Searching...
No Matches
VehicleTelemetry.hpp
Go to the documentation of this file.
1/**************************************************************************
2 * EngineSquared v0.2.0
3 * @file VehicleTelemetry.hpp
4 * @brief Resource exposing per-vehicle RPM telemetry
5 **************************************************************************/
6
7#pragma once
8
9#include <functional>
10#include <optional>
11#include <unordered_map>
12
13#include "Engine.hpp"
14
15namespace Physics::Resource {
16
18 public:
19 void SetRPM(Engine::EntityId entity, float rpm) { _rpmByEntity[entity] = rpm; }
20 std::optional<float> GetRPM(Engine::EntityId entity) const
21 {
22 auto it = _rpmByEntity.find(entity);
23 if (it == _rpmByEntity.end())
24 return std::nullopt;
25 return it->second;
26 }
27 void Clear(Engine::EntityId entity) { _rpmByEntity.erase(entity); }
28
29 private:
30 struct EntityIdHash {
31 size_t operator()(const Engine::EntityId &id) const noexcept
32 {
34 return std::hash<VT>{}(static_cast<VT>(id));
35 }
36 };
38 bool operator()(const Engine::EntityId &a, const Engine::EntityId &b) const noexcept
39 {
40 return static_cast<Engine::EntityId::ValueType>(a) == static_cast<Engine::EntityId::ValueType>(b);
41 }
42 };
43 std::unordered_map<Engine::EntityId, float, EntityIdHash, EntityIdEqual> _rpmByEntity;
44};
45
46} // namespace Physics::Resource
Definition VehicleTelemetry.hpp:17
void Clear(Engine::EntityId entity)
Definition VehicleTelemetry.hpp:27
std::unordered_map< Engine::EntityId, float, EntityIdHash, EntityIdEqual > _rpmByEntity
Definition VehicleTelemetry.hpp:43
void SetRPM(Engine::EntityId entity, float rpm)
Definition VehicleTelemetry.hpp:19
std::optional< float > GetRPM(Engine::EntityId entity) const
Definition VehicleTelemetry.hpp:20
Definition BodyEntityMap.hpp:12
Represents a unique identifier for an entity in the Engine's entity-component system....
Definition EntityId.hpp:14
Id::ValueType ValueType
The underlying value type of the EntityId, which is the same as Engine::Id::ValueType.
Definition EntityId.hpp:16
Definition VehicleTelemetry.hpp:37
bool operator()(const Engine::EntityId &a, const Engine::EntityId &b) const noexcept
Definition VehicleTelemetry.hpp:38
Definition VehicleTelemetry.hpp:30
size_t operator()(const Engine::EntityId &id) const noexcept
Definition VehicleTelemetry.hpp:31