4 Skyscraper 1.2 Alpha - Mesh Control Form
5 Copyright (C)2005-2009 Ryan Thoryk
6 http://www.skyscrapersim.com
7 http://sourceforge.net/projects/skyscraper
8 Contact - ryan@tliquest.net
10 This program is free software; you can redistribute it and/or
11 modify it under the terms of the GNU General Public License
12 as published by the Free Software Foundation; either version 2
13 of the License, or (at your option) any later version.
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 //(*InternalHeaders(MeshControl)
27 #include <wx/string.h>
29 #include "debugpanel.h"
30 #include "meshcontrol.h"
37 extern SBS *Simcore; //external pointer to the SBS engine
38 MeshControl *p; //self pointer
40 //(*IdInit(MeshControl)
41 const long MeshControl::ID_chkExternal = wxNewId();
42 const long MeshControl::ID_chkBuildings = wxNewId();
43 const long MeshControl::ID_chkLandscape = wxNewId();
44 const long MeshControl::ID_chkSky = wxNewId();
45 const long MeshControl::ID_chkElevators = wxNewId();
46 const long MeshControl::ID_chkFloor = wxNewId();
47 const long MeshControl::ID_chkShafts = wxNewId();
48 const long MeshControl::ID_chkStairs = wxNewId();
49 const long MeshControl::ID_chkColumnFrame = wxNewId();
50 const long MeshControl::ID_chkAllFloors = wxNewId();
51 const long MeshControl::ID_chkAllShafts = wxNewId();
52 const long MeshControl::ID_chkAllStairs = wxNewId();
53 const long MeshControl::ID_chkAllColumnFrames = wxNewId();
54 const long MeshControl::ID_bOk = wxNewId();
57 BEGIN_EVENT_TABLE(MeshControl,wxDialog)
58 //(*EventTable(MeshControl)
62 MeshControl::MeshControl(wxWindow* parent,wxWindowID id)
64 //(*Initialize(MeshControl)
65 wxStaticBoxSizer* StaticBoxSizer2;
66 wxStaticBoxSizer* StaticBoxSizer3;
67 wxStaticBoxSizer* StaticBoxSizer1;
68 wxBoxSizer* BoxSizer3;
70 Create(parent, wxID_ANY, _("Realtime Mesh Control"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, _T("wxID_ANY"));
71 BoxSizer1 = new wxBoxSizer(wxVERTICAL);
72 BoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
73 StaticBoxSizer1 = new wxStaticBoxSizer(wxVERTICAL, this, _("Global Objects"));
74 chkExternal = new wxCheckBox(this, ID_chkExternal, _("External"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkExternal"));
75 chkExternal->SetValue(false);
76 StaticBoxSizer1->Add(chkExternal, 0, wxTOP|wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
77 chkBuildings = new wxCheckBox(this, ID_chkBuildings, _("Buildings"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkBuildings"));
78 chkBuildings->SetValue(false);
79 StaticBoxSizer1->Add(chkBuildings, 0, wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
80 chkLandscape = new wxCheckBox(this, ID_chkLandscape, _("Landscape"), wxDefaultPosition, wxSize(100,-1), 0, wxDefaultValidator, _T("ID_chkLandscape"));
81 chkLandscape->SetValue(false);
82 StaticBoxSizer1->Add(chkLandscape, 0, wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
83 chkSky = new wxCheckBox(this, ID_chkSky, _("Sky"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkSky"));
84 chkSky->SetValue(false);
85 StaticBoxSizer1->Add(chkSky, 0, wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
86 chkElevators = new wxCheckBox(this, ID_chkElevators, _("Elevators"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkElevators"));
87 chkElevators->SetValue(false);
88 StaticBoxSizer1->Add(chkElevators, 1, wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
89 BoxSizer2->Add(StaticBoxSizer1, 1, wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
90 BoxSizer3 = new wxBoxSizer(wxVERTICAL);
91 StaticBoxSizer2 = new wxStaticBoxSizer(wxVERTICAL, this, _("Per-Floor Objects"));
92 chkFloor = new wxCheckBox(this, ID_chkFloor, _("Level"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkFloor"));
93 chkFloor->SetValue(false);
94 StaticBoxSizer2->Add(chkFloor, 0, wxTOP|wxBOTTOM|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
95 chkShafts = new wxCheckBox(this, ID_chkShafts, _("Shafts"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkShafts"));
96 chkShafts->SetValue(false);
97 StaticBoxSizer2->Add(chkShafts, 1, wxBOTTOM|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
98 chkStairs = new wxCheckBox(this, ID_chkStairs, _("Stairs"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkStairs"));
99 chkStairs->SetValue(false);
100 StaticBoxSizer2->Add(chkStairs, 1, wxBOTTOM|wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
101 chkColumnFrame = new wxCheckBox(this, ID_chkColumnFrame, _("Column Frame"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkColumnFrame"));
102 chkColumnFrame->SetValue(false);
103 StaticBoxSizer2->Add(chkColumnFrame, 1, wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
104 BoxSizer3->Add(StaticBoxSizer2, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
105 StaticBoxSizer3 = new wxStaticBoxSizer(wxVERTICAL, this, _("Grouped Objects"));
106 chkAllFloors = new wxCheckBox(this, ID_chkAllFloors, _("All Floors"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkAllFloors"));
107 chkAllFloors->SetValue(false);
108 StaticBoxSizer3->Add(chkAllFloors, 1, wxTOP|wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
109 chkAllShafts = new wxCheckBox(this, ID_chkAllShafts, _("All Shafts"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkAllShafts"));
110 chkAllShafts->SetValue(false);
111 StaticBoxSizer3->Add(chkAllShafts, 1, wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
112 chkAllStairs = new wxCheckBox(this, ID_chkAllStairs, _("All Stairs"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkAllStairs"));
113 chkAllStairs->SetValue(false);
114 StaticBoxSizer3->Add(chkAllStairs, 1, wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
115 chkAllColumnFrames = new wxCheckBox(this, ID_chkAllColumnFrames, _("All Column Frames"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkAllColumnFrames"));
116 chkAllColumnFrames->SetValue(false);
117 StaticBoxSizer3->Add(chkAllColumnFrames, 1, wxBOTTOM|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
118 BoxSizer3->Add(StaticBoxSizer3, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
119 BoxSizer2->Add(BoxSizer3, 1, wxLEFT|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
120 BoxSizer1->Add(BoxSizer2, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 10);
121 bOk = new wxButton(this, ID_bOk, _("OK"), wxPoint(75,145), wxDefaultSize, 0, wxDefaultValidator, _T("ID_bOk"));
122 BoxSizer1->Add(bOk, 0, wxBOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 10);
124 BoxSizer1->Fit(this);
125 BoxSizer1->SetSizeHints(this);
128 Connect(ID_chkExternal,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkExternal_Click);
129 Connect(ID_chkBuildings,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkBuildings_Click);
130 Connect(ID_chkLandscape,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkLandscape_Click);
131 Connect(ID_chkSky,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkSky_Click);
132 Connect(ID_chkElevators,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkElevators_Click);
133 Connect(ID_chkFloor,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkFloor_Click);
134 Connect(ID_chkShafts,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkShafts_Click);
135 Connect(ID_chkStairs,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkStairs_Click);
136 Connect(ID_chkColumnFrame,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkColumnFrame_Click);
137 Connect(ID_chkAllFloors,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkAllFloors_Click);
138 Connect(ID_chkAllShafts,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkAllShafts_Click);
139 Connect(ID_chkAllStairs,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkAllStairs_Click);
140 Connect(ID_chkAllColumnFrames,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&MeshControl::On_chkAllColumnFrames_Click);
141 Connect(ID_bOk,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&MeshControl::On_bOk_Click);
147 MeshControl::~MeshControl()
152 void MeshControl::OnInit()
154 chkElevators->SetValue(true);
157 void MeshControl::On_bOk_Click(wxCommandEvent& event)
162 void MeshControl::On_chkSky_Click(wxCommandEvent& event)
164 Simcore->EnableSkybox(chkSky->GetValue());
167 void MeshControl::On_chkLandscape_Click(wxCommandEvent& event)
169 Simcore->EnableLandscape(chkLandscape->GetValue());
172 void MeshControl::On_chkBuildings_Click(wxCommandEvent& event)
174 Simcore->EnableBuildings(chkBuildings->GetValue());
177 void MeshControl::On_chkExternal_Click(wxCommandEvent& event)
179 Simcore->EnableExternal(chkExternal->GetValue());
182 void MeshControl::On_chkFloor_Click(wxCommandEvent& event)
184 Simcore->GetFloor(Simcore->camera->CurrentFloor)->Enabled(chkFloor->GetValue());
187 void MeshControl::On_chkElevators_Click(wxCommandEvent& event)
189 if (chkElevators->GetValue() == true)
191 for (int i = 1; i <= Simcore->Elevators(); i++)
192 Simcore->GetElevator(i)->Enabled(true);
196 for (int i = 1; i <= Simcore->Elevators(); i++)
197 Simcore->GetElevator(i)->Enabled(false);
201 void MeshControl::On_chkShafts_Click(wxCommandEvent& event)
203 for (int i = 1; i <= Simcore->Shafts(); i++)
204 Simcore->GetShaft(i)->Enabled(Simcore->camera->CurrentFloor, chkShafts->GetValue(), true);
207 void MeshControl::On_chkStairs_Click(wxCommandEvent& event)
209 for (int i = 1; i <= Simcore->StairsNum(); i++)
210 Simcore->GetStairs(i)->Enabled(Simcore->camera->CurrentFloor, chkStairs->GetValue());
213 void MeshControl::On_chkAllFloors_Click(wxCommandEvent& event)
215 for (int i = -Simcore->Basements; i < Simcore->Floors; i++)
216 Simcore->GetFloor(i)->Enabled(chkAllFloors->GetValue());
219 void MeshControl::On_chkAllShafts_Click(wxCommandEvent& event)
221 for (int i = 1; i <= Simcore->Shafts(); i++)
223 for (int j = -Simcore->Basements; j <= Simcore->Floors; j++)
224 Simcore->GetShaft(i)->Enabled(j, chkAllShafts->GetValue(), true);
228 void MeshControl::On_chkAllStairs_Click(wxCommandEvent& event)
230 for (int i = 1; i <= Simcore->StairsNum(); i++)
232 for (int j = -Simcore->Basements; j <= Simcore->Floors; j++)
233 Simcore->GetStairs(i)->Enabled(j, chkAllStairs->GetValue());
237 void MeshControl::On_chkColumnFrame_Click(wxCommandEvent& event)
239 Simcore->GetFloor(Simcore->camera->CurrentFloor)->EnableColumnFrame(chkColumnFrame->GetValue());
242 void MeshControl::On_chkAllColumnFrames_Click(wxCommandEvent& event)
244 for (int i = -Simcore->Basements; i < Simcore->Floors; i++)
245 Simcore->GetFloor(i)->EnableColumnFrame(chkAllColumnFrames->GetValue());