mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 16:19:19 +02:00
shader fix, vehicle move feature
This commit is contained in:
14
DynObj.cpp
14
DynObj.cpp
@@ -3507,6 +3507,20 @@ glm::dvec3 TDynamicObject::get_future_movement() const
|
|||||||
return m_future_movement;
|
return m_future_movement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TDynamicObject::move_set(double distance)
|
||||||
|
{
|
||||||
|
TDynamicObject *d = this;
|
||||||
|
while( d ) {
|
||||||
|
d->Move( distance * d->DirectionGet() );
|
||||||
|
d = d->Next(); // pozostałe też
|
||||||
|
}
|
||||||
|
d = Prev();
|
||||||
|
while( d ) {
|
||||||
|
d->Move( distance * d->DirectionGet() );
|
||||||
|
d = d->Prev(); // w drugą stronę też
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool TDynamicObject::FastUpdate(double dt)
|
bool TDynamicObject::FastUpdate(double dt)
|
||||||
{
|
{
|
||||||
if (dt == 0.0)
|
if (dt == 0.0)
|
||||||
|
|||||||
1
DynObj.h
1
DynObj.h
@@ -633,6 +633,7 @@ private:
|
|||||||
void DestinationSet(std::string to, std::string numer);
|
void DestinationSet(std::string to, std::string numer);
|
||||||
void OverheadTrack(float o);
|
void OverheadTrack(float o);
|
||||||
glm::dvec3 get_future_movement() const;
|
glm::dvec3 get_future_movement() const;
|
||||||
|
void move_set(double distance);
|
||||||
|
|
||||||
double MED[9][8]; // lista zmiennych do debugowania hamulca ED
|
double MED[9][8]; // lista zmiennych do debugowania hamulca ED
|
||||||
static std::string const MED_labels[ 8 ];
|
static std::string const MED_labels[ 8 ];
|
||||||
|
|||||||
25
Train.cpp
25
Train.cpp
@@ -351,7 +351,6 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
|
|||||||
{ user_command::generictoggle8, &TTrain::OnCommand_generictoggle },
|
{ user_command::generictoggle8, &TTrain::OnCommand_generictoggle },
|
||||||
{ user_command::generictoggle9, &TTrain::OnCommand_generictoggle },
|
{ user_command::generictoggle9, &TTrain::OnCommand_generictoggle },
|
||||||
|
|
||||||
{ user_command::vehiclemove, &TTrain::OnCommand_vehiclemove },
|
|
||||||
{ user_command::vehiclemoveforwards, &TTrain::OnCommand_vehiclemoveforwards },
|
{ user_command::vehiclemoveforwards, &TTrain::OnCommand_vehiclemoveforwards },
|
||||||
{ user_command::vehiclemovebackwards, &TTrain::OnCommand_vehiclemovebackwards },
|
{ user_command::vehiclemovebackwards, &TTrain::OnCommand_vehiclemovebackwards },
|
||||||
{ user_command::vehicleboost, &TTrain::OnCommand_vehicleboost },
|
{ user_command::vehicleboost, &TTrain::OnCommand_vehicleboost },
|
||||||
@@ -5008,38 +5007,18 @@ void TTrain::OnCommand_cabchangebackward( TTrain *Train, command_data const &Com
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTrain::vehiclemove(float distance) {
|
|
||||||
TDynamicObject *d = DynamicObject;
|
|
||||||
while( d ) {
|
|
||||||
d->Move( distance * d->DirectionGet() );
|
|
||||||
d = d->Next(); // pozostałe też
|
|
||||||
}
|
|
||||||
d = DynamicObject->Prev();
|
|
||||||
while( d ) {
|
|
||||||
d->Move( distance * d->DirectionGet() );
|
|
||||||
d = d->Prev(); // w drugą stronę też
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TTrain::OnCommand_vehiclemove(TTrain *Train, const command_data &Command) {
|
|
||||||
if (Command.action == GLFW_RELEASE || !DebugModeFlag)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Train->vehiclemove(Command.param1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TTrain::OnCommand_vehiclemoveforwards(TTrain *Train, const command_data &Command) {
|
void TTrain::OnCommand_vehiclemoveforwards(TTrain *Train, const command_data &Command) {
|
||||||
if (Command.action == GLFW_RELEASE || !DebugModeFlag)
|
if (Command.action == GLFW_RELEASE || !DebugModeFlag)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Train->vehiclemove(100.0);
|
Train->DynamicObject->move_set(100.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTrain::OnCommand_vehiclemovebackwards(TTrain *Train, const command_data &Command) {
|
void TTrain::OnCommand_vehiclemovebackwards(TTrain *Train, const command_data &Command) {
|
||||||
if (Command.action == GLFW_RELEASE || !DebugModeFlag)
|
if (Command.action == GLFW_RELEASE || !DebugModeFlag)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Train->vehiclemove(-100.0);
|
Train->DynamicObject->move_set(-100.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTrain::OnCommand_vehicleboost(TTrain *Train, const command_data &Command) {
|
void TTrain::OnCommand_vehicleboost(TTrain *Train, const command_data &Command) {
|
||||||
|
|||||||
4
Train.h
4
Train.h
@@ -349,14 +349,10 @@ class TTrain
|
|||||||
static void OnCommand_cabchangeforward( TTrain *Train, command_data const &Command );
|
static void OnCommand_cabchangeforward( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_cabchangebackward( TTrain *Train, command_data const &Command );
|
static void OnCommand_cabchangebackward( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_generictoggle( TTrain *Train, command_data const &Command );
|
static void OnCommand_generictoggle( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_vehiclemove( TTrain *Train, command_data const &Command );
|
|
||||||
static void OnCommand_vehiclemoveforwards( TTrain *Train, command_data const &Command );
|
static void OnCommand_vehiclemoveforwards( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_vehiclemovebackwards( TTrain *Train, command_data const &Command );
|
static void OnCommand_vehiclemovebackwards( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_vehicleboost( TTrain *Train, command_data const &Command );
|
static void OnCommand_vehicleboost( TTrain *Train, command_data const &Command );
|
||||||
|
|
||||||
void vehiclemove(float distance);
|
|
||||||
|
|
||||||
|
|
||||||
// members
|
// members
|
||||||
TDynamicObject *DynamicObject { nullptr }; // przestawia zmiana pojazdu [F5]
|
TDynamicObject *DynamicObject { nullptr }; // przestawia zmiana pojazdu [F5]
|
||||||
TMoverParameters *mvControlled { nullptr }; // człon, w którym sterujemy silnikiem
|
TMoverParameters *mvControlled { nullptr }; // człon, w którym sterujemy silnikiem
|
||||||
|
|||||||
@@ -236,7 +236,6 @@ commanddescription_sequence Commands_descriptions = {
|
|||||||
{ "setdatetime", command_target::simulation, command_mode::oneoff },
|
{ "setdatetime", command_target::simulation, command_mode::oneoff },
|
||||||
{ "setweather", command_target::simulation, command_mode::oneoff },
|
{ "setweather", command_target::simulation, command_mode::oneoff },
|
||||||
{ "settemperature", command_target::simulation, command_mode::oneoff },
|
{ "settemperature", command_target::simulation, command_mode::oneoff },
|
||||||
{ "vehiclemove", command_target::vehicle, command_mode::oneoff },
|
|
||||||
{ "vehiclemoveforwards", command_target::vehicle, command_mode::oneoff },
|
{ "vehiclemoveforwards", command_target::vehicle, command_mode::oneoff },
|
||||||
{ "vehiclemovebackwards", command_target::vehicle, command_mode::oneoff },
|
{ "vehiclemovebackwards", command_target::vehicle, command_mode::oneoff },
|
||||||
{ "vehicleboost", command_target::vehicle, command_mode::oneoff },
|
{ "vehicleboost", command_target::vehicle, command_mode::oneoff },
|
||||||
@@ -249,6 +248,7 @@ commanddescription_sequence Commands_descriptions = {
|
|||||||
{ "setlight", command_target::simulation, command_mode::oneoff },
|
{ "setlight", command_target::simulation, command_mode::oneoff },
|
||||||
{ "insertmodel", command_target::simulation, command_mode::oneoff },
|
{ "insertmodel", command_target::simulation, command_mode::oneoff },
|
||||||
{ "deletemodel", command_target::simulation, command_mode::oneoff },
|
{ "deletemodel", command_target::simulation, command_mode::oneoff },
|
||||||
|
{ "trainsetmove", command_target::simulation, command_mode::oneoff },
|
||||||
};
|
};
|
||||||
|
|
||||||
} // simulation
|
} // simulation
|
||||||
|
|||||||
@@ -230,7 +230,6 @@ enum class user_command {
|
|||||||
setdatetime,
|
setdatetime,
|
||||||
setweather,
|
setweather,
|
||||||
settemperature,
|
settemperature,
|
||||||
vehiclemove,
|
|
||||||
vehiclemoveforwards,
|
vehiclemoveforwards,
|
||||||
vehiclemovebackwards,
|
vehiclemovebackwards,
|
||||||
vehicleboost,
|
vehicleboost,
|
||||||
@@ -243,6 +242,7 @@ enum class user_command {
|
|||||||
setlight,
|
setlight,
|
||||||
insertmodel,
|
insertmodel,
|
||||||
deletemodel,
|
deletemodel,
|
||||||
|
dynamicmove,
|
||||||
|
|
||||||
none = -1
|
none = -1
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -203,6 +203,12 @@ void state_manager::process_commands() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (commanddata.command == user_command::dynamicmove) {
|
||||||
|
TDynamicObject *vehicle = simulation::Vehicles.find(commanddata.payload);
|
||||||
|
if (vehicle)
|
||||||
|
vehicle->move_set(commanddata.param1);
|
||||||
|
}
|
||||||
|
|
||||||
if (DebugModeFlag) {
|
if (DebugModeFlag) {
|
||||||
if (commanddata.command == user_command::timejump) {
|
if (commanddata.command == user_command::timejump) {
|
||||||
Time.update(commanddata.param1);
|
Time.update(commanddata.param1);
|
||||||
|
|||||||
@@ -117,6 +117,8 @@ init() {
|
|||||||
"Vehicle parameters",
|
"Vehicle parameters",
|
||||||
"Radiostop",
|
"Radiostop",
|
||||||
"Reset trainset",
|
"Reset trainset",
|
||||||
|
"Move +500m",
|
||||||
|
"Move -500m",
|
||||||
|
|
||||||
"master controller",
|
"master controller",
|
||||||
"master controller",
|
"master controller",
|
||||||
@@ -320,6 +322,8 @@ init() {
|
|||||||
u8"Parametry pojazdu",
|
u8"Parametry pojazdu",
|
||||||
u8"Radiostop",
|
u8"Radiostop",
|
||||||
u8"Zresetuj skład",
|
u8"Zresetuj skład",
|
||||||
|
u8"Przesuń +500m",
|
||||||
|
u8"Przesuń -500m",
|
||||||
|
|
||||||
u8"nastawnik jazdy",
|
u8"nastawnik jazdy",
|
||||||
u8"nastawnik jazdy",
|
u8"nastawnik jazdy",
|
||||||
|
|||||||
@@ -106,6 +106,8 @@ enum string {
|
|||||||
vehicleparams_window,
|
vehicleparams_window,
|
||||||
vehicleparams_radiostop,
|
vehicleparams_radiostop,
|
||||||
vehicleparams_reset,
|
vehicleparams_reset,
|
||||||
|
vehicleparams_move500f,
|
||||||
|
vehicleparams_move500b,
|
||||||
|
|
||||||
cab_mainctrl,
|
cab_mainctrl,
|
||||||
cab_jointctrl,
|
cab_jointctrl,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ ui::map_panel::map_panel() : ui_panel(LOC_STR(ui_map), false)
|
|||||||
gl::shader frag("map.frag");
|
gl::shader frag("map.frag");
|
||||||
|
|
||||||
m_track_shader = std::unique_ptr<gl::program>(new gl::program({vert, frag}));
|
m_track_shader = std::unique_ptr<gl::program>(new gl::program({vert, frag}));
|
||||||
if (GLAD_GL_EXT_geometry_shader) {
|
if (!Global.gfx_usegles || GLAD_GL_EXT_geometry_shader) {
|
||||||
gl::shader poi_frag("map_poi.frag");
|
gl::shader poi_frag("map_poi.frag");
|
||||||
gl::shader poi_geom("map_poi.geom");
|
gl::shader poi_geom("map_poi.geom");
|
||||||
m_poi_shader = std::unique_ptr<gl::program>(new gl::program({vert, poi_frag, poi_geom}));
|
m_poi_shader = std::unique_ptr<gl::program>(new gl::program({vert, poi_frag, poi_geom}));
|
||||||
@@ -123,7 +123,7 @@ void ui::map_panel::render_map_texture(glm::mat4 transform, glm::vec2 surface_si
|
|||||||
scene_ubo->update(scene_ubs);
|
scene_ubo->update(scene_ubs);
|
||||||
GfxRenderer.Draw_Geometry(m_switch_handles.begin(), m_switch_handles.end());
|
GfxRenderer.Draw_Geometry(m_switch_handles.begin(), m_switch_handles.end());
|
||||||
|
|
||||||
if (GLAD_GL_EXT_geometry_shader) {
|
if (!Global.gfx_usegles || GLAD_GL_EXT_geometry_shader) {
|
||||||
GfxRenderer.Bind_Texture(0, m_icon_atlas);
|
GfxRenderer.Bind_Texture(0, m_icon_atlas);
|
||||||
m_poi_shader->bind();
|
m_poi_shader->bind();
|
||||||
scene_ubs.scene_extra = glm::vec3(1.0f / (surface_size / 200.0f), 1.0f);
|
scene_ubs.scene_extra = glm::vec3(1.0f / (surface_size / 200.0f), 1.0f);
|
||||||
|
|||||||
@@ -186,9 +186,17 @@ void ui::vehicleparams_panel::render_contents()
|
|||||||
|
|
||||||
if (ImGui::Button(LOC_STR(vehicleparams_radiostop)))
|
if (ImGui::Button(LOC_STR(vehicleparams_radiostop)))
|
||||||
m_relay.post(user_command::radiostop, 0.0, 0.0, GLFW_PRESS, 0, vehicle_ptr->GetPosition());
|
m_relay.post(user_command::radiostop, 0.0, 0.0, GLFW_PRESS, 0, vehicle_ptr->GetPosition());
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
|
||||||
if (ImGui::Button(LOC_STR(vehicleparams_reset)))
|
if (ImGui::Button(LOC_STR(vehicleparams_reset)))
|
||||||
m_relay.post(user_command::resettrainset, 0.0, 0.0, GLFW_PRESS, 0, glm::vec3(0.0f), &vehicle_ptr->name());
|
m_relay.post(user_command::resettrainset, 0.0, 0.0, GLFW_PRESS, 0, glm::vec3(0.0f), &vehicle_ptr->name());
|
||||||
|
ImGui::SameLine();
|
||||||
|
|
||||||
|
if (ImGui::Button(LOC_STR(vehicleparams_move500f)))
|
||||||
|
m_relay.post(user_command::dynamicmove, 500.0, 0.0, GLFW_PRESS, 0, glm::vec3(0.0f), &vehicle_ptr->name());
|
||||||
|
ImGui::SameLine();
|
||||||
|
|
||||||
|
if (ImGui::Button(LOC_STR(vehicleparams_move500b)))
|
||||||
|
m_relay.post(user_command::dynamicmove, -500.0, 0.0, GLFW_PRESS, 0, glm::vec3(0.0f), &vehicle_ptr->name());
|
||||||
|
ImGui::SameLine();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user