mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 06:59:18 +02:00
obstacle crash event
This commit is contained in:
6
Event.h
6
Event.h
@@ -589,6 +589,9 @@ public:
|
|||||||
bool
|
bool
|
||||||
insert( TEventLauncher *Launcher ) {
|
insert( TEventLauncher *Launcher ) {
|
||||||
return m_launchers.insert( Launcher ); }
|
return m_launchers.insert( Launcher ); }
|
||||||
|
inline void purge (TEventLauncher *Launcher) {
|
||||||
|
m_launchers.purge(Launcher);
|
||||||
|
}
|
||||||
// returns first event in the queue
|
// returns first event in the queue
|
||||||
inline
|
inline
|
||||||
basic_event *
|
basic_event *
|
||||||
@@ -603,6 +606,9 @@ public:
|
|||||||
// legacy method, returns pointer to specified event, or null
|
// legacy method, returns pointer to specified event, or null
|
||||||
basic_event *
|
basic_event *
|
||||||
FindEvent( std::string const &Name );
|
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
|
// legacy method, inserts specified event in the event query
|
||||||
bool
|
bool
|
||||||
AddToQuery( basic_event *Event, TDynamicObject const *Owner, double delay = 0.0 );
|
AddToQuery( basic_event *Event, TDynamicObject const *Owner, double delay = 0.0 );
|
||||||
|
|||||||
@@ -188,10 +188,12 @@ void state_manager::process_commands() {
|
|||||||
std::getline(ss, data, ':');
|
std::getline(ss, data, ':');
|
||||||
|
|
||||||
simulation::State.create_model(data, name, commanddata.location);
|
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) {
|
if (commanddata.command == user_command::deletemodel) {
|
||||||
simulation::State.delete_model(simulation::Instances.find(commanddata.payload));
|
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) {
|
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);
|
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) {
|
void state_manager::delete_model(TAnimModel *model) {
|
||||||
Region->erase(model);
|
Region->erase(model);
|
||||||
Instances.purge(model);
|
Instances.purge(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void state_manager::delete_eventlauncher(TEventLauncher *launcher) {
|
||||||
|
launcher->dRadius = 0.0f; // disable it
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
state_manager::update_clocks() {
|
state_manager::update_clocks() {
|
||||||
|
|
||||||
|
|||||||
@@ -41,9 +41,15 @@ public:
|
|||||||
// create model from node string
|
// create model from node string
|
||||||
TAnimModel *
|
TAnimModel *
|
||||||
create_model(const std::string &src, const std::string &name, const glm::dvec3 &position);
|
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
|
// delete TAnimModel instance
|
||||||
void
|
void
|
||||||
delete_model(TAnimModel *model);
|
delete_model(TAnimModel *model);
|
||||||
|
// delete TEventLauncher instance
|
||||||
|
void
|
||||||
|
delete_eventlauncher(TEventLauncher *launcher);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// members
|
// members
|
||||||
|
|||||||
@@ -1049,6 +1049,33 @@ TAnimModel *state_serializer::create_model(const std::string &src, const std::st
|
|||||||
return cloned;
|
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
|
void
|
||||||
state_serializer::export_nodes_to_stream(std::ostream &scmfile, bool Dirty) const {
|
state_serializer::export_nodes_to_stream(std::ostream &scmfile, bool Dirty) const {
|
||||||
// groups
|
// groups
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ public:
|
|||||||
export_as_text(std::string const &Scenariofile) const;
|
export_as_text(std::string const &Scenariofile) const;
|
||||||
// create new model from node stirng
|
// create new model from node stirng
|
||||||
TAnimModel * create_model(std::string const &src, std::string const &name, const glm::dvec3 &position);
|
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:
|
private:
|
||||||
// methods
|
// methods
|
||||||
|
|||||||
Reference in New Issue
Block a user