mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
obstacle crash event
This commit is contained in:
6
Event.h
6
Event.h
@@ -589,6 +589,9 @@ public:
|
||||
bool
|
||||
insert( TEventLauncher *Launcher ) {
|
||||
return m_launchers.insert( Launcher ); }
|
||||
inline void purge (TEventLauncher *Launcher) {
|
||||
m_launchers.purge(Launcher);
|
||||
}
|
||||
// returns first event in the queue
|
||||
inline
|
||||
basic_event *
|
||||
@@ -603,6 +606,9 @@ public:
|
||||
// legacy method, returns pointer to specified event, or null
|
||||
basic_event *
|
||||
FindEvent( std::string const &Name );
|
||||
inline TEventLauncher* FindEventlauncher(std::string const &Name) {
|
||||
return m_launchers.find(Name);
|
||||
}
|
||||
// legacy method, inserts specified event in the event query
|
||||
bool
|
||||
AddToQuery( basic_event *Event, TDynamicObject const *Owner, double delay = 0.0 );
|
||||
|
||||
@@ -188,10 +188,12 @@ void state_manager::process_commands() {
|
||||
std::getline(ss, data, ':');
|
||||
|
||||
simulation::State.create_model(data, name, commanddata.location);
|
||||
simulation::State.create_eventlauncher("node -1 0 launcher eventlauncher 0 0 0 20 none -0.1 obstacle_collision end", name + "_snd", commanddata.location);
|
||||
}
|
||||
|
||||
if (commanddata.command == user_command::deletemodel) {
|
||||
simulation::State.delete_model(simulation::Instances.find(commanddata.payload));
|
||||
simulation::State.delete_eventlauncher(simulation::Events.FindEventlauncher(commanddata.payload + "_snd"));
|
||||
}
|
||||
|
||||
if (commanddata.command == user_command::radiostop) {
|
||||
@@ -288,11 +290,19 @@ TAnimModel * state_manager::create_model(const std::string &src, const std::stri
|
||||
return m_serializer.create_model(src, name, position);
|
||||
}
|
||||
|
||||
TEventLauncher * state_manager::create_eventlauncher(const std::string &src, const std::string &name, const glm::dvec3 &position) {
|
||||
return m_serializer.create_eventlauncher(src, name, position);
|
||||
}
|
||||
|
||||
void state_manager::delete_model(TAnimModel *model) {
|
||||
Region->erase(model);
|
||||
Instances.purge(model);
|
||||
}
|
||||
|
||||
void state_manager::delete_eventlauncher(TEventLauncher *launcher) {
|
||||
launcher->dRadius = 0.0f; // disable it
|
||||
}
|
||||
|
||||
void
|
||||
state_manager::update_clocks() {
|
||||
|
||||
|
||||
@@ -41,9 +41,15 @@ public:
|
||||
// create model from node string
|
||||
TAnimModel *
|
||||
create_model(const std::string &src, const std::string &name, const glm::dvec3 &position);
|
||||
// create eventlauncher from node string
|
||||
TEventLauncher *
|
||||
create_eventlauncher(const std::string &src, const std::string &name, const glm::dvec3 &position);
|
||||
// delete TAnimModel instance
|
||||
void
|
||||
delete_model(TAnimModel *model);
|
||||
// delete TEventLauncher instance
|
||||
void
|
||||
delete_eventlauncher(TEventLauncher *launcher);
|
||||
|
||||
private:
|
||||
// members
|
||||
|
||||
@@ -1049,6 +1049,33 @@ TAnimModel *state_serializer::create_model(const std::string &src, const std::st
|
||||
return cloned;
|
||||
}
|
||||
|
||||
TEventLauncher *state_serializer::create_eventlauncher(const std::string &src, const std::string &name, const glm::dvec3 &position) {
|
||||
cParser parser(src);
|
||||
parser.getTokens(); // "node"
|
||||
parser.getTokens(2); // ranges
|
||||
|
||||
scene::node_data nodedata;
|
||||
parser >> nodedata.range_max >> nodedata.range_min;
|
||||
|
||||
parser.getTokens(2); // name, type
|
||||
nodedata.name = name;
|
||||
nodedata.type = "eventlauncher";
|
||||
|
||||
scene::scratch_data scratch;
|
||||
|
||||
TEventLauncher *launcher = deserialize_eventlauncher(parser, scratch, nodedata);
|
||||
|
||||
if (!launcher)
|
||||
return nullptr;
|
||||
|
||||
launcher->Event1 = simulation::Events.FindEvent( launcher->asEvent1Name );
|
||||
launcher->location(position);
|
||||
simulation::Events.insert(launcher);
|
||||
simulation::Region->insert(launcher);
|
||||
|
||||
return launcher;
|
||||
}
|
||||
|
||||
void
|
||||
state_serializer::export_nodes_to_stream(std::ostream &scmfile, bool Dirty) const {
|
||||
// groups
|
||||
|
||||
@@ -43,6 +43,8 @@ public:
|
||||
export_as_text(std::string const &Scenariofile) const;
|
||||
// create new model from node stirng
|
||||
TAnimModel * create_model(std::string const &src, std::string const &name, const glm::dvec3 &position);
|
||||
// create new eventlauncher from node stirng
|
||||
TEventLauncher * create_eventlauncher(std::string const &src, std::string const &name, const glm::dvec3 &position);
|
||||
|
||||
private:
|
||||
// methods
|
||||
|
||||
Reference in New Issue
Block a user