Made accessor for lines
This commit is contained in:
@@ -314,11 +314,11 @@ protected:
|
||||
editor->get_as_node<ItemList>("%line_buildings_list");
|
||||
items->clear();
|
||||
for (i = 0; i < (int)RoadLinesData::get_singleton()
|
||||
->lines[current_line]
|
||||
->lines(current_line)
|
||||
.buildings.size();
|
||||
i++) {
|
||||
const String &key = RoadLinesData::get_singleton()
|
||||
->lines[current_line]
|
||||
->lines(current_line)
|
||||
.buildings[i]
|
||||
.building_key;
|
||||
items->add_item(key);
|
||||
@@ -615,7 +615,7 @@ Node *RoadLinesEditor::scene()
|
||||
void RoadLinesEditor::update_line_geometry()
|
||||
{
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
if (!rld->lines.has(current_line)) {
|
||||
if (!rld->has_line(current_line)) {
|
||||
if (line_im)
|
||||
line_im->clear();
|
||||
return;
|
||||
@@ -629,16 +629,16 @@ void RoadLinesEditor::update_line_geometry()
|
||||
line_im->set_color(Color(1.0f, 0.0f, 0.0f, 1.0f));
|
||||
line_im->add_vertex(Vector3(0.0f, 100.0f, 0.0f));
|
||||
line_im->end();
|
||||
if (rld->lines[current_line].points.size() > 1) {
|
||||
if (rld->lines(current_line).points.size() > 1) {
|
||||
line_im->begin(Mesh::PRIMITIVE_LINES);
|
||||
for (i = 0;
|
||||
i <
|
||||
(int)rld->lines[current_line].points.size() - 1;
|
||||
(int)rld->lines(current_line).points.size() - 1;
|
||||
i++) {
|
||||
Vector3 pt1 = rld->lines[current_line]
|
||||
Vector3 pt1 = rld->lines(current_line)
|
||||
.points[i]
|
||||
.origin;
|
||||
Vector3 pt2 = rld->lines[current_line]
|
||||
Vector3 pt2 = rld->lines(current_line)
|
||||
.points[i + 1]
|
||||
.origin;
|
||||
line_im->set_color(
|
||||
@@ -659,14 +659,14 @@ void RoadLinesEditor::update_line_geometry()
|
||||
}
|
||||
// FIXME: update line segments on load and when line is changed
|
||||
rld->update_line_segments(current_line);
|
||||
if (rld->lines[current_line].buildings.size() > 1) {
|
||||
if (rld->lines(current_line).buildings.size() > 1) {
|
||||
line_im->begin(Mesh::PRIMITIVE_LINES);
|
||||
for (i = 0;
|
||||
i < (int)rld->lines[current_line].buildings.size();
|
||||
i < (int)rld->lines(current_line).buildings.size();
|
||||
i++) {
|
||||
print_line("idx: " + itos(i));
|
||||
const RoadLinesData::line_building_data &b =
|
||||
rld->lines[current_line].buildings[i];
|
||||
rld->lines(current_line).buildings[i];
|
||||
Vector3 pt = rld->get_point_by_offsets(
|
||||
current_line, b.line_offset,
|
||||
b.normal_offset);
|
||||
@@ -686,14 +686,14 @@ void RoadLinesEditor::update_line_index_ui()
|
||||
{
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
SpinBox *sp_line_index = get_as_node<SpinBox>("%line_index");
|
||||
sp_line_index->set_max(rld->lines[current_line].points.size() - 1);
|
||||
sp_line_index->set_max(rld->lines(current_line).points.size() - 1);
|
||||
sp_line_index->set_min(0);
|
||||
}
|
||||
void RoadLinesEditor::select_line(const String &line_name)
|
||||
{
|
||||
print_line("selected line: " + line_name);
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
assert(rld->lines.has(line_name));
|
||||
assert(rld->has_line(line_name));
|
||||
if (current_line != line_name) {
|
||||
current_line = line_name;
|
||||
update_line_index_ui();
|
||||
@@ -713,7 +713,7 @@ void RoadLinesEditor::select_line(const String &line_name)
|
||||
bool RoadLinesEditor::line_exists(const String &line_name)
|
||||
{
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
return rld->lines.has(line_name);
|
||||
return rld->has_line(line_name);
|
||||
}
|
||||
|
||||
void RoadLinesEditor::line_create_point()
|
||||
@@ -724,8 +724,10 @@ void RoadLinesEditor::line_create_point()
|
||||
Vector3 position = get_cursor_position();
|
||||
Transform xform(Basis(), position);
|
||||
int index = get_line_index();
|
||||
rld->lines[current_line].points.insert(
|
||||
rld->lines[current_line].points.begin() + index + 1, xform);
|
||||
rld->lines(current_line)
|
||||
.points.insert(rld->lines(current_line).points.begin() + index +
|
||||
1,
|
||||
xform);
|
||||
Array args;
|
||||
args.push_back(current_line);
|
||||
EditorEvent::get_singleton()->event.emit("lines_changed_line", args);
|
||||
@@ -742,10 +744,10 @@ void RoadLinesEditor::line_delete_point()
|
||||
print_line("line_delete_point");
|
||||
int index = get_line_index();
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
if (rld->lines[current_line].points.size() < 2)
|
||||
if (rld->lines(current_line).points.size() < 2)
|
||||
return;
|
||||
rld->lines[current_line].points.erase(
|
||||
rld->lines[current_line].points.begin() + index);
|
||||
rld->lines(current_line)
|
||||
.points.erase(rld->lines(current_line).points.begin() + index);
|
||||
Array args;
|
||||
args.push_back(current_line);
|
||||
EditorEvent::get_singleton()->event.emit("lines_changed_line", args);
|
||||
@@ -766,12 +768,12 @@ void RoadLinesEditor::set_point_to_cursor()
|
||||
Spatial *cursor = get_as_node<Spatial>(cursor_name);
|
||||
Transform xform = cursor->get_global_transform();
|
||||
int index = get_line_index();
|
||||
rld->lines[current_line].points[index].origin = xform.origin;
|
||||
rld->lines(current_line).points[index].origin = xform.origin;
|
||||
Array args;
|
||||
args.push_back(current_line);
|
||||
EditorEvent::get_singleton()->event.emit("lines_changed_line", args);
|
||||
update_line_geometry();
|
||||
set_ui_point_position(rld->lines[current_line].points[index].origin);
|
||||
set_ui_point_position(rld->lines(current_line).points[index].origin);
|
||||
}
|
||||
|
||||
int RoadLinesEditor::get_line_index()
|
||||
@@ -787,7 +789,7 @@ void RoadLinesEditor::move_cursor_to_point()
|
||||
print_line("move_cursor_to_point");
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
int index = get_line_index();
|
||||
Transform xform(Basis(), rld->lines[current_line].points[index].origin);
|
||||
Transform xform(Basis(), rld->lines(current_line).points[index].origin);
|
||||
set_cursor_position(xform.origin);
|
||||
set_ui_cursor_position(xform.origin);
|
||||
}
|
||||
@@ -899,7 +901,7 @@ void RoadLinesEditor::update_ui()
|
||||
get_as_node<Control>("%road_lines_buildings")->hide();
|
||||
ItemList *lines_list = get_as_node<ItemList>("%lines_list");
|
||||
List<String> line_keys;
|
||||
rld->lines.get_key_list(&line_keys);
|
||||
rld->get_lines_key_list(&line_keys);
|
||||
List<String>::Element *e = line_keys.front();
|
||||
lines_list->clear();
|
||||
if (!re.is_valid())
|
||||
@@ -942,7 +944,7 @@ void RoadLinesEditor::create_new_line_at_cursor(const String &line_name)
|
||||
rline.pattern = 0;
|
||||
Transform cursor_position(Basis(), get_cursor_position());
|
||||
rline.points.push_back(cursor_position);
|
||||
rld->lines[line_name] = rline;
|
||||
rld->lines(line_name) = rline;
|
||||
update_line_index_ui();
|
||||
update_ui();
|
||||
}
|
||||
@@ -951,9 +953,8 @@ void RoadLinesEditor::delete_current_line()
|
||||
{
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
String delete_line = current_line;
|
||||
const String *k = rld->lines.next(&delete_line);
|
||||
current_line = *k;
|
||||
rld->lines.erase(delete_line);
|
||||
current_line = rld->get_next_line(delete_line);
|
||||
rld->erase_line(delete_line);
|
||||
update_line_index_ui();
|
||||
update_ui();
|
||||
}
|
||||
@@ -976,7 +977,7 @@ void RoadLinesEditor::set_point_position(const Vector3 &position)
|
||||
{
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
int index = get_line_index();
|
||||
rld->lines[current_line].points[index].origin = position;
|
||||
rld->lines(current_line).points[index].origin = position;
|
||||
Array args;
|
||||
args.push_back(current_line);
|
||||
EditorEvent::get_singleton()->event.emit("lines_changed_line", args);
|
||||
@@ -1004,9 +1005,9 @@ void RoadLinesEditor::set_ui_point_position(const Vector3 &point_position)
|
||||
void RoadLinesEditor::set_line_index(int index)
|
||||
{
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
assert(rld->lines.has(current_line));
|
||||
assert(index < (int)rld->lines[current_line].points.size());
|
||||
Vector3 point_position = rld->lines[current_line].points[index].origin;
|
||||
assert(rld->has_line(current_line));
|
||||
assert(index < (int)rld->lines(current_line).points.size());
|
||||
Vector3 point_position = rld->lines(current_line).points[index].origin;
|
||||
Vector3 cursor_position = point_position;
|
||||
set_cursor_position(cursor_position);
|
||||
set_ui_cursor_position(cursor_position);
|
||||
@@ -1227,7 +1228,7 @@ void RoadLinesEditor::save_data()
|
||||
void RoadLinesEditor::update_current_line_metadata(const String &text)
|
||||
{
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
assert(rld->lines.has(current_line));
|
||||
assert(rld->has_line(current_line));
|
||||
if (!text.begins_with("{"))
|
||||
return;
|
||||
String err_s;
|
||||
@@ -1243,13 +1244,13 @@ void RoadLinesEditor::update_current_line_metadata(const String &text)
|
||||
print_line("Invalid metadata type, should be Dictionary");
|
||||
return;
|
||||
}
|
||||
rld->lines[current_line].metadata = v;
|
||||
rld->lines(current_line).metadata = v;
|
||||
}
|
||||
String RoadLinesEditor::get_current_line_metadata() const
|
||||
{
|
||||
RoadLinesData *rld = RoadLinesData::get_singleton();
|
||||
assert(rld->lines.has(current_line));
|
||||
return JSON::print(rld->lines[current_line].metadata, "\t", true);
|
||||
assert(rld->has_line(current_line));
|
||||
return JSON::print(rld->lines(current_line).metadata, "\t", true);
|
||||
}
|
||||
void RoadLinesEditor::remove_generated_stuff()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user