Skyscraper 2.0
parameterviewer.cpp
Go to the documentation of this file.
1/*
2 Skyscraper 2.0 Alpha - Parameter Viewer Dialog
3 Copyright (C)2003-2024 Ryan Thoryk
4 https://www.skyscrapersim.net
5 https://sourceforge.net/projects/skyscraper/
6 Contact - ryan@skyscrapersim.net
7
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21*/
22
23//(*InternalHeaders(ParameterViewer)
24#include <wx/intl.h>
25#include <wx/string.h>
26//*)
27#include <wx/filedlg.h>
28#include <wx/app.h>
29
30#include "globals.h"
31#include "sbs.h"
32#include "texture.h"
33#include "debugpanel.h"
34#include "vm.h"
35#include "enginecontext.h"
36#include "scriptproc.h"
37#include "objectinfo.h"
38#include "textwindow.h"
39#include "parameterviewer.h"
40
41namespace Skyscraper {
42
43//(*IdInit(ParameterViewer)
44const long ParameterViewer::ID_tDesc = wxNewId();
45const long ParameterViewer::ID_tVariables = wxNewId();
46const long ParameterViewer::ID_STATICTEXT1 = wxNewId();
47const long ParameterViewer::ID_TEXTCTRL1 = wxNewId();
48const long ParameterViewer::ID_STATICTEXT2 = wxNewId();
49const long ParameterViewer::ID_TEXTCTRL2 = wxNewId();
50const long ParameterViewer::ID_STATICTEXT3 = wxNewId();
51const long ParameterViewer::ID_TEXTCTRL3 = wxNewId();
52const long ParameterViewer::ID_STATICTEXT4 = wxNewId();
53const long ParameterViewer::ID_TEXTCTRL4 = wxNewId();
54const long ParameterViewer::ID_STATICTEXT5 = wxNewId();
55const long ParameterViewer::ID_TEXTCTRL5 = wxNewId();
56const long ParameterViewer::ID_STATICTEXT6 = wxNewId();
57const long ParameterViewer::ID_TEXTCTRL6 = wxNewId();
58const long ParameterViewer::ID_STATICTEXT7 = wxNewId();
59const long ParameterViewer::ID_TEXTCTRL7 = wxNewId();
60const long ParameterViewer::ID_STATICTEXT8 = wxNewId();
61const long ParameterViewer::ID_TEXTCTRL8 = wxNewId();
62const long ParameterViewer::ID_STATICTEXT9 = wxNewId();
63const long ParameterViewer::ID_TEXTCTRL9 = wxNewId();
64const long ParameterViewer::ID_STATICTEXT10 = wxNewId();
65const long ParameterViewer::ID_TEXTCTRL10 = wxNewId();
66const long ParameterViewer::ID_l11 = wxNewId();
67const long ParameterViewer::ID_t11 = wxNewId();
68const long ParameterViewer::ID_l12 = wxNewId();
69const long ParameterViewer::ID_t12 = wxNewId();
70const long ParameterViewer::ID_l13 = wxNewId();
71const long ParameterViewer::ID_t13 = wxNewId();
72const long ParameterViewer::ID_l14 = wxNewId();
73const long ParameterViewer::ID_t14 = wxNewId();
74const long ParameterViewer::ID_l15 = wxNewId();
75const long ParameterViewer::ID_t15 = wxNewId();
76const long ParameterViewer::ID_l16 = wxNewId();
77const long ParameterViewer::ID_t16 = wxNewId();
78const long ParameterViewer::ID_l17 = wxNewId();
79const long ParameterViewer::ID_t17 = wxNewId();
80const long ParameterViewer::ID_l18 = wxNewId();
81const long ParameterViewer::ID_t18 = wxNewId();
82const long ParameterViewer::ID_l19 = wxNewId();
83const long ParameterViewer::ID_t19 = wxNewId();
84const long ParameterViewer::ID_l20 = wxNewId();
85const long ParameterViewer::ID_t20 = wxNewId();
86const long ParameterViewer::ID_STATICTEXT11 = wxNewId();
87const long ParameterViewer::ID_tCommand = wxNewId();
88const long ParameterViewer::ID_bCancel = wxNewId();
89const long ParameterViewer::ID_bTextures = wxNewId();
90const long ParameterViewer::ID_bOK = wxNewId();
91//*)
92
93BEGIN_EVENT_TABLE(ParameterViewer,wxDialog)
94 //(*EventTable(ParameterViewer)
95 //*)
96END_EVENT_TABLE()
97
98ParameterViewer::ParameterViewer(DebugPanel* root, wxWindow* parent, wxString object_type, wxString object_parent, bool createobject, wxWindowID id,const wxPoint& pos,const wxSize& size)
99{
100 //(*Initialize(ParameterViewer)
101 wxBoxSizer* BoxSizer1;
102 wxBoxSizer* BoxSizer2;
103 wxFlexGridSizer* FlexGridSizer1;
104 wxFlexGridSizer* FlexGridSizer2;
105 wxFlexGridSizer* FlexGridSizer3;
106
107 Create(parent, wxID_ANY, _("Parameter Viewer"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, _T("wxID_ANY"));
108 FlexGridSizer1 = new wxFlexGridSizer(0, 1, 0, 0);
109 tDesc = new wxStaticText(this, ID_tDesc, _("Desc"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_tDesc"));
110 FlexGridSizer1->Add(tDesc, 1, wxALL|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
111 tVariables = new wxStaticText(this, ID_tVariables, _("Variables"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_tVariables"));
112 FlexGridSizer1->Add(tVariables, 1, wxALL|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
113 BoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
114 FlexGridSizer2 = new wxFlexGridSizer(0, 2, 0, 0);
115 l1 = new wxStaticText(this, ID_STATICTEXT1, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_STATICTEXT1"));
116 FlexGridSizer2->Add(l1, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
117 t1 = new wxTextCtrl(this, ID_TEXTCTRL1, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
118 t1->SetMinSize(wxSize(200,-1));
119 FlexGridSizer2->Add(t1, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
120 l2 = new wxStaticText(this, ID_STATICTEXT2, _("1"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2"));
121 FlexGridSizer2->Add(l2, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
122 t2 = new wxTextCtrl(this, ID_TEXTCTRL2, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL2"));
123 FlexGridSizer2->Add(t2, 1, wxEXPAND, 5);
124 l3 = new wxStaticText(this, ID_STATICTEXT3, _("1"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT3"));
125 FlexGridSizer2->Add(l3, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
126 t3 = new wxTextCtrl(this, ID_TEXTCTRL3, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL3"));
127 FlexGridSizer2->Add(t3, 1, wxEXPAND, 5);
128 l4 = new wxStaticText(this, ID_STATICTEXT4, _("1"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT4"));
129 FlexGridSizer2->Add(l4, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
130 t4 = new wxTextCtrl(this, ID_TEXTCTRL4, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL4"));
131 FlexGridSizer2->Add(t4, 1, wxEXPAND, 5);
132 l5 = new wxStaticText(this, ID_STATICTEXT5, _("1"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT5"));
133 FlexGridSizer2->Add(l5, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
134 t5 = new wxTextCtrl(this, ID_TEXTCTRL5, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL5"));
135 FlexGridSizer2->Add(t5, 1, wxEXPAND, 5);
136 l6 = new wxStaticText(this, ID_STATICTEXT6, _("1"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT6"));
137 FlexGridSizer2->Add(l6, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
138 t6 = new wxTextCtrl(this, ID_TEXTCTRL6, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL6"));
139 FlexGridSizer2->Add(t6, 1, wxEXPAND, 5);
140 l7 = new wxStaticText(this, ID_STATICTEXT7, _("1"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT7"));
141 FlexGridSizer2->Add(l7, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
142 t7 = new wxTextCtrl(this, ID_TEXTCTRL7, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL7"));
143 FlexGridSizer2->Add(t7, 1, wxEXPAND, 5);
144 l8 = new wxStaticText(this, ID_STATICTEXT8, _("1"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT8"));
145 FlexGridSizer2->Add(l8, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
146 t8 = new wxTextCtrl(this, ID_TEXTCTRL8, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL8"));
147 FlexGridSizer2->Add(t8, 1, wxEXPAND, 5);
148 l9 = new wxStaticText(this, ID_STATICTEXT9, _("1"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT9"));
149 FlexGridSizer2->Add(l9, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
150 t9 = new wxTextCtrl(this, ID_TEXTCTRL9, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL9"));
151 FlexGridSizer2->Add(t9, 1, wxEXPAND, 5);
152 l10 = new wxStaticText(this, ID_STATICTEXT10, _("1"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT10"));
153 FlexGridSizer2->Add(l10, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
154 t10 = new wxTextCtrl(this, ID_TEXTCTRL10, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL10"));
155 FlexGridSizer2->Add(t10, 1, wxEXPAND, 5);
156 BoxSizer2->Add(FlexGridSizer2, 1, wxALL|wxALIGN_TOP, 5);
157 FlexGridSizer3 = new wxFlexGridSizer(0, 2, 0, 0);
158 l11 = new wxStaticText(this, ID_l11, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l11"));
159 FlexGridSizer3->Add(l11, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
160 t11 = new wxTextCtrl(this, ID_t11, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t11"));
161 t11->SetMinSize(wxSize(200,-1));
162 FlexGridSizer3->Add(t11, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
163 l12 = new wxStaticText(this, ID_l12, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l12"));
164 FlexGridSizer3->Add(l12, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
165 t12 = new wxTextCtrl(this, ID_t12, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t12"));
166 t12->SetMinSize(wxSize(200,-1));
167 FlexGridSizer3->Add(t12, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
168 l13 = new wxStaticText(this, ID_l13, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l13"));
169 FlexGridSizer3->Add(l13, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
170 t13 = new wxTextCtrl(this, ID_t13, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t13"));
171 t13->SetMinSize(wxSize(200,-1));
172 FlexGridSizer3->Add(t13, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
173 l14 = new wxStaticText(this, ID_l14, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l14"));
174 FlexGridSizer3->Add(l14, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
175 t14 = new wxTextCtrl(this, ID_t14, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t14"));
176 t14->SetMinSize(wxSize(200,-1));
177 FlexGridSizer3->Add(t14, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
178 l15 = new wxStaticText(this, ID_l15, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l15"));
179 FlexGridSizer3->Add(l15, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
180 t15 = new wxTextCtrl(this, ID_t15, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t15"));
181 t15->SetMinSize(wxSize(200,-1));
182 FlexGridSizer3->Add(t15, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
183 l16 = new wxStaticText(this, ID_l16, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l16"));
184 FlexGridSizer3->Add(l16, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
185 t16 = new wxTextCtrl(this, ID_t16, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t16"));
186 t16->SetMinSize(wxSize(200,-1));
187 FlexGridSizer3->Add(t16, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
188 l17 = new wxStaticText(this, ID_l17, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l17"));
189 FlexGridSizer3->Add(l17, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
190 t17 = new wxTextCtrl(this, ID_t17, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t17"));
191 t17->SetMinSize(wxSize(200,-1));
192 FlexGridSizer3->Add(t17, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
193 l18 = new wxStaticText(this, ID_l18, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l18"));
194 FlexGridSizer3->Add(l18, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
195 t18 = new wxTextCtrl(this, ID_t18, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t18"));
196 t18->SetMinSize(wxSize(200,-1));
197 FlexGridSizer3->Add(t18, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
198 l19 = new wxStaticText(this, ID_l19, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l19"));
199 FlexGridSizer3->Add(l19, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
200 t19 = new wxTextCtrl(this, ID_t19, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t19"));
201 t19->SetMinSize(wxSize(200,-1));
202 FlexGridSizer3->Add(t19, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
203 l20 = new wxStaticText(this, ID_l20, _("1"), wxDefaultPosition, wxSize(150,-1), 0, _T("ID_l20"));
204 FlexGridSizer3->Add(l20, 1, wxRIGHT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
205 t20 = new wxTextCtrl(this, ID_t20, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_t20"));
206 t20->SetMinSize(wxSize(200,-1));
207 FlexGridSizer3->Add(t20, 1, wxALIGN_LEFT|wxALIGN_TOP, 5);
208 BoxSizer2->Add(FlexGridSizer3, 1, wxALL|wxALIGN_TOP, 5);
209 FlexGridSizer1->Add(BoxSizer2, 1, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 5);
210 StaticText1 = new wxStaticText(this, ID_STATICTEXT11, _("Script Command:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT11"));
211 FlexGridSizer1->Add(StaticText1, 1, wxALL|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
212 tCommand = new wxTextCtrl(this, ID_tCommand, _("Command"), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tCommand"));
213 FlexGridSizer1->Add(tCommand, 1, wxALL|wxEXPAND, 5);
214 BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
215 bCancel = new wxButton(this, ID_bCancel, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bCancel"));
216 BoxSizer1->Add(bCancel, 1, wxALL|wxALIGN_TOP, 5);
217 bTextures = new wxButton(this, ID_bTextures, _("List Textures"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bTextures"));
218 BoxSizer1->Add(bTextures, 1, wxALL|wxALIGN_TOP, 5);
219 bOK = new wxButton(this, ID_bOK, _("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bOK"));
220 BoxSizer1->Add(bOK, 1, wxALL|wxALIGN_TOP, 5);
221 FlexGridSizer1->Add(BoxSizer1, 1, wxALL|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
222 SetSizer(FlexGridSizer1);
223 FlexGridSizer1->Fit(this);
224 FlexGridSizer1->SetSizeHints(this);
225 Center();
226
227 Connect(ID_TEXTCTRL1,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
228 Connect(ID_TEXTCTRL2,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
229 Connect(ID_TEXTCTRL3,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
230 Connect(ID_TEXTCTRL4,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
231 Connect(ID_TEXTCTRL5,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
232 Connect(ID_TEXTCTRL6,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
233 Connect(ID_TEXTCTRL7,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
234 Connect(ID_TEXTCTRL8,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
235 Connect(ID_TEXTCTRL9,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
236 Connect(ID_TEXTCTRL10,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
237 Connect(ID_t11,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
238 Connect(ID_t12,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
239 Connect(ID_t13,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
240 Connect(ID_t14,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
241 Connect(ID_t15,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
242 Connect(ID_t16,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
243 Connect(ID_t17,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
244 Connect(ID_t18,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
245 Connect(ID_t19,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
246 Connect(ID_t20,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&ParameterViewer::ChangeParam);
247 Connect(ID_bCancel,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&ParameterViewer::On_bCancel_Click);
248 Connect(ID_bTextures,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&ParameterViewer::On_bTextures_Click);
249 Connect(ID_bOK,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&ParameterViewer::On_bOK_Click);
250 //*)
251 objecttype = object_type;
252 objectparent = object_parent;
253 create = createobject;
254 Simcore = 0;
255 panel = root;
256 Setup();
257}
258
260{
261 //(*Destroy(ParameterViewer)
262 //*)
263}
264
266{
267 //set up parameter dialog
268
270
271 if (create == true)
272 {
273 if (objecttype == wxT("Load") && objectparent == wxT("Texture"))
274 {
275 SetTitle(wxT("Load Texture"));
276
277 wxString newlabel = wxT("Loads a texture.\n");
278 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
279
280 tDesc->SetLabel(newlabel);
281
282 wxFileDialog Selector (0, _("Select a Texture"), _("data/"), _(""), _("Image files (*.jpg *.png *.gif *.tga)|*.jpg;*.png;*.gif;*.tga"), wxFD_OPEN);
283 int result = Selector.ShowModal();
284 if (result == wxID_CANCEL)
285 return false;
286 wxString filename = wxT("data/") + Selector.GetFilename();
287
288 l1->SetLabel(wxT("Filename:"));
289 t1->SetValue(filename);
290
291 l2->SetLabel(wxT("Name:"));
292 l2->SetToolTip(wxT("Name of texture"));
293
294 l3->SetLabel(wxT("Tile X"));
295 l3->SetToolTip(wxT("The values tile_x and tile_y are per-texture multipliers. For example, if you set tile_x to 2, and you specify a texture width (tw) of 2 during an AddFloor command later, the tiling value will be 4 (2 times 2), and the texture will be repeated 4 times horizontally."));
296
297 l4->SetLabel(wxT("Tile Y"));
298 l4->SetToolTip(wxT("The values tile_x and tile_y are per-texture multipliers. For example, if you set tile_x to 2, and you specify a texture width (tw) of 2 during an AddFloor command later, the tiling value will be 4 (2 times 2), and the texture will be repeated 4 times horizontally."));
299
300 l5->SetLabel(wxT("Force*"));
301 l5->SetToolTip(wxT("The force value is optional, and if set to false, autosizing will always be disabled for this texture; if set to true, autosizing will always be enabled."));
302 }
303
304 if (objecttype == wxT("Floor") && objectparent == wxT("Floor"))
305 {
306 SetTitle(wxT("Create Floor"));
307
308 t1->SetValue(SBS::ToString(Simcore->Floors));
309
310 wxString newlabel = wxT("Create a New Floor\nFloors above ground start with 0 (so a 15-story building would have floors 0-14).\nAlso, floors must be made in the proper order: basement levels must be made first in decending order (-1, -2, -3 etc),\nand then above-ground floors in ascending order (0, 1, 2, etc)\n");
311 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
312
313 tDesc->SetLabel(newlabel);
314 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
315
316 l1->SetLabel(wxT("Number:"));
317 l1->SetToolTip(wxT("Number of new floor (such as 1), or a range of floors (such as 5 to 10)"));
318
319 l2->SetLabel(wxT("Name:"));
320 l2->SetToolTip(wxT("the name of the current floor, required\nExample: Name = Floor %floor%"));
321
322 l3->SetLabel(wxT("ID:"));
323 l3->SetToolTip(wxT("the floor indicator name for the current floor, such as L (for Lobby), LL (lower level), M (Mezzanine), etc. This is also used to determine what texture should be loaded for the elevator floor indicators and floor signs. The texture name would be 'Button[ID]' - so if the ID is 10, the texture name would be 'Button10'.\nExample: ID = %floor%"));
324
325 l4->SetLabel(wxT("Type:"));
326 l4->SetToolTip(wxT("the type of floor the current floor is. The types are still being defined, but the currently used ones are Basement, Lobby, Mezzanine, Conference, Office, Service, Skylobby, Hotel, Apartment, Condominium, Restaurant, Observatory, Recreation, Ballroom, Communications, and Roof. (Required)\nExample: Type = Office"));
327
328 l5->SetLabel(wxT("Description*:"));
329 l5->SetToolTip(wxT("description of the current floor, optional\nExample: Description = Offices"));
330
331 l6->SetLabel(wxT("Height:"));
332 l6->SetToolTip(wxT("the floor-to-ceiling height of the current floor, required\nExample: Height = 9.5"));
333
334 l7->SetLabel(wxT("InterfloorHeight:"));
335 l7->SetToolTip(wxT(" the height in feet of the space between floors (below each floor), starting at the floor's altitude, and ending right below the level's floor; required.\nExample: InterfloorHeight = 2.24"));
336
337 l8->SetLabel(wxT("Altitude*:"));
338 l8->SetToolTip(wxT("this parameter is optional and is only recommended if the first level has an interfloor area that needs to be below ground. If this parameter is not used, the altitude will be calculated automatically.\nExample: Altitude = -2.24"));
339
340 l9->SetLabel(wxT("Group*:"));
341 l9->SetToolTip(wxT("group floors together. This is a list of comma-separated floor numbers (or a range specified with the - symbol) that should be enabled along with this floor when the user arrives at this floor. For example, if a 2-story room has a balcony, and the room base and balcony are separate floors, you would specify the other floor's number in this parameter.\nExamples:\nGroup = 5\nGroup = 4, 5\nGroup = 4 - 10"));
342 }
343
344 if (objecttype == wxT("AddFloor") && objectparent == wxT("Floor"))
345 {
346 //t1->SetValue(SBS::ToString(Simcore->Floors));
347
348 SetTitle(wxT("Floor - AddFloor"));
349
350 wxString newlabel = wxT("Adds a textured floor with the specified dimensions to the current floor/level\n");
351 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
352
353 tDesc->SetLabel(newlabel);
354 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
355
356 l1->SetLabel(wxT("Floor Number:"));
357 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
358
359 l2->SetLabel(wxT("Name:"));
360
361 l3->SetLabel(wxT("Texture Name:"));
362
363 l4->SetLabel(wxT("Thickness:"));
364
365 l5->SetLabel(wxT("X1:"));
366
367 l6->SetLabel(wxT("Z1:"));
368
369 l7->SetLabel(wxT("X2:"));
370
371 l8->SetLabel(wxT("Z2:"));
372
373 l9->SetLabel(wxT("Vertical Offset1:"));
374 l9->SetToolTip(wxT("Voffset1 and voffset2 are the height in feet above the current floor's altitude"));
375
376 l10->SetLabel(wxT("Vertical Offset2:"));
377 l10->SetToolTip(wxT("Voffset1 and voffset2 are the height in feet above the current floor's altitude"));
378
379 l11->SetLabel(wxT("Reverse Axis:"));
380 l11->SetToolTip(wxT("If this is false, a difference in voffset will cause the floor to angle from back to front; otherwise it'll angle from left to right."));
381 t11->SetValue(wxT("false"));
382
383 l12->SetLabel(wxT("Texture Direction:"));
384 l12->SetToolTip(wxT("If this is false, the texture will be mapped horizontally; otherwise it'll be mapped vertically"));
385 t12->SetValue(wxT("false"));
386
387 l13->SetLabel(wxT("Texture Tiling Width:"));
388 l13->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
389 t13->SetValue(wxT("0"));
390
391 l14->SetLabel(wxT("Texture Tiling Height:"));
392 l14->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
393 t14->SetValue(wxT("0"));
394
395 l15->SetLabel(wxT("Is External:"));
396 l15->SetToolTip(wxT("isexternal determines if the wall is part of the building's external framework (true) or if it's part of the current floor (false)"));
397 t15->SetValue(wxT("false"));
398 }
399
400 if (objecttype == wxT("AddWall") && objectparent == wxT("Floor"))
401 {
402 //t1->SetValue(SBS::ToString(Simcore->Floors));
403
404 SetTitle(wxT("Floor - AddWall"));
405
406 wxString newlabel = wxT("Adds a textured wall with the specified dimensions to the current floor/level\n");
407 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
408
409 tDesc->SetLabel(newlabel);
410 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
411
412 l1->SetLabel(wxT("Floor Number:"));
413 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
414
415 l2->SetLabel(wxT("Name:"));
416
417 l3->SetLabel(wxT("Texture Name:"));
418
419 l4->SetLabel(wxT("Thickness:"));
420
421 l5->SetLabel(wxT("X1:"));
422
423 l6->SetLabel(wxT("Z1:"));
424
425 l7->SetLabel(wxT("X2:"));
426
427 l8->SetLabel(wxT("Z2:"));
428
429 l9->SetLabel(wxT("Height 1:"));
430 l9->SetToolTip(wxT("Height1 is the wall height in feet at the first coordinate set (x1 and z1), and height2 is for the second set (x2, and z2)"));
431
432 l10->SetLabel(wxT("Height 2:"));
433 l10->SetToolTip(wxT("Height1 is the wall height in feet at the first coordinate set (x1 and z1), and height2 is for the second set (x2, and z2)"));
434
435 l11->SetLabel(wxT("Vertical Offset1:"));
436 l11->SetToolTip(wxT("Voffset1 is the vertical offset in feet (from the floor's altitude) for the first coordinate set, and voffset2 is for the second set"));
437
438 l12->SetLabel(wxT("Vertical Offset2:"));
439 l12->SetToolTip(wxT("Voffset1 is the vertical offset in feet (from the floor's altitude) for the first coordinate set, and voffset2 is for the second set"));
440
441 l13->SetLabel(wxT("Texture Tiling Width:"));
442 l13->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
443 t13->SetValue(wxT("0"));
444
445 l14->SetLabel(wxT("Texture Tiling Height:"));
446 l14->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
447 t14->SetValue(wxT("0"));
448
449 l15->SetLabel(wxT("Is External:"));
450 l15->SetToolTip(wxT("isexternal determines if the wall is part of the building's external framework (true) or if it's part of the current floor (false)"));
451 t15->SetValue(wxT("false"));
452 }
453
454 if (objecttype == wxT("AddInterfloorFloor") && objectparent == wxT("Floor"))
455 {
456 //t1->SetValue(SBS::ToString(Simcore->Floors));
457
458 SetTitle(wxT("Floor - AddInterfloorFloor"));
459
460 wxString newlabel = wxT("Adds a textured floor with the specified dimensions below the current floor/level\n");
461 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
462
463 tDesc->SetLabel(newlabel);
464 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
465
466 l1->SetLabel(wxT("Floor Number:"));
467 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
468
469 l2->SetLabel(wxT("Name:"));
470
471 l3->SetLabel(wxT("Texture Name:"));
472
473 l4->SetLabel(wxT("Thickness:"));
474
475 l5->SetLabel(wxT("X1:"));
476
477 l6->SetLabel(wxT("Z1:"));
478
479 l7->SetLabel(wxT("X2:"));
480
481 l8->SetLabel(wxT("Z2:"));
482
483 l9->SetLabel(wxT("Vertical Offset1:"));
484 l9->SetToolTip(wxT("Voffset1 and voffset2 are the height in feet above the current floor's altitude"));
485
486 l10->SetLabel(wxT("Vertical Offset2:"));
487 l10->SetToolTip(wxT("Voffset1 and voffset2 are the height in feet above the current floor's altitude"));
488
489 l11->SetLabel(wxT("Reverse Axis:"));
490 l11->SetToolTip(wxT("If this is false, a difference in voffset will cause the floor to angle from back to front; otherwise it'll angle from left to right."));
491 t11->SetValue(wxT("false"));
492
493 l12->SetLabel(wxT("Texture Direction:"));
494 l12->SetToolTip(wxT("If this is false, the texture will be mapped horizontally; otherwise it'll be mapped vertically"));
495 t12->SetValue(wxT("false"));
496
497 l13->SetLabel(wxT("Texture Tiling Width:"));
498 l13->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
499 t13->SetValue(wxT("0"));
500
501 l14->SetLabel(wxT("Texture Tiling Height:"));
502 l14->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
503 t14->SetValue(wxT("0"));
504 }
505
506 if (objecttype == wxT("AddInterfloorWall") && objectparent == wxT("Floor"))
507 {
508 //t1->SetValue(SBS::ToString(Simcore->Floors));
509
510 SetTitle(wxT("Floor - AddInterfloorWall"));
511
512 wxString newlabel = wxT("Adds a textured wall with the specified dimensions below the current floor/level\n");
513 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
514
515 tDesc->SetLabel(newlabel);
516 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
517
518 l1->SetLabel(wxT("Floor Number:"));
519 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
520
521 l2->SetLabel(wxT("Name:"));
522
523 l3->SetLabel(wxT("Texture Name:"));
524
525 l4->SetLabel(wxT("Thickness:"));
526
527 l5->SetLabel(wxT("X1:"));
528
529 l6->SetLabel(wxT("Z1:"));
530
531 l7->SetLabel(wxT("X2:"));
532
533 l8->SetLabel(wxT("Z2:"));
534
535 l9->SetLabel(wxT("Height 1:"));
536 l9->SetToolTip(wxT("Height1 is the wall height in feet at the first coordinate set (x1 and z1), and height2 is for the second set (x2, and z2)"));
537
538 l10->SetLabel(wxT("Height 2:"));
539 l10->SetToolTip(wxT("Height1 is the wall height in feet at the first coordinate set (x1 and z1), and height2 is for the second set (x2, and z2)"));
540
541 l11->SetLabel(wxT("Vertical Offset1:"));
542 l11->SetToolTip(wxT("Voffset1 is the vertical offset in feet (from the floor's altitude) for the first coordinate set, and voffset2 is for the second set"));
543
544 l12->SetLabel(wxT("Vertical Offset2:"));
545 l12->SetToolTip(wxT("Voffset1 is the vertical offset in feet (from the floor's altitude) for the first coordinate set, and voffset2 is for the second set"));
546
547 l13->SetLabel(wxT("Texture Tiling Width:"));
548 l13->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
549 t13->SetValue(wxT("0"));
550
551 l14->SetLabel(wxT("Texture Tiling Height:"));
552 l14->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
553 t14->SetValue(wxT("0"));
554 }
555
556 if (objecttype == wxT("AddStairsFloor") && objectparent == wxT("Floor"))
557 {
558 //t1->SetValue(SBS::ToString(Simcore->Floors));
559
560 SetTitle(wxT("Floor - AddStairsFloor"));
561
562 wxString newlabel = wxT("Adds a textured floor to the specified stairwell, on the current floor\n");
563 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
564
565 tDesc->SetLabel(newlabel);
566 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
567
568 l1->SetLabel(wxT("Floor Number:"));
569 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
570
571 l2->SetLabel(wxT("Stairwell Number:"));
572
573 l3->SetLabel(wxT("Name:"));
574
575 l4->SetLabel(wxT("Texture Name:"));
576
577 l5->SetLabel(wxT("Thickness:"));
578
579 l6->SetLabel(wxT("X1:"));
580
581 l7->SetLabel(wxT("Z1:"));
582
583 l8->SetLabel(wxT("X2:"));
584
585 l9->SetLabel(wxT("Z2:"));
586
587 l10->SetLabel(wxT("Vertical Offset1:"));
588 l10->SetToolTip(wxT("Voffset1 and voffset2 are the height in feet above the current floor's altitude"));
589
590 l11->SetLabel(wxT("Vertical Offset2:"));
591 l11->SetToolTip(wxT("Voffset1 and voffset2 are the height in feet above the current floor's altitude"));
592
593 l11->SetLabel(wxT("Reverse Axis:"));
594 l11->SetToolTip(wxT("If this is false, a difference in voffset will cause the floor to angle from back to front; otherwise it'll angle from left to right."));
595 t11->SetValue(wxT("false"));
596
597 l12->SetLabel(wxT("Texture Direction:"));
598 l12->SetToolTip(wxT("If this is false, the texture will be mapped horizontally; otherwise it'll be mapped vertically"));
599 t12->SetValue(wxT("false"));
600
601 l13->SetLabel(wxT("Texture Tiling Width:"));
602 l13->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
603 t13->SetValue(wxT("0"));
604
605 l14->SetLabel(wxT("Texture Tiling Height:"));
606 l14->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
607 t14->SetValue(wxT("0"));
608 }
609
610 if (objecttype == wxT("AddStairsWall") && objectparent == wxT("Floor"))
611 {
612 //t1->SetValue(SBS::ToString(Simcore->Floors));
613
614 SetTitle(wxT("Floor - AddStairsWall"));
615
616 wxString newlabel = wxT("Adds a textured wall to the specified stairwell, on the current floor\n");
617 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
618
619 tDesc->SetLabel(newlabel);
620 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
621
622 l1->SetLabel(wxT("Floor Number:"));
623 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
624
625 l2->SetLabel(wxT("Stairwell Number:"));
626
627 l3->SetLabel(wxT("Name:"));
628
629 l4->SetLabel(wxT("Texture Name:"));
630
631 l5->SetLabel(wxT("Thickness:"));
632
633 l6->SetLabel(wxT("X1:"));
634
635 l7->SetLabel(wxT("Z1:"));
636
637 l8->SetLabel(wxT("X2:"));
638
639 l9->SetLabel(wxT("Z2:"));
640
641 l10->SetLabel(wxT("Height 1:"));
642 l10->SetToolTip(wxT("Height1 is the wall height in feet at the first coordinate set (x1 and z1), and height2 is for the second set (x2, and z2)"));
643
644 l11->SetLabel(wxT("Height 2:"));
645 l11->SetToolTip(wxT("Height1 is the wall height in feet at the first coordinate set (x1 and z1), and height2 is for the second set (x2, and z2)"));
646
647 l12->SetLabel(wxT("Vertical Offset1:"));
648 l12->SetToolTip(wxT("Voffset1 is the vertical offset in feet (from the floor's altitude) for the first coordinate set, and voffset2 is for the second set"));
649
650 l13->SetLabel(wxT("Vertical Offset2:"));
651 l13->SetToolTip(wxT("Voffset1 is the vertical offset in feet (from the floor's altitude) for the first coordinate set, and voffset2 is for the second set"));
652
653 l14->SetLabel(wxT("Texture Tiling Width:"));
654 l14->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
655 t14->SetValue(wxT("0"));
656
657 l15->SetLabel(wxT("Texture Tiling Height:"));
658 l15->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
659 t15->SetValue(wxT("0"));
660 }
661
662 if (objecttype == wxT("AddShaftFloor") && objectparent == wxT("Floor"))
663 {
664 //t1->SetValue(SBS::ToString(Simcore->Floors));
665
666 SetTitle(wxT("Floor - AddShaftFloor"));
667
668 wxString newlabel = wxT("Adds a textured floor to the specified shaft, on the current floor\n");
669 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
670
671 tDesc->SetLabel(newlabel);
672 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
673
674 l1->SetLabel(wxT("Floor Number:"));
675 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
676
677 l2->SetLabel(wxT("Shaft Number:"));
678
679 l3->SetLabel(wxT("Name:"));
680
681 l4->SetLabel(wxT("Texture Name:"));
682
683 l5->SetLabel(wxT("Thickness:"));
684
685 l6->SetLabel(wxT("X1:"));
686
687 l7->SetLabel(wxT("Z1:"));
688
689 l8->SetLabel(wxT("X2:"));
690
691 l9->SetLabel(wxT("Z2:"));
692
693 l10->SetLabel(wxT("Vertical Offset1:"));
694 l10->SetToolTip(wxT("Voffset1 and voffset2 are the height in feet above the current floor's altitude"));
695
696 l11->SetLabel(wxT("Vertical Offset2:"));
697 l11->SetToolTip(wxT("Voffset1 and voffset2 are the height in feet above the current floor's altitude"));
698
699 l11->SetLabel(wxT("Reverse Axis:"));
700 l11->SetToolTip(wxT("If this is false, a difference in voffset will cause the floor to angle from back to front; otherwise it'll angle from left to right."));
701 t11->SetValue(wxT("false"));
702
703 l12->SetLabel(wxT("Texture Direction:"));
704 l12->SetToolTip(wxT("If this is false, the texture will be mapped horizontally; otherwise it'll be mapped vertically"));
705 t12->SetValue(wxT("false"));
706
707 l13->SetLabel(wxT("Texture Tiling Width:"));
708 l13->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
709 t13->SetValue(wxT("0"));
710
711 l14->SetLabel(wxT("Texture Tiling Height:"));
712 l14->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
713 t14->SetValue(wxT("0"));
714 }
715
716 if (objecttype == wxT("AddShaftWall") && objectparent == wxT("Floor"))
717 {
718 //t1->SetValue(SBS::ToString(Simcore->Floors));
719
720 SetTitle(wxT("Floor - AddShaftWall"));
721
722 wxString newlabel = wxT("Adds a textured wall to the specified shaft, on the current floor\n");
723 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
724
725 tDesc->SetLabel(newlabel);
726 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
727
728 l1->SetLabel(wxT("Floor Number:"));
729 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
730
731 l2->SetLabel(wxT("Shaft Number:"));
732
733 l3->SetLabel(wxT("Name:"));
734
735 l4->SetLabel(wxT("Texture Name:"));
736
737 l5->SetLabel(wxT("Thickness:"));
738
739 l6->SetLabel(wxT("X1:"));
740
741 l7->SetLabel(wxT("Z1:"));
742
743 l8->SetLabel(wxT("X2:"));
744
745 l9->SetLabel(wxT("Z2:"));
746
747 l10->SetLabel(wxT("Height 1:"));
748 l10->SetToolTip(wxT("Height1 is the wall height in feet at the first coordinate set (x1 and z1), and height2 is for the second set (x2, and z2)"));
749
750 l11->SetLabel(wxT("Height 2:"));
751 l11->SetToolTip(wxT("Height1 is the wall height in feet at the first coordinate set (x1 and z1), and height2 is for the second set (x2, and z2)"));
752
753 l12->SetLabel(wxT("Vertical Offset1:"));
754 l12->SetToolTip(wxT("Voffset1 is the vertical offset in feet (from the floor's altitude) for the first coordinate set, and voffset2 is for the second set"));
755
756 l13->SetLabel(wxT("Vertical Offset2:"));
757 l13->SetToolTip(wxT("Voffset1 is the vertical offset in feet (from the floor's altitude) for the first coordinate set, and voffset2 is for the second set"));
758
759 l14->SetLabel(wxT("Texture Tiling Width:"));
760 l14->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
761 t14->SetValue(wxT("0"));
762
763 l15->SetLabel(wxT("Texture Tiling Height:"));
764 l15->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
765 t15->SetValue(wxT("0"));
766 }
767
768 if (objecttype == wxT("ColumnWallBox") && objectparent == wxT("Floor"))
769 {
770 //t1->SetValue(SBS::ToString(Simcore->Floors));
771
772 SetTitle(wxT("Floor - ColumnWallBox"));
773
774 wxString newlabel = wxT("creates 4 walls (box) at the specified coordinate locations, as part of the current floor's columnframe mesh\n");
775 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
776
777 tDesc->SetLabel(newlabel);
778 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
779
780 l1->SetLabel(wxT("Floor Number:"));
781 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
782
783 l2->SetLabel(wxT("Name:"));
784
785 l3->SetLabel(wxT("Texture Name:"));
786
787 l4->SetLabel(wxT("X1:"));
788
789 l5->SetLabel(wxT("X2:"));
790
791 l6->SetLabel(wxT("Z1:"));
792
793 l7->SetLabel(wxT("Z2:"));
794
795 l8->SetLabel(wxT("Height:"));
796
797 l9->SetLabel(wxT("Vertical Offset:"));
798 l9->SetToolTip(wxT("Voffset is the starting height of the object"));
799
800 l10->SetLabel(wxT("Texture Tiling Width:"));
801 l10->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
802 t10->SetValue(wxT("0"));
803
804 l11->SetLabel(wxT("Texture Tiling Height:"));
805 l11->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
806 t11->SetValue(wxT("0"));
807
808 l12->SetLabel(wxT("Show Inside:"));
809 l12->SetLabel(wxT("Show Outside:"));
810 l12->SetLabel(wxT("Show Top:"));
811 l12->SetLabel(wxT("Show Bottom:"));
812 }
813
814 if (objecttype == wxT("ColumnWallBox2") && objectparent == wxT("Floor"))
815 {
816 //t1->SetValue(SBS::ToString(Simcore->Floors));
817
818 SetTitle(wxT("Floor - ColumnWallBox2"));
819
820 wxString newlabel = wxT("creates 4 walls (box) at a specified central location, as part of the current floor's columnframe mesh \n");
821 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
822
823 tDesc->SetLabel(newlabel);
824 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
825
826 l1->SetLabel(wxT("Floor Number:"));
827 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
828
829 l2->SetLabel(wxT("Name:"));
830
831 l3->SetLabel(wxT("Texture Name:"));
832
833 l4->SetLabel(wxT("CenterX:"));
834
835 l5->SetLabel(wxT("CenterZ:"));
836
837 l6->SetLabel(wxT("WidthX:"));
838
839 l7->SetLabel(wxT("LengthZ:"));
840
841 l8->SetLabel(wxT("Height:"));
842
843 l9->SetLabel(wxT("Vertical Offset:"));
844 l9->SetToolTip(wxT("Voffset is the starting height of the object"));
845
846 l10->SetLabel(wxT("Texture Tiling Width:"));
847 l10->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
848 t10->SetValue(wxT("0"));
849
850 l11->SetLabel(wxT("Texture Tiling Height:"));
851 l11->SetToolTip(wxT("tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False)"));
852 t11->SetValue(wxT("0"));
853
854 l12->SetLabel(wxT("Show Inside:"));
855 l12->SetLabel(wxT("Show Outside:"));
856 l12->SetLabel(wxT("Show Top:"));
857 l12->SetLabel(wxT("Show Bottom:"));
858 }
859
860 if (objecttype == wxT("CreateCallButtons") && objectparent == wxT("Floor"))
861 {
862 //t1->SetValue(SBS::ToString(Simcore->Floors));
863
864 SetTitle(wxT("Floor - CreateCallButtons"));
865
866 wxString newlabel = wxT("creates a call button set\n");
867 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
868
869 tDesc->SetLabel(newlabel);
870 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
871
872 l1->SetLabel(wxT("Floor Number:"));
873 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
874
875 l2->SetLabel(wxT("Elevator List"));
876 l2->SetToolTip(wxT("comma-separated list of elevators the next created call button set will work with (this must be specified before CreateCallButtons)\nExample: 1, 2, 3, 4"));
877
878 l3->SetLabel(wxT("Back Texture:"));
879 l3->SetToolTip(wxT("texture of the wall plate behind the buttons"));
880
881 l4->SetLabel(wxT("Up Button Texture:"));
882 l4->SetToolTip(wxT("UpButtonTexture and DownButtonTexture are the textures used for the buttons themselves (unlit).\nUpButtonTexture_Lit and DownButtonTexture_Lit specify the lit button textures."));
883 l5->SetLabel(wxT("Up Button Texture (lit):"));
884 l5->SetToolTip(wxT("UpButtonTexture and DownButtonTexture are the textures used for the buttons themselves (unlit).\nUpButtonTexture_Lit and DownButtonTexture_Lit specify the lit button textures."));
885 l6->SetLabel(wxT("Down Button Texture:"));
886 l6->SetToolTip(wxT("UpButtonTexture and DownButtonTexture are the textures used for the buttons themselves (unlit).\nUpButtonTexture_Lit and DownButtonTexture_Lit specify the lit button textures."));
887 l7->SetLabel(wxT("Down Button Texture (lit):"));
888 l7->SetToolTip(wxT("UpButtonTexture and DownButtonTexture are the textures used for the buttons themselves (unlit).\nUpButtonTexture_Lit and DownButtonTexture_Lit specify the lit button textures."));
889
890 l8->SetLabel(wxT("CenterX:"));
891 l8->SetToolTip(wxT("the central location of the call button set object"));
892
893 l9->SetLabel(wxT("CenterZ:"));
894 l9->SetToolTip(wxT("the central location of the call button set object"));
895
896 l10->SetLabel(wxT("Vertical Offset:"));
897 l10->SetToolTip(wxT("altitude offset that the object is above each floor"));
898
899 l11->SetLabel(wxT("Direction:"));
900 l11->SetToolTip(wxT("direction determines the direction the call buttons face:\n'front' means they face towards the front of the building\n'back' means they face towards the back of the building\n'left' means they face left\n'right' means they face right"));
901
902 l12->SetLabel(wxT("Back Width:"));
903 l12->SetToolTip(wxT("BackWidth and BackHeight are the width and height of the wall plate"));
904
905 l13->SetLabel(wxT("Back Height:"));
906 l13->SetToolTip(wxT("BackWidth and BackHeight are the width and height of the wall plate"));
907
908 l14->SetLabel(wxT("Show Back:"));
909 l14->SetToolTip(wxT("ShowBack determines if the wall plate should be shown, and is either true or false"));
910
911 l15->SetLabel(wxT("Texture Tiling Width:"));
912 l15->SetToolTip(wxT("tw and th are the texture scaling for the wall plate."));
913 t15->SetValue(wxT("0"));
914
915 l16->SetLabel(wxT("Texture Tiling Height:"));
916 l16->SetToolTip(wxT("tw and th are the texture scaling for the wall plate."));
917 t16->SetValue(wxT("0"));
918 }
919
920 if (objecttype == wxT("AddStairs") && objectparent == wxT("Floor"))
921 {
922 //t1->SetValue(SBS::ToString(Simcore->Floors));
923
924 SetTitle(wxT("Floor - AddStairs"));
925
926 wxString newlabel = wxT("creates a custom staircase at the specified location.\nTo determine the height of the staircase, multiply num_stairs with risersize.\n");
927 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
928
929 tDesc->SetLabel(newlabel);
930 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
931
932 l1->SetLabel(wxT("Floor Number:"));
933 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
934
935 l2->SetLabel(wxT("Stairwell Number:"));
936
937 l3->SetLabel(wxT("Name:"));
938
939 l4->SetLabel(wxT("Texture:"));
940
941 l5->SetLabel(wxT("Direction:"));
942 l5->SetToolTip(wxT("The direction parameter specifies the direction the staircase faces (where the bottom step is), and so if a staircase goes up from left to right, the direction would be left."));
943
944 l6->SetLabel(wxT("CenterX:"));
945
946 l7->SetLabel(wxT("CenterZ:"));
947
948 l8->SetLabel(wxT("Width:"));
949 l8->SetToolTip(wxT("the step width"));
950
951 l9->SetLabel(wxT("Riser Size:"));
952 l9->SetToolTip(wxT("the height of each step riser (vertical portion)"));
953
954 l10->SetLabel(wxT("Tread Size:"));
955 l10->SetToolTip(wxT("the length of each step tread/run (horizontal portion)"));
956
957 l11->SetLabel(wxT("Number of Stairs:"));
958 l11->SetToolTip(wxT("Number of steps - Note that the tread of the top step is not drawn (the top step is the landing platform);\ntherefore for a staircase containing 10 steps, the total staircase width\nwould be comprised of 9 treads (which is why the length calculation used num_stairs minus 1).\n"));
959
960 l12->SetLabel(wxT("Vertical Offset:"));
961 l12->SetToolTip(wxT("altitude offset that the object is above each floor"));
962
963 l13->SetLabel(wxT("Texture Tiling Width:"));
964 t13->SetValue(wxT("0"));
965
966 l14->SetLabel(wxT("Texture Tiling Height:"));
967 t14->SetValue(wxT("0"));
968 }
969
970 if (objecttype == wxT("AddDoor") && objectparent == wxT("Floor"))
971 {
972 //t1->SetValue(SBS::ToString(Simcore->Floors));
973
974 SetTitle(wxT("Floor - AddDoor"));
975
976 wxString newlabel = wxT("adds a textured door in the specified location, and performs a wall cut on that area\n(this must be called after the associated wall is created)\n");
977 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
978
979 tDesc->SetLabel(newlabel);
980 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
981
982 l1->SetLabel(wxT("Floor Number:"));
983 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
984
985 l2->SetLabel(wxT("Open Sound*:"));
986 l2->SetToolTip(wxT("filename of the door open sound"));
987
988 l3->SetLabel(wxT("Close Sound*:"));
989 l3->SetToolTip(wxT("filename of the door close sound"));
990
991 l4->SetLabel(wxT("Open:"));
992 l4->SetToolTip(wxT("determines if the door should be opened on start; default is false."));
993 t4->SetValue(wxT("false"));
994
995 l5->SetLabel(wxT("Texture:"));
996
997 l6->SetLabel(wxT("Thickness:"));
998
999 l7->SetLabel(wxT("Direction:"));
1000 l7->SetToolTip(wxT("Direction specifies the direction the door faces (the side in which the handle is on the left) and also the direction it opens. These are the values:\n1 - faces left, opens left\n2 - faces left, opens right\n3 - faces right, opens right\n4 - faces right, opens left\n5 - faces front, opens front\n6 - faces front, opens back\n7 - faces back, opens back\n8 - faces back, opens front"));
1001
1002 l8->SetLabel(wxT("Speed:"));
1003 t8->SetValue(wxT("75"));
1004 l8->SetToolTip(wxT("The default door speed is 75; you can also specify 0 for the speed to use the system default."));
1005
1006 l9->SetLabel(wxT("CenterX:"));
1007
1008 l10->SetLabel(wxT("CenterZ:"));
1009
1010 l11->SetLabel(wxT("Width:"));
1011 l11->SetToolTip(wxT("the door width"));
1012
1013 l12->SetLabel(wxT("Height:"));
1014 l12->SetToolTip(wxT("the door width"));
1015
1016 l13->SetLabel(wxT("Vertical Offset:"));
1017 l13->SetToolTip(wxT("altitude offset that the object is above each floor"));
1018
1019 l14->SetLabel(wxT("Texture Tiling Width:"));
1020 t14->SetValue(wxT("0"));
1021
1022 l15->SetLabel(wxT("Texture Tiling Height:"));
1023 t15->SetValue(wxT("0"));
1024 }
1025
1026 if (objecttype == wxT("AddStairsDoor") && objectparent == wxT("Floor"))
1027 {
1028 //t1->SetValue(SBS::ToString(Simcore->Floors));
1029
1030 SetTitle(wxT("Floor - AddStairsDoor"));
1031
1032 wxString newlabel = wxT("adds a textured door for the specified stairwell, in a location relative to the stairwell's center.\nThis also performs a wall cut on that area (this must be called after the associated wall is created)\n");
1033 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1034
1035 tDesc->SetLabel(newlabel);
1036 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1037
1038 l1->SetLabel(wxT("Floor Number:"));
1039 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1040
1041 l2->SetLabel(wxT("Stairwell Number:"));
1042
1043 l3->SetLabel(wxT("Open Sound*:"));
1044 l3->SetToolTip(wxT("filename of the door open sound"));
1045
1046 l4->SetLabel(wxT("Close Sound*:"));
1047 l4->SetToolTip(wxT("filename of the door close sound"));
1048
1049 l5->SetLabel(wxT("Open:"));
1050 l5->SetToolTip(wxT("determines if the door should be opened on start; default is false."));
1051 t5->SetValue(wxT("false"));
1052
1053 l6->SetLabel(wxT("Texture:"));
1054
1055 l7->SetLabel(wxT("Thickness:"));
1056
1057 l8->SetLabel(wxT("Direction:"));
1058 l8->SetToolTip(wxT("Direction specifies the direction the door faces (the side in which the handle is on the left) and also the direction it opens. These are the values:\n1 - faces left, opens left\n2 - faces left, opens right\n3 - faces right, opens right\n4 - faces right, opens left\n5 - faces front, opens front\n6 - faces front, opens back\n7 - faces back, opens back\n8 - faces back, opens front"));
1059
1060 l9->SetLabel(wxT("Speed:"));
1061 t9->SetValue(wxT("75"));
1062 l9->SetToolTip(wxT("The default door speed is 75; you can also specify 0 for the speed to use the system default."));
1063
1064 l10->SetLabel(wxT("CenterX:"));
1065
1066 l11->SetLabel(wxT("CenterZ:"));
1067
1068 l12->SetLabel(wxT("Width:"));
1069 l12->SetToolTip(wxT("the door width"));
1070
1071 l13->SetLabel(wxT("Height:"));
1072 l13->SetToolTip(wxT("the door width"));
1073
1074 l14->SetLabel(wxT("Vertical Offset:"));
1075 l14->SetToolTip(wxT("altitude offset that the object is above each floor"));
1076
1077 l15->SetLabel(wxT("Texture Tiling Width:"));
1078 t15->SetValue(wxT("0"));
1079
1080 l16->SetLabel(wxT("Texture Tiling Height:"));
1081 t16->SetValue(wxT("0"));
1082 }
1083
1084 if (objecttype == wxT("AddShaftStdDoor") && objectparent == wxT("Floor"))
1085 {
1086 //t1->SetValue(SBS::ToString(Simcore->Floors));
1087
1088 SetTitle(wxT("Floor - AddShaftStdDoor"));
1089
1090 wxString newlabel = wxT("adds a textured door for the specified shaft, in a location relative to the stairwell's center.\nThis also performs a wall cut on that area (this must be called after the associated wall is created)\n");
1091 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1092
1093 tDesc->SetLabel(newlabel);
1094 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1095
1096 l1->SetLabel(wxT("Floor Number:"));
1097 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1098
1099 l2->SetLabel(wxT("Shaft Number:"));
1100
1101 l3->SetLabel(wxT("Open Sound*:"));
1102 l3->SetToolTip(wxT("filename of the door open sound"));
1103
1104 l4->SetLabel(wxT("Close Sound*:"));
1105 l4->SetToolTip(wxT("filename of the door close sound"));
1106
1107 l5->SetLabel(wxT("Open:"));
1108 l5->SetToolTip(wxT("determines if the door should be opened on start; default is false."));
1109 t5->SetValue(wxT("false"));
1110
1111 l6->SetLabel(wxT("Texture:"));
1112
1113 l7->SetLabel(wxT("Thickness:"));
1114
1115 l8->SetLabel(wxT("Direction:"));
1116 l8->SetToolTip(wxT("Direction specifies the direction the door faces (the side in which the handle is on the left) and also the direction it opens. These are the values:\n1 - faces left, opens left\n2 - faces left, opens right\n3 - faces right, opens right\n4 - faces right, opens left\n5 - faces front, opens front\n6 - faces front, opens back\n7 - faces back, opens back\n8 - faces back, opens front"));
1117
1118 l9->SetLabel(wxT("Speed:"));
1119 t9->SetValue(wxT("75"));
1120 l9->SetToolTip(wxT("The default door speed is 75; you can also specify 0 for the speed to use the system default."));
1121
1122 l10->SetLabel(wxT("CenterX:"));
1123
1124 l11->SetLabel(wxT("CenterZ:"));
1125
1126 l12->SetLabel(wxT("Width:"));
1127 l12->SetToolTip(wxT("the door width"));
1128
1129 l13->SetLabel(wxT("Height:"));
1130 l13->SetToolTip(wxT("the door width"));
1131
1132 l14->SetLabel(wxT("Vertical Offset:"));
1133 l14->SetToolTip(wxT("altitude offset that the object is above each floor"));
1134
1135 l15->SetLabel(wxT("Texture Tiling Width:"));
1136 t15->SetValue(wxT("0"));
1137
1138 l16->SetLabel(wxT("Texture Tiling Height:"));
1139 t16->SetValue(wxT("0"));
1140 }
1141
1142 if (objecttype == wxT("AddShaftDoor") && objectparent == wxT("Floor"))
1143 {
1144 //t1->SetValue(SBS::ToString(Simcore->Floors));
1145
1146 SetTitle(wxT("Floor - AddShaftDoor"));
1147
1148 wxString newlabel = wxT("creates working shaft elevator doors on the current floor only.\nThe other command, AddShaftDoors (in the elevator section) creates all shaft doors in a single command.\nThis command is useful for specifying different textures for shaft doors depending on the floor,\nand also for only creating shaft doors on one side if an elevator serves a specific floor.\nThe SetShaftDoors command in the elevator section must be used before using this command.\nParameters such as width, height, and direction are taken from the AddDoors command\n(so the regular elevator doors need to be created first).\nThese doors should be moved slightly away from the elevator doors (to separate them both).\nAlso, this command cuts any shaft walls that are within the door area\n(and so this must be called after the shaft walls are created).\n");
1149 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1150
1151 tDesc->SetLabel(newlabel);
1152 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1153
1154 l1->SetLabel(wxT("Floor Number:"));
1155 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1156
1157 l2->SetLabel(wxT("Elevator Number:"));
1158
1159 l3->SetLabel(wxT("Number:"));
1160 l3->SetToolTip(wxT("specifies the number of the door to create (related to the Doors command) - if the elevator only has one door, or if the Doors command was not used, specify 1 here."));
1161
1162 l4->SetLabel(wxT("Left Texture:"));
1163 l4->SetToolTip(wxT("texture used on left door"));
1164
1165 l5->SetLabel(wxT("Right Texture:"));
1166 l5->SetToolTip(wxT("texture used on right door"));
1167
1168 l15->SetLabel(wxT("Texture Tiling Width:"));
1169 t15->SetValue(wxT("0"));
1170
1171 l16->SetLabel(wxT("Texture Tiling Height:"));
1172 t16->SetValue(wxT("0"));
1173 }
1174
1175 if (objecttype == wxT("AddFloorIndicator") && objectparent == wxT("Floor"))
1176 {
1177 //t1->SetValue(SBS::ToString(Simcore->Floors));
1178
1179 SetTitle(wxT("Floor - AddFloorIndicator"));
1180
1181 wxString newlabel = wxT("creates a floor indicator associated with a specific elevator\nThis command can be given multiple times to create multiple indicators.\n");
1182 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1183
1184 tDesc->SetLabel(newlabel);
1185 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1186
1187 l1->SetLabel(wxT("Floor Number:"));
1188 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1189
1190 l2->SetLabel(wxT("Elevator Number:"));
1191
1192 l3->SetLabel(wxT("Relative:"));
1193 l3->SetToolTip(wxT("determines if the CenterX and CenterZ values are relative of the elevator's center or not"));
1194
1195 l4->SetLabel(wxT("Texture Prefix:"));
1196 l4->SetToolTip(wxT("the base name of the texture to load when displaying a floor ID; for example if the indicator is on floor 3, and you specify a prefix of 'Button', it'll load the 'Button3' texture."));
1197
1198 l5->SetLabel(wxT("Direction:"));
1199 l5->SetToolTip(wxT("the direction the indicator faces, and can be either left, right, front or back"));
1200
1201 l6->SetLabel(wxT("CenterX:"));
1202 l6->SetToolTip(wxT("floor indicator central position"));
1203
1204 l7->SetLabel(wxT("CenterZ:"));
1205 l7->SetToolTip(wxT("floor indicator central position"));
1206
1207 l8->SetLabel(wxT("Width:"));
1208
1209 l9->SetLabel(wxT("Height:"));
1210
1211 l10->SetLabel(wxT("Vertical Offset:"));
1212 }
1213 if (objecttype == wxT("AddDirectionalIndicator") && objectparent == wxT("Floor"))
1214 {
1215 //t1->SetValue(SBS::ToString(Simcore->Floors));
1216
1217 SetTitle(wxT("Floor - AddDirectionalIndicator"));
1218
1219 wxString newlabel = wxT("creates a single elevator directional indicator/lantern on the current floor (similar to the CreateCallButtons command)\n(if ActiveDirection is false, then it'll only create it if the elevator serves that floor).\nIt'll also automatically create the up and down lights depending on the floor\n");
1220 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1221
1222 tDesc->SetLabel(newlabel);
1223 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1224
1225 l1->SetLabel(wxT("Floor Number:"));
1226 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1227
1228 l2->SetLabel(wxT("Elevator Number:"));
1229 l2->SetToolTip(wxT("specifies the elevator to create the indicators for."));
1230
1231 l3->SetLabel(wxT("Relative:"));
1232 l3->SetToolTip(wxT("determines if the X and Z coordinates are relative to the elevator's origin (center) or not."));
1233
1234 l4->SetLabel(wxT("Active Direction:"));
1235 l4->SetToolTip(wxT("determines if the indicator should continuously display the active elevator direction (true), or if it should show the elevator's direction for the current call (false, default)"));
1236 t4->SetValue(wxT("false"));
1237
1238 l5->SetLabel(wxT("Single:"));
1239 l5->SetToolTip(wxT("determines if a single indicator light should be created instead of two. If this is true, the unlit texture is specified in UpLight, and the DownLight value is ignored."));
1240
1241 l6->SetLabel(wxT("Vertical:"));
1242 l6->SetToolTip(wxT("determines if the two lights should be vertically separated (true), or horizontally separated (false)"));
1243
1244 l7->SetLabel(wxT("Back Texture:"));
1245 l7->SetToolTip(wxT("the texture of the wall plate behind the lights"));
1246
1247 l8->SetLabel(wxT("Up Texture:"));
1248 l8->SetToolTip(wxT("UpTexture and DownTexture are the textures used for the lights themselves, and the 'Lit' texures are the ones to show when the light is on. DownTexture is ignored if Single is true."));
1249 l9->SetLabel(wxT("Up Texture Lit:"));
1250 l9->SetToolTip(wxT("UpTexture and DownTexture are the textures used for the lights themselves, and the 'Lit' texures are the ones to show when the light is on. DownTexture is ignored if Single is true."));
1251 l10->SetLabel(wxT("Down Texture:"));
1252 l10->SetToolTip(wxT("UpTexture and DownTexture are the textures used for the lights themselves, and the 'Lit' texures are the ones to show when the light is on. DownTexture is ignored if Single is true."));
1253 l11->SetLabel(wxT("Down Texture Lit:"));
1254 l11->SetToolTip(wxT("UpTexture and DownTexture are the textures used for the lights themselves, and the 'Lit' texures are the ones to show when the light is on. DownTexture is ignored if Single is true."));
1255
1256 l12->SetLabel(wxT("CenterX:"));
1257 l12->SetToolTip(wxT("CenterX and CenterZ are the central location of the indicators"));
1258
1259 l13->SetLabel(wxT("CenterZ:"));
1260 l13->SetToolTip(wxT("CenterX and CenterZ are the central location of the indicators"));
1261
1262 l14->SetLabel(wxT("Vertical Offset:"));
1263 l14->SetToolTip(wxT("altitude offset that the object is above each floor"));
1264
1265 l15->SetLabel(wxT("Direction:"));
1266 l15->SetToolTip(wxT("direction determines the direction the indicators face:\n'front' means they face towards the front of the building\n'back' means they face towards the back of the buildin\n'left' means they face left\n'right' means they face right"));
1267
1268 l16->SetLabel(wxT("Back Width:"));
1269 l16->SetToolTip(wxT("BackWidth and BackHeight are the width and height of the wall plateh"));
1270
1271 l17->SetLabel(wxT("Back Height:"));
1272 l17->SetToolTip(wxT("BackWidth and BackHeight are the width and height of the wall plate"));
1273
1274 l18->SetLabel(wxT("Show Back:"));
1275 l18->SetToolTip(wxT("ShowBack determines if the wall plate should be shown, and is either true or false"));
1276
1277 l19->SetLabel(wxT("Texture Tiling Width:"));
1278 t19->SetValue(wxT("0"));
1279
1280 l20->SetLabel(wxT("Texture Tiling Height:"));
1281 t20->SetValue(wxT("0"));
1282 }
1283 if (objecttype == wxT("Cut") && objectparent == wxT("Floor"))
1284 {
1285 //t1->SetValue(SBS::ToString(Simcore->Floors));
1286
1287 SetTitle(wxT("Floor - Cut"));
1288
1289 wxString newlabel = wxT("performs a manual box cut on an area within the current floor\n");
1290 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1291
1292 tDesc->SetLabel(newlabel);
1293 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1294
1295 l1->SetLabel(wxT("Floor Number:"));
1296 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1297
1298 l2->SetLabel(wxT("X1:"));
1299 l2->SetToolTip(wxT("First X position (left side)"));
1300
1301 l3->SetLabel(wxT("Y1:"));
1302 l3->SetToolTip(wxT("First Y position (bottom, relative of floor altitude)"));
1303
1304 l4->SetLabel(wxT("Z1:"));
1305 l4->SetToolTip(wxT("First Z position (near side)"));
1306
1307 l5->SetLabel(wxT("X2:"));
1308 l5->SetToolTip(wxT("Second X position (right side)"));
1309
1310 l6->SetLabel(wxT("Y2:"));
1311 l6->SetToolTip(wxT("Second Y position (top, relative of floor altitude)"));
1312
1313 l7->SetLabel(wxT("Z2:"));
1314 l7->SetToolTip(wxT("Second Z position (far side)"));
1315
1316 l8->SetLabel(wxT("Cut Walls:"));
1317 l8->SetToolTip(wxT("If cutwalls is true, the function will cut walls"));
1318 t8->SetValue(wxT("true"));
1319
1320 l9->SetLabel(wxT("Cut Floors:"));
1321 l9->SetToolTip(wxT("If cutfloors is true, the function will cut floors"));
1322 t9->SetValue(wxT("true"));
1323 }
1324 if (objecttype == wxT("CutAll") && objectparent == wxT("Floor"))
1325 {
1326 //t1->SetValue(SBS::ToString(Simcore->Floors));
1327
1328 SetTitle(wxT("Floor - CutAll"));
1329
1330 wxString newlabel = wxT("performs a manual box cut on all objects associated with the current floor (the level itself, interfloor, shafts, stairs and external)\n");
1331 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1332
1333 tDesc->SetLabel(newlabel);
1334 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1335
1336 l1->SetLabel(wxT("Floor Number:"));
1337 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1338
1339 l2->SetLabel(wxT("X1:"));
1340 l2->SetToolTip(wxT("First X position (left side)"));
1341
1342 l3->SetLabel(wxT("Y1:"));
1343 l3->SetToolTip(wxT("First Y position (bottom, relative of floor altitude)"));
1344
1345 l4->SetLabel(wxT("Z1:"));
1346 l4->SetToolTip(wxT("First Z position (near side)"));
1347
1348 l5->SetLabel(wxT("X2:"));
1349 l5->SetToolTip(wxT("Second X position (right side)"));
1350
1351 l6->SetLabel(wxT("Y2:"));
1352 l6->SetToolTip(wxT("Second Y position (top, relative of floor altitude)"));
1353
1354 l7->SetLabel(wxT("Z2:"));
1355 l7->SetToolTip(wxT("Second Z position (far side)"));
1356
1357 l8->SetLabel(wxT("Cut Walls:"));
1358 l8->SetToolTip(wxT("If cutwalls is true, the function will cut walls"));
1359 t8->SetValue(wxT("true"));
1360
1361 l9->SetLabel(wxT("Cut Floors:"));
1362 l9->SetToolTip(wxT("If cutfloors is true, the function will cut floors"));
1363 t9->SetValue(wxT("true"));
1364 }
1365 if (objecttype == wxT("AddFillerWalls") && objectparent == wxT("Floor"))
1366 {
1367 //t1->SetValue(SBS::ToString(Simcore->Floors));
1368
1369 SetTitle(wxT("Floor - AddFillerWalls"));
1370
1371 wxString newlabel = wxT("helper function to add fillers around a door's cut location.\nWhen a door is created, the wall in it's location is cut to provide space; after the cut, the sides are open (if the wall has thickness) -\nthis creates a covering wall on each side and a floor above the door frame to fill the area.\n");
1372 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1373
1374 tDesc->SetLabel(newlabel);
1375 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1376
1377 l1->SetLabel(wxT("Floor Number:"));
1378 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1379
1380 l2->SetLabel(wxT("Texture:"));
1381
1382 l3->SetLabel(wxT("Thickness:"));
1383
1384 l4->SetLabel(wxT("CenterX:"));
1385
1386 l5->SetLabel(wxT("CenterZ:"));
1387
1388 l6->SetLabel(wxT("Width:"));
1389
1390 l7->SetLabel(wxT("Height:"));
1391
1392 l8->SetLabel(wxT("Vertical Offset:"));
1393
1394 l9->SetLabel(wxT("Direction:"));
1395 l9->SetToolTip(wxT("Direction is either true if the door faces the front/back (width is along the X axis), or false if the door faces left/right (width is along the Z axis)."));
1396 t9->SetValue(wxT("true"));
1397
1398 l10->SetLabel(wxT("Texture Tiling Width:"));
1399 l10->SetToolTip(wxT(""));
1400 t10->SetValue(wxT("0"));
1401
1402 l11->SetLabel(wxT("Texture Tiling Height:"));
1403 l11->SetToolTip(wxT(""));
1404 t11->SetValue(wxT("0"));
1405 }
1406 if (objecttype == wxT("AddSound") && objectparent == wxT("Floor"))
1407 {
1408 //t1->SetValue(SBS::ToString(Simcore->Floors));
1409
1410 SetTitle(wxT("Floor - AddSound"));
1411
1412 wxString newlabel = wxT("creates a user-defined sound at the specified position\n");
1413 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1414
1415 tDesc->SetLabel(newlabel);
1416 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1417
1418 l1->SetLabel(wxT("Floor Number:"));
1419 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1420
1421 l2->SetLabel(wxT("Name:"));
1422
1423 l3->SetLabel(wxT("Filename:"));
1424
1425 l4->SetLabel(wxT("X:"));
1426
1427 l5->SetLabel(wxT("Y:"));
1428
1429 l6->SetLabel(wxT("Z:"));
1430
1431 l7->SetLabel(wxT("Loop:"));
1432 t7->SetValue(wxT("true"));
1433 l7->SetToolTip(wxT("Loop specifies if the sound should loop and play on startup"));
1434
1435 l8->SetLabel(wxT("Volume:"));
1436 t8->SetValue(wxT("1"));
1437 l8->SetToolTip(wxT("the volume percentage (with 1.0 being 100%) of the sound"));
1438
1439 l9->SetLabel(wxT("Speed:"));
1440 l9->SetToolTip(wxT("the playback speed of the sound in percent"));
1441 t9->SetValue(wxT("100"));
1442
1443 l10->SetLabel(wxT("Min Distance:"));
1444 t10->SetValue(wxT("1"));
1445 l10->SetToolTip(wxT("min_distance and max_distance set the minimum and maximum distances that the sound can be heard at full volume - by default, minimum is 1 and maximum is -1."));
1446
1447 l11->SetLabel(wxT("Max Distance:"));
1448 t11->SetValue(wxT("-1"));
1449 l11->SetToolTip(wxT("min_distance and max_distance set the minimum and maximum distances that the sound can be heard at full volume - by default, minimum is 1 and maximum is -1."));
1450
1451 l12->SetLabel(wxT("Doppler Level:"));
1452 t12->SetValue(wxT("0"));
1453 l12->SetToolTip(wxT("the doppler scale for the sound (0 means off, the default, 1 is normal, 5 is max)"));
1454
1455 l13->SetLabel(wxT("Cone Inside Angle:"));
1456 t13->SetValue(wxT("360"));
1457 l13->SetToolTip(wxT(" the angle within which the sound is at it's normal volume (default 360)"));
1458
1459 l14->SetLabel(wxT("Cone Outside Angle:"));
1460 t14->SetValue(wxT("360"));
1461 l14->SetToolTip(wxT("the outside angle that the sound is at it's normal volume (default 360, shouldn't be less than the inside angle)"));
1462
1463 l15->SetLabel(wxT("Cone Outside Volume:"));
1464 t15->SetValue(wxT("1"));
1465 l15->SetToolTip(wxT("the volume level of the sound outside (0.0 to 1.0, default 1.0)"));
1466
1467 l16->SetLabel(wxT("DirectionX:"));
1468 t16->SetValue(wxT("0"));
1469 l16->SetToolTip(wxT("Direction of the sound cone"));
1470
1471 l17->SetLabel(wxT("DirectionY:"));
1472 t17->SetValue(wxT("0"));
1473 l17->SetToolTip(wxT("Direction of the sound cone"));
1474
1475 l18->SetLabel(wxT("DirectionZ:"));
1476 t18->SetValue(wxT("0"));
1477 l18->SetToolTip(wxT("Direction of the sound cone"));
1478
1479 }
1480 if (objecttype == wxT("AddShaftDoorComponent") && objectparent == wxT("Floor"))
1481 {
1482 //t1->SetValue(SBS::ToString(Simcore->Floors));
1483
1484 SetTitle(wxT("Floor - AddShaftDoorComponent"));
1485
1486 wxString newlabel = wxT("creates a single shaft door component, used for creating custom door styles\n");
1487 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1488
1489 tDesc->SetLabel(newlabel);
1490 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1491
1492 l1->SetLabel(wxT("Floor Number:"));
1493 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1494
1495 l2->SetLabel(wxT("Elevator:"));
1496
1497 l3->SetLabel(wxT("Number:"));
1498 l3->SetToolTip(wxT("the number of the door to create (related to the Doors command) - if the elevator only has one door, or if the Doors command was not used, specify 1 here"));
1499
1500 l4->SetLabel(wxT("Name:"));
1501
1502 l5->SetLabel(wxT("Texture:"));
1503 l5->SetToolTip(wxT("the texture used on the main (front and back) sides of the door"));
1504
1505 l6->SetLabel(wxT("Side Texture:"));
1506 l6->SetToolTip(wxT("the texture used on the sides (and top/bottom) of the door"));
1507
1508 l7->SetLabel(wxT("Thickness:"));
1509 l7->SetToolTip(wxT("Loop specifies if the sound should loop and play on startup"));
1510
1511 l8->SetLabel(wxT("Direction:"));
1512 l8->SetToolTip(wxT("Direction is either Up, Down, Left (or Front; is the same), or Right (or Back; is also the same)"));
1513
1514 l9->SetLabel(wxT("Open Speed:"));
1515
1516 l10->SetLabel(wxT("Close Speed:"));
1517
1518 l11->SetLabel(wxT("X1:"));
1519
1520 l12->SetLabel(wxT("Z1:"));
1521
1522 l13->SetLabel(wxT("X2:"));
1523
1524 l14->SetLabel(wxT("Z2:"));
1525
1526 l15->SetLabel(wxT("Height:"));
1527
1528 l16->SetLabel(wxT("Vertical Offset:"));
1529 t16->SetValue(wxT("0"));
1530
1531 l17->SetLabel(wxT("Texture Tiling Width:"));
1532 t17->SetValue(wxT("0"));
1533
1534 l18->SetLabel(wxT("Texture Tiling Height:"));
1535 t18->SetValue(wxT("0"));
1536
1537 l19->SetLabel(wxT("Side Texture Tiling Width:"));
1538 t19->SetValue(wxT("0"));
1539
1540 l20->SetLabel(wxT("Side Texture Tiling Height:"));
1541 t20->SetValue(wxT("0"));
1542 }
1543 if (objecttype == wxT("FinishShaftDoor") && objectparent == wxT("Floor"))
1544 {
1545 //t1->SetValue(SBS::ToString(Simcore->Floors));
1546
1547 SetTitle(wxT("Floor - FinishShaftDoor"));
1548
1549 wxString newlabel = wxT("finishes shaft door creation - use this after all related AddShaftDoorComponent commands are used,\nor specify it without the AddShaftDoorComponent commands if you're creating a manual shaft door.\n");
1550 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1551
1552 tDesc->SetLabel(newlabel);
1553 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1554
1555 l1->SetLabel(wxT("Floor Number:"));
1556 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1557
1558 l2->SetLabel(wxT("Elevator:"));
1559
1560 l3->SetLabel(wxT("Number:"));
1561 }
1562 if (objecttype == wxT("AddModel") && objectparent == wxT("Floor"))
1563 {
1564 //t1->SetValue(SBS::ToString(Simcore->Floors));
1565
1566 SetTitle(wxT("Floor - AddModel"));
1567
1568 wxString newlabel = wxT("adds a 3D model to the floor.\nThe model's textures/materials must be defined in a separate '.material' file, and a separate collider mesh '.collider' will be loaded.\nIf a collider mesh isn't available, a simple box collider will be created.\n");
1569 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1570
1571 tDesc->SetLabel(newlabel);
1572 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1573
1574 l1->SetLabel(wxT("Floor Number:"));
1575 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1576
1577 l2->SetLabel(wxT("Name:"));
1578
1579 l3->SetLabel(wxT("Filename:"));
1580
1581 l4->SetLabel(wxT("AutoCenter:"));
1582 t4->SetValue(wxT("true"));
1583 l4->SetToolTip(wxT("either true or false, and determines if the loaded model should be automatically centered, otherwise the exact mesh positioning in the model file will be used"));
1584
1585 l5->SetLabel(wxT("Center X:"));
1586
1587 l6->SetLabel(wxT("Center Y:"));
1588 l6->SetToolTip(wxT("The CenterY value is relative to the current floor's base"));
1589
1590 l7->SetLabel(wxT("Center Z:"));
1591
1592 l8->SetLabel(wxT("Rotation X:"));
1593 t8->SetValue(wxT("0"));
1594
1595 l9->SetLabel(wxT("Rotation Y:"));
1596 t9->SetValue(wxT("0"));
1597
1598 l10->SetLabel(wxT("Rotation Z:"));
1599 t10->SetValue(wxT("0"));
1600
1601 l11->SetLabel(wxT("Max Render Distance::"));
1602 t11->SetValue(wxT("0"));
1603 l11->SetToolTip(wxT("the maximum distance in feet that the object will be shown (0 means unlimited)"));
1604
1605 l12->SetLabel(wxT("Scale Multiplier:"));
1606 t12->SetValue(wxT("1"));
1607 l12->SetToolTip(wxT("allows you to change the size of the object during the load - for example, set to 2 to double the size"));
1608
1609 l13->SetLabel(wxT("Enable Physics:"));
1610 t13->SetValue(wxT("false"));
1611 l13->SetToolTip(wxT("enables Bullet physics on the object (physics will only work if you don't provide a collider mesh)"));
1612
1613 l14->SetLabel(wxT("Physics Restitution:"));
1614 t14->SetValue(wxT("0.1"));
1615
1616 l15->SetLabel(wxT("Physics Friction:"));
1617 t15->SetValue(wxT("0.5"));
1618
1619 l16->SetLabel(wxT("Physics Mass:"));
1620 t16->SetValue(wxT("0.1"));
1621 }
1622 if (objecttype == wxT("AddStairsModel") && objectparent == wxT("Floor"))
1623 {
1624 //t1->SetValue(SBS::ToString(Simcore->Floors));
1625
1626 SetTitle(wxT("Floor - AddStairsModel"));
1627
1628 wxString newlabel = wxT("adds a 3D model to the specified stairwell, on the current floor.\nThe model's textures/materials must be defined in a separate '.material' file, and a separate collider mesh '.collider' will be loaded.\nIf a collider mesh isn't available, a simple box collider will be created.\n");
1629 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1630
1631 tDesc->SetLabel(newlabel);
1632 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1633
1634 l1->SetLabel(wxT("Floor Number:"));
1635 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1636
1637 l2->SetLabel(wxT("Stairwell Number:"));
1638
1639 l3->SetLabel(wxT("Name:"));
1640
1641 l4->SetLabel(wxT("Filename:"));
1642
1643 l5->SetLabel(wxT("AutoCenter:"));
1644 t5->SetValue(wxT("true"));
1645 l5->SetToolTip(wxT("either true or false, and determines if the loaded model should be automatically centered, otherwise the exact mesh positioning in the model file will be used"));
1646
1647 l6->SetLabel(wxT("Center X:"));
1648
1649 l7->SetLabel(wxT("Center Y:"));
1650 l7->SetToolTip(wxT("The CenterY value is relative to the current floor's base"));
1651
1652 l8->SetLabel(wxT("Center Z:"));
1653
1654 l9->SetLabel(wxT("Rotation X:"));
1655 t9->SetValue(wxT("0"));
1656
1657 l10->SetLabel(wxT("Rotation Y:"));
1658 t10->SetValue(wxT("0"));
1659
1660 l11->SetLabel(wxT("Rotation Z:"));
1661 t11->SetValue(wxT("0"));
1662
1663 l12->SetLabel(wxT("Max Render Distance::"));
1664 t12->SetValue(wxT("0"));
1665 l12->SetToolTip(wxT("the maximum distance in feet that the object will be shown (0 means unlimited)"));
1666
1667 l13->SetLabel(wxT("Scale Multiplier:"));
1668 t13->SetValue(wxT("1"));
1669 l13->SetToolTip(wxT("allows you to change the size of the object during the load - for example, set to 2 to double the size"));
1670
1671 l14->SetLabel(wxT("Enable Physics:"));
1672 t14->SetValue(wxT("false"));
1673 l14->SetToolTip(wxT("enables Bullet physics on the object (physics will only work if you don't provide a collider mesh)"));
1674
1675 l15->SetLabel(wxT("Physics Restitution:"));
1676 t15->SetValue(wxT("0.1"));
1677
1678 l16->SetLabel(wxT("Physics Friction:"));
1679 t16->SetValue(wxT("0.5"));
1680
1681 l17->SetLabel(wxT("Physics Mass:"));
1682 t17->SetValue(wxT("0.1"));
1683 }
1684 if (objecttype == wxT("AddShaftModel") && objectparent == wxT("Floor"))
1685 {
1686 //t1->SetValue(SBS::ToString(Simcore->Floors));
1687
1688 SetTitle(wxT("Floor - AddShaftModel"));
1689
1690 wxString newlabel = wxT("adds a 3D model to the specified shaft, on the current floor.\nThe model's textures/materials must be defined in a separate '.material' file, and a separate collider mesh '.collider' will be loaded.\nIf a collider mesh isn't available, a simple box collider will be created.\n");
1691 newlabel = newlabel + wxT("Items with an asterisk (*) are optional.\nMove mouse over parameter name for help");
1692
1693 tDesc->SetLabel(newlabel);
1694 tVariables->SetLabel(wxT("Parameters:\n%floor% - contains the current floor number\n%height% - contains the current floor's ceiling height\n%interfloorheight% - contains the current floor's interfloor height (spacing between floors)\n%fullheight% - contains the current floor's total height, including the interfloor height\n%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default),\n then Base refers to the floor's altitude plus interfloor height; otherwise it's the floor's altitude\n"));
1695
1696 l1->SetLabel(wxT("Floor Number:"));
1697 l1->SetToolTip(wxT("Number of floor (such as 1), or a range of floors (such as 5 to 10)"));
1698
1699 l2->SetLabel(wxT("Shaft Number:"));
1700
1701 l3->SetLabel(wxT("Name:"));
1702
1703 l4->SetLabel(wxT("Filename:"));
1704
1705 l5->SetLabel(wxT("AutoCenter:"));
1706 t5->SetValue(wxT("true"));
1707 l5->SetToolTip(wxT("either true or false, and determines if the loaded model should be automatically centered, otherwise the exact mesh positioning in the model file will be used"));
1708
1709 l6->SetLabel(wxT("Center X:"));
1710
1711 l7->SetLabel(wxT("Center Y:"));
1712 l7->SetToolTip(wxT("The CenterY value is relative to the current floor's base"));
1713
1714 l8->SetLabel(wxT("Center Z:"));
1715
1716 l9->SetLabel(wxT("Rotation X:"));
1717 t9->SetValue(wxT("0"));
1718
1719 l10->SetLabel(wxT("Rotation Y:"));
1720 t10->SetValue(wxT("0"));
1721
1722 l11->SetLabel(wxT("Rotation Z:"));
1723 t11->SetValue(wxT("0"));
1724
1725 l12->SetLabel(wxT("Max Render Distance::"));
1726 t12->SetValue(wxT("0"));
1727 l12->SetToolTip(wxT("the maximum distance in feet that the object will be shown (0 means unlimited)"));
1728
1729 l13->SetLabel(wxT("Scale Multiplier:"));
1730 t13->SetValue(wxT("1"));
1731 l13->SetToolTip(wxT("allows you to change the size of the object during the load - for example, set to 2 to double the size"));
1732
1733 l14->SetLabel(wxT("Enable Physics:"));
1734 t14->SetValue(wxT("false"));
1735 l14->SetToolTip(wxT("enables Bullet physics on the object (physics will only work if you don't provide a collider mesh)"));
1736
1737 l15->SetLabel(wxT("Physics Restitution:"));
1738 t15->SetValue(wxT("0.1"));
1739
1740 l16->SetLabel(wxT("Physics Friction:"));
1741 t16->SetValue(wxT("0.5"));
1742
1743 l17->SetLabel(wxT("Physics Mass:"));
1744 t17->SetValue(wxT("0.1"));
1745 }
1746
1747 if (l1->GetLabel() == wxT("1"))
1748 {
1749 l1->Hide();
1750 t1->Hide();
1751 }
1752 if (l2->GetLabel() == wxT("1"))
1753 {
1754 l2->Hide();
1755 t2->Hide();
1756 }
1757 if (l3->GetLabel() == wxT("1"))
1758 {
1759 l3->Hide();
1760 t3->Hide();
1761 }
1762 if (l4->GetLabel() == wxT("1"))
1763 {
1764 l4->Hide();
1765 t4->Hide();
1766 }
1767 if (l5->GetLabel() == wxT("1"))
1768 {
1769 l5->Hide();
1770 t5->Hide();
1771 }
1772 if (l6->GetLabel() == wxT("1"))
1773 {
1774 l6->Hide();
1775 t6->Hide();
1776 }
1777 if (l7->GetLabel() == wxT("1"))
1778 {
1779 l7->Hide();
1780 t7->Hide();
1781 }
1782 if (l8->GetLabel() == wxT("1"))
1783 {
1784 l8->Hide();
1785 t8->Hide();
1786 }
1787 if (l9->GetLabel() == wxT("1"))
1788 {
1789 l9->Hide();
1790 t9->Hide();
1791 }
1792 if (l10->GetLabel() == wxT("1"))
1793 {
1794 l10->Hide();
1795 t10->Hide();
1796 }
1797 if (l11->GetLabel() == wxT("1"))
1798 {
1799 l11->Hide();
1800 t11->Hide();
1801 }
1802 if (l12->GetLabel() == wxT("1"))
1803 {
1804 l12->Hide();
1805 t12->Hide();
1806 }
1807 if (l13->GetLabel() == wxT("1"))
1808 {
1809 l13->Hide();
1810 t13->Hide();
1811 }
1812 if (l14->GetLabel() == wxT("1"))
1813 {
1814 l14->Hide();
1815 t14->Hide();
1816 }
1817 if (l15->GetLabel() == wxT("1"))
1818 {
1819 l15->Hide();
1820 t15->Hide();
1821 }
1822 if (l16->GetLabel() == wxT("1"))
1823 {
1824 l16->Hide();
1825 t16->Hide();
1826 }
1827 if (l17->GetLabel() == wxT("1"))
1828 {
1829 l17->Hide();
1830 t17->Hide();
1831 }
1832 if (l18->GetLabel() == wxT("1"))
1833 {
1834 l18->Hide();
1835 t18->Hide();
1836 }
1837 if (l19->GetLabel() == wxT("1"))
1838 {
1839 l19->Hide();
1840 t19->Hide();
1841 }
1842 if (l20->GetLabel() == wxT("1"))
1843 {
1844 l20->Hide();
1845 t20->Hide();
1846 }
1847
1848 this->Fit();
1849 this->CentreOnScreen();
1850 }
1851 return true;
1852}
1853
1854void ParameterViewer::On_bCancel_Click(wxCommandEvent& event)
1855{
1856 this->Hide();
1857}
1858
1859void ParameterViewer::On_bOK_Click(wxCommandEvent& event)
1860{
1861 Simcore->DeleteColliders = true;
1863 processor->LoadFromText(std::string(command));
1864 this->Close();
1865}
1866
1867void ParameterViewer::ChangeParam(wxCommandEvent& event)
1868{
1869 //command constructor
1870
1871 if (objecttype == wxT("Load") && objectparent == wxT("Texture"))
1872 {
1873 command = wxT("<Textures>\n");
1874 command = command + wxT("Load " + wxString(t1->GetValue()) + wxT(", "));
1875 command = command + wxString(t2->GetValue()) + wxT(", ");
1876 command = command + wxString(t3->GetValue()) + wxT(", ");
1877 command = command + wxString(t4->GetValue()) + wxT(", ");
1878 command = command + wxString(t5->GetValue()) + wxT("\n");
1879 command = command + wxT("<EndTextures>\n");
1880
1881 tCommand->SetValue(command);
1882 this->Fit();
1883 this->CentreOnScreen();
1884 return;
1885 }
1886
1887 if (objecttype == wxT("Floor") && objectparent == wxT("Floor"))
1888 {
1889 wxString temp = t1->GetValue();
1890 temp.LowerCase();
1891 bool multiple = false;
1892 if (temp.Find(wxT("to")) > 0)
1893 multiple = true;
1894
1895 if (multiple == true)
1896 command = wxT("<Floors ") + wxString(t1->GetValue()) + wxT(">\n");
1897 else
1898 command = wxT("<Floor ") + wxString(t1->GetValue()) + wxT(">\n");
1899 command = command + wxT("Name = ") + wxString(t2->GetValue()) + wxT("\n");
1900 command = command + wxT("ID = ") + wxString(t3->GetValue()) + wxT("\n");
1901 command = command + wxT("Type = ") + wxString(t4->GetValue()) + wxT("\n");
1902 if (t5->IsEmpty() == false)
1903 command = command + wxT("Description = ") + wxString(t5->GetValue()) + wxT("\n");
1904 command = command + wxT("Height = ") + wxString(t6->GetValue()) + wxT("\n");
1905 command = command + wxT("InterfloorHeight = ") + wxString(t7->GetValue()) + wxT("\n");
1906 if (t8->IsEmpty() == false)
1907 command = command + wxT("Altitude = ") + wxString(t8->GetValue()) + wxT("\n");
1908 if (t9->IsEmpty() == false)
1909 command = command + wxT("Group = ") + wxString(t9->GetValue()) + wxT("\n");
1910
1911 if (multiple == true)
1912 command = command + wxT("<EndFloors>\n");
1913 else
1914 command = command + wxT("<EndFloor>\n");
1915
1916 tCommand->SetValue(command);
1917 this->Fit();
1918 this->CentreOnScreen();
1919 return;
1920 }
1921
1922 //generic commands
1923
1924 bool multiple = false;
1925 wxString temp = t1->GetValue();
1926 temp.LowerCase();
1927 if (temp.Find(wxT("to")) > 0)
1928 multiple = true;
1929
1930 if (multiple == true && objectparent == wxT("Floor"))
1931 command = wxT("<Floors ") + wxString(t1->GetValue()) + wxT(">\n");
1932 else
1933 command = wxT("<Floor ") + wxString(t1->GetValue()) + wxT(">\n");
1934
1935 command = command + objecttype + wxT(" ");
1936
1937 if (objecttype == wxT("CreateCallButtons"))
1938 {
1939 command = command + wxT("CallButtonElevators " + wxString(t2->GetValue()) + wxT("\n"));
1940 if (t3->IsShown() == true)
1941 command = command + wxString(t3->GetValue());
1942 }
1943 else
1944 {
1945 if (t2->IsShown() == true)
1946 command = command + wxString(t2->GetValue());
1947 if (t3->IsShown() == true)
1948 command = command + wxT(", ") + wxString(t3->GetValue());
1949 }
1950 if (t4->IsShown() == true)
1951 command = command + wxT(", ") + wxString(t4->GetValue());
1952 if (t5->IsShown() == true)
1953 command = command + wxT(", ") + wxString(t5->GetValue());
1954 if (t6->IsShown() == true)
1955 command = command + wxT(", ") + wxString(t6->GetValue());
1956 if (t7->IsShown() == true)
1957 command = command + wxT(", ") + wxString(t7->GetValue());
1958 if (t8->IsShown() == true)
1959 command = command + wxT(", ") + wxString(t8->GetValue());
1960 if (t9->IsShown() == true)
1961 command = command + wxT(", ") + wxString(t9->GetValue());
1962 if (t10->IsShown() == true)
1963 command = command + wxT(", ") + wxString(t10->GetValue());
1964 if (t11->IsShown() == true)
1965 command = command + wxT(", ") + wxString(t11->GetValue());
1966 if (t12->IsShown() == true)
1967 command = command + wxT(", ") + wxString(t12->GetValue());
1968 if (t13->IsShown() == true)
1969 command = command + wxT(", ") + wxString(t13->GetValue());
1970 if (t14->IsShown() == true)
1971 command = command + wxT(", ") + wxString(t14->GetValue());
1972 if (t15->IsShown() == true)
1973 command = command + wxT(", ") + wxString(t15->GetValue());
1974 if (t16->IsShown() == true)
1975 command = command + wxT(", ") + wxString(t16->GetValue());
1976 if (t17->IsShown() == true)
1977 command = command + wxT(", ") + wxString(t17->GetValue());
1978 if (t18->IsShown() == true)
1979 command = command + wxT(", ") + wxString(t18->GetValue());
1980 if (t19->IsShown() == true)
1981 command = command + wxT(", ") + wxString(t19->GetValue());
1982 if (t20->IsShown() == true)
1983 command = command + wxT(", ") + wxString(t20->GetValue());
1984 command = command + wxT("\n");
1985
1986 if (multiple == true && objectparent == wxT("Floor"))
1987 command = command + wxT("<EndFloors>\n");
1988 else
1989 command = command + wxT("<EndFloor>\n");
1990
1991 tCommand->SetValue(command);
1992 this->Fit();
1993 this->CentreOnScreen();
1994}
1995
1996void ParameterViewer::On_bTextures_Click(wxCommandEvent& event)
1997{
1998 //create text window
1999 TextWindow *twindow = new TextWindow(NULL, -1);
2000 twindow->SetMinSize(wxSize(300, 200));
2001 twindow->tMain->SetMinSize(wxSize(300, 200));
2002 twindow->Fit();
2003 twindow->Center();
2004 twindow->SetTitle(wxT("Loaded Textures"));
2005 twindow->Show(true);
2006 wxString message = Simcore->GetTextureManager()->ListTextures();
2007 twindow->tMain->WriteText(message);
2008 twindow->tMain->SetInsertionPoint(0);
2009}
2010
2011}
2012
TextureManager * GetTextureManager()
Definition sbs.cpp:4558
bool DeleteColliders
Definition sbs.h:184
int Floors
Definition sbs.h:158
std::string ListTextures(bool show_filename=false)
Definition texture.cpp:1600
SBS::SBS * GetSystem()
Definition debugpanel.h:131
ScriptProcessor * GetScriptProcessor()
static const long ID_STATICTEXT1
static const long ID_STATICTEXT8
static const long ID_STATICTEXT10
static const long ID_STATICTEXT9
void On_bCancel_Click(wxCommandEvent &event)
static const long ID_STATICTEXT11
static const long ID_TEXTCTRL10
static const long ID_STATICTEXT2
static const long ID_tVariables
static const long ID_STATICTEXT3
static const long ID_STATICTEXT4
void On_bTextures_Click(wxCommandEvent &event)
void On_bOK_Click(wxCommandEvent &event)
static const long ID_STATICTEXT6
static const long ID_STATICTEXT5
static const long ID_STATICTEXT7
void ChangeParam(wxCommandEvent &event)
bool LoadFromText(const std::string &text)
EngineContext * GetActiveEngine()
Definition vm.h:81
std::string ToString(int number)
Definition globals.cpp:279
TextWindow * twindow
Definition uexception.h:23