diff --git a/openVulkanoCpp/Math/Timestamp.hpp b/openVulkanoCpp/Math/Timestamp.hpp new file mode 100644 index 0000000..4eb6957 --- /dev/null +++ b/openVulkanoCpp/Math/Timestamp.hpp @@ -0,0 +1,27 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include + +namespace openVulkanoCpp::Math +{ + class Timestamp final + { + static constexpr uint64_t SECONDS_TO_NANOS = 1'000'000'000ull; + static constexpr double NANOS_TO_SECONDS = 1 / SECONDS_TO_NANOS; + + uint64_t timestamp; + + public: + explicit Timestamp(uint64_t nanos = 0) : timestamp(nanos) {} + explicit Timestamp(double seconds) : timestamp(static_cast(seconds * SECONDS_TO_NANOS)) {} + + [[nodiscard]] uint64_t GetNanos() const { return timestamp; } + [[nodiscard]] double GetSeconds() const { return timestamp * NANOS_TO_SECONDS; } + }; +} \ No newline at end of file