cgv
Loading...
Searching...
No Matches
trigger.cxx
1#include "trigger.h"
2#include <iostream>
3
4namespace cgv {
5 namespace gui {
6
9{
10 delay = 0;
11 recur = false;
12}
15{
17 if (ts)
18 return ts->is_scheduled(this);
19 return false;
20}
21
23bool trigger::schedule_one_shot(double _delay)
24{
25 delay = _delay;
26 recur = false;
28 if (ts)
29 return ts->schedule_one_shot(this, delay);
30 else
31 std::cerr << "no trigger server registered" << std::endl;
32 return false;
33}
34
36bool trigger::schedule_recuring(double _delay)
37{
38 delay = _delay;
39 recur = true;
41 if (ts)
42 return ts->schedule_recuring(this, delay);
43 else
44 std::cerr << "no trigger server registered" << std::endl;
45 return false;
46}
48double trigger::get_delay() const
49{
50 return delay;
51}
52
55{
56 return recur;
57}
58
61{
63 if (ts)
64 ts->stop(this);
65 else
66 std::cerr << "no trigger server registered" << std::endl;
67}
68
71{
73 if (ts)
74 return ts->get_current_time();
75 else
76 std::cerr << "no trigger server registered" << std::endl;
77 return -1;
78}
79
82{
83 static trigger t;
84 static bool initialized = false;
85 if (!initialized) {
86 if (get_trigger_server()) {
87 initialized = true;
88 t.schedule_recuring(1.0/60);
89 }
90 }
91 return t;
92}
93
94trigger_server_ptr& ref_trigger_server()
95{
96 static trigger_server_ptr ts;
97 return ts;
98}
99
101{
102 return ref_trigger_server();
103}
104
106{
107 ref_trigger_server() = _ts;
109}
110
111 }
112}
reference counted pointer, which can work together with types that are derived from ref_counted,...
Definition ref_ptr.h:160
a trigger provides callbacks after a programmable time delay
Definition trigger.h:14
bool schedule_one_shot(double delay)
schedule a trigger event in delay seconds, return whether this was successful
Definition trigger.cxx:23
bool is_scheduled() const
return whether a trigger is scheduled
Definition trigger.cxx:14
void stop()
stop a recuring trigger
Definition trigger.cxx:60
bool is_recuring() const
return whether this is a recuring trigger
Definition trigger.cxx:54
static double get_current_time()
return the current time
Definition trigger.cxx:70
double get_delay() const
return the delay used for scheduling the last time
Definition trigger.cxx:48
trigger()
default construction
Definition trigger.cxx:8
bool schedule_recuring(double delay)
start a recuring trigger with the given delay in seconds, return whether this was successful
Definition trigger.cxx:36
data::ref_ptr< trigger_server > trigger_server_ptr
ref counted pointer to trigger server
Definition trigger.h:53
trigger_server_ptr get_trigger_server()
returns the currently registered trigger server
Definition trigger.cxx:100
void register_trigger_server(trigger_server_ptr _ts)
registeres a new trigger server, call this in the on_register method of the server implementation
Definition trigger.cxx:105
trigger & get_animation_trigger()
return the global trigger used for animation, which runs by default with 60 Hz
Definition trigger.cxx:81
the cgv namespace
Definition print.h:11