neoGFX
Cross-platform C++ app/game engine
Loading...
Searching...
No Matches
time.hpp
Go to the documentation of this file.
1
// time.hpp
2
/*
3
* Copyright (c) 2018, 2020 Leigh Johnston.
4
*
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions are
9
* met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
*
14
* * Redistributions in binary form must reproduce the above copyright
15
* notice, this list of conditions and the following disclaimer in the
16
* documentation and/or other materials provided with the distribution.
17
*
18
* * Neither the name of Leigh Johnston nor the names of any
19
* other contributors to this software may be used to endorse or
20
* promote products derived from this software without specific prior
21
* written permission.
22
*
23
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
24
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
27
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
*/
35
36
#pragma once
37
38
#include <
neolib/neolib.hpp
>
39
#include <
neolib/ecs/chrono.hpp
>
40
#include <
neolib/ecs/system.hpp
>
41
#include <
neolib/ecs/entity_life_span.hpp
>
42
43
namespace
neolib::ecs
44
{
45
class
NEOLIB_EXPORT
time
:
public
system
<entity_info, entity_life_span>
46
{
47
private
:
48
class
thread
;
49
public
:
50
time
(
i_ecs
& aEcs);
51
public
:
52
const
system_id
&
id
()
const override
;
53
const
neolib::i_string
&
name
()
const override
;
54
public
:
55
bool
apply
()
override
;
56
public
:
57
step_time
system_time
()
const
;
58
step_time
world_time
()
const
;
59
public
:
60
struct
meta
61
{
62
static
const
neolib::uuid
&
id
()
63
{
64
static
const
neolib::uuid
sId = { 0x714a0e4a, 0xd0be, 0x4737, 0xbd25, { 0xe8, 0x3e, 0x2a, 0x5c, 0xd7, 0x65 } };
65
return
sId;
66
}
67
static
const
neolib::i_string
&
name
()
68
{
69
static
const
neolib::string
sName =
"Time"
;
70
return
sName;
71
}
72
};
73
private
:
74
mutable
optional_step_time
iSystemTimeOffset;
75
};
76
}
neolib::ecs::i_ecs
Definition
i_ecs.hpp:85
neolib::ecs::system
Definition
system.hpp:58
neolib::ecs::time
Definition
time.hpp:46
neolib::ecs::time::time
time(i_ecs &aEcs)
neolib::ecs::time::id
const system_id & id() const override
neolib::ecs::time::world_time
step_time world_time() const
neolib::ecs::time::name
const neolib::i_string & name() const override
neolib::ecs::time::apply
bool apply() override
neolib::ecs::time::system_time
step_time system_time() const
neolib::i_string
Definition
i_string.hpp:49
neolib::string
Definition
string.hpp:52
neolib::thread
Definition
thread.hpp:52
neolib::ecs
Definition
chrono.hpp:44
neolib::ecs::optional_step_time
std::optional< step_time > optional_step_time
Definition
chrono.hpp:60
neolib::ecs::step_time
step_time_interval step_time
Definition
chrono.hpp:59
chrono.hpp
entity_life_span.hpp
system.hpp
neolib.hpp
neolib::ecs::time::meta
Definition
time.hpp:61
neolib::ecs::time::meta::name
static const neolib::i_string & name()
Definition
time.hpp:67
neolib::ecs::time::meta::id
static const neolib::uuid & id()
Definition
time.hpp:62
neolib::uuid
Definition
uuid.hpp:51
neolib
include
neolib
ecs
time.hpp
Generated by
1.9.8