Panda3D
Loading...
Searching...
No Matches
pStatFrameData.I
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file pStatFrameData.I
10 * @author drose
11 * @date 2000-07-10
12 */
13
14/**
15 * Returns true if there are no time events in the frame data, false
16 * otherwise.
17 */
19is_time_empty() const {
20 return _time_data.empty();
21}
22
23/**
24 * Returns true if there are no levels indicated in the frame data, false
25 * otherwise.
26 */
28is_level_empty() const {
29 return _level_data.empty();
30}
31
32/**
33 * Returns true if the FrameData has no time or level data.
34 */
36is_empty() const {
37 return is_time_empty() && is_level_empty();
38}
39
40/**
41 * Removes all the data points from the frame data, in preparation for
42 * building up a new frame's worth.
43 */
45clear() {
46 _time_data.clear();
47 _level_data.clear();
48}
49
50/**
51 * Exchanges the data in this object with the data in the other.
52 */
54swap(PStatFrameData &other) {
55 _time_data.swap(other._time_data);
56 _level_data.swap(other._level_data);
57}
58
59/**
60 * Adds a 'start collector' data point to the frame data.
61 */
63add_start(int index, double time) {
64#ifdef _DEBUG
65 nassertv((index & 0x7fff) == index);
66#endif
67 DataPoint dp;
68 dp._index = index;
69 dp._value = time;
70 _time_data.push_back(dp);
71}
72
73/**
74 * Adds a 'stop collector' data point to the frame data.
75 */
77add_stop(int index, double time) {
78#ifdef _DEBUG
79 nassertv((index & 0x7fff) == index);
80#endif
81 DataPoint dp;
82 dp._index = index | 0x8000;
83 dp._value = time;
84 _time_data.push_back(dp);
85}
86
87/**
88 * Adds a particular level value associated with a given collector to the
89 * frame data.
90 */
92add_level(int index, double level) {
93#ifdef _DEBUG
94 nassertv((index & 0xffff) == index);
95#endif
96 DataPoint dp;
97 dp._index = index;
98 dp._value = level;
99 _level_data.push_back(dp);
100}
101
102/**
103 * Returns the time of the first data point in the frame data. This will
104 * generally be the time of the start of the frame.
105 */
106INLINE double PStatFrameData::
107get_start() const {
108 if (is_empty()) {
109 return 0.0;
110 }
111
112 return _time_data.front()._value;
113}
114
115/**
116 * Returns the time of the last data point in the frame data. This will
117 * generally be the time of the end of the frame.
118 */
119INLINE double PStatFrameData::
120get_end() const {
121 nassertr(!is_empty(), 0.0);
122
123 return _time_data.back()._value;
124}
125
126/**
127 * Returns the total time elapsed for the frame.
128 */
129INLINE double PStatFrameData::
130get_net_time() const {
131 nassertr(!is_empty(), 0.0);
132
133 return _time_data.back()._value - _time_data.front()._value;
134}
135
136/**
137 * Returns the number of individual events stored in the FrameData.
138 */
139INLINE size_t PStatFrameData::
140get_num_events() const {
141 return _time_data.size();
142}
143
144/**
145 * Returns the index of the collector associated with the nth event.
146 */
148get_time_collector(size_t n) const {
149 nassertr(n < _time_data.size(), 0);
150 return _time_data[n]._index & 0x7fff;
151}
152
153/**
154 * Returns true if the nth event represents a start event, or false if it
155 * represents a stop event.
156 */
158is_start(size_t n) const {
159 nassertr(n < _time_data.size(), 0);
160 return (_time_data[n]._index & 0x8000) == 0;
161}
162
163/**
164 * Returns the timestamp of the nth event, in seconds elapsed since some
165 * undefined epoch (which is guaranteed to be shared among all events returned
166 * from a given client).
167 */
168INLINE double PStatFrameData::
169get_time(size_t n) const {
170 nassertr(n < _time_data.size(), 0);
171 return _time_data[n]._value;
172}
173
174/**
175 * Returns the number of individual level values stored in the FrameData.
176 */
177INLINE size_t PStatFrameData::
178get_num_levels() const {
179 return _level_data.size();
180}
181
182/**
183 * Returns the index of the collector associated with the nth level value.
184 */
186get_level_collector(size_t n) const {
187 nassertr(n < _level_data.size(), 0);
188 return _level_data[n]._index;
189}
190
191/**
192 * Returns the height of the nth level value.
193 */
194INLINE double PStatFrameData::
195get_level(size_t n) const {
196 nassertr(n < _level_data.size(), 0);
197 return _level_data[n]._value;
198}
199
200/**
201 * Orders the data points by time.
202 */
203INLINE bool PStatFrameData::DataPoint::
204operator < (const PStatFrameData::DataPoint &other) const {
205 return _value < other._value;
206}
Contains the raw timing and level data for a single frame.
void swap(PStatFrameData &other)
Exchanges the data in this object with the data in the other.
bool is_empty() const
Returns true if the FrameData has no time or level data.
double get_end() const
Returns the time of the last data point in the frame data.
double get_time(size_t n) const
Returns the timestamp of the nth event, in seconds elapsed since some undefined epoch (which is guara...
int get_time_collector(size_t n) const
Returns the index of the collector associated with the nth event.
size_t get_num_levels() const
Returns the number of individual level values stored in the FrameData.
bool is_start(size_t n) const
Returns true if the nth event represents a start event, or false if it represents a stop event.
double get_net_time() const
Returns the total time elapsed for the frame.
double get_start() const
Returns the time of the first data point in the frame data.
size_t get_num_events() const
Returns the number of individual events stored in the FrameData.
bool is_time_empty() const
Returns true if there are no time events in the frame data, false otherwise.
void add_level(int index, double level)
Adds a particular level value associated with a given collector to the frame data.
double get_level(size_t n) const
Returns the height of the nth level value.
void add_stop(int index, double time)
Adds a 'stop collector' data point to the frame data.
bool is_level_empty() const
Returns true if there are no levels indicated in the frame data, false otherwise.
void clear()
Removes all the data points from the frame data, in preparation for building up a new frame's worth.
int get_level_collector(size_t n) const
Returns the index of the collector associated with the nth level value.
void add_start(int index, double time)
Adds a 'start collector' data point to the frame data.