MCPcopy Create free account
hub / github.com/BehaviorTree/Groot / loadLog

Method loadLog

bt_editor/sidepanel_replay.cpp:176–235  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

174}
175
176void SidepanelReplay::loadLog(const QByteArray &content)
177{
178 const char* buffer = reinterpret_cast<const char*>(content.data());
179
180 size_t bt_header_size = flatbuffers::ReadScalar<uint32_t>(buffer);
181
182 flatbuffers::Verifier verifier( reinterpret_cast<const uint8_t*>(buffer+4),
183 size_t(content.data() -4));
184
185 bool valid_tree = Serialization::VerifyBehaviorTreeBuffer(verifier);
186 if( ! valid_tree )
187 {
188 QMessageBox::warning( this, "Flatbuffer verification failed",
189 "Failed to load this file.\n"
190 "Its format is not compatible with the current one");
191 return;
192 }
193
194
195 auto fb_behavior_tree = Serialization::GetBehaviorTree( &buffer[4] );
196
197
198 auto res_pair = BuildTreeFromFlatbuffers( fb_behavior_tree );
199
200 _loaded_tree = res_pair.first;
201 const auto& uid_to_index = res_pair.second;
202
203 for (const auto& tree_node: _loaded_tree.nodes() )
204 {
205 const QString& ID = tree_node.model.registration_ID;
206 if( BuiltinNodeModels().count( ID ) == 0)
207 {
208 emit addNewModel( tree_node.model );
209 }
210 }
211
212 emit loadBehaviorTree( _loaded_tree, "BehaviorTree" );
213
214 _transitions.clear();
215 _transitions.reserve( (content.size() - 4 - bt_header_size) / 12 );
216
217 for (size_t offset = 4+bt_header_size; offset < content.size(); offset += 12)
218 {
219 Transition transition;
220 const double t_sec = flatbuffers::ReadScalar<uint32_t>( &buffer[offset] );
221 const double t_usec = flatbuffers::ReadScalar<uint32_t>( &buffer[offset+4] );
222 double timestamp = t_sec + t_usec* 0.000001;
223 transition.timestamp = timestamp;
224 const uint16_t uid = flatbuffers::ReadScalar<uint16_t>(&buffer[offset+8]);
225 transition.index = uid_to_index.at(uid);
226 transition.prev_status = convert(flatbuffers::ReadScalar<Serialization::NodeStatus>(&buffer[offset+10] ));
227 transition.status = convert(flatbuffers::ReadScalar<Serialization::NodeStatus>(&buffer[offset+11] ));
228
229 _transitions.push_back(transition);
230 }
231
232 _timepoint.clear();
233 _prev_row = -1;

Callers 1

basicLoadMethod · 0.80

Calls 3

BuildTreeFromFlatbuffersFunction · 0.85
convertFunction · 0.85
clearMethod · 0.45

Tested by 1

basicLoadMethod · 0.64