Skip to content

Commit

Permalink
Bended wall corner segments
Browse files Browse the repository at this point in the history
  • Loading branch information
markusmoenig committed Jun 18, 2024
1 parent 7cbbfcf commit b4edd6a
Show file tree
Hide file tree
Showing 16 changed files with 475 additions and 300 deletions.
2 changes: 1 addition & 1 deletion StarterProject.eldiron

Large diffs are not rendered by default.

14 changes: 9 additions & 5 deletions creator/src/editor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -658,11 +658,10 @@ impl TheTrait for Editor {
region.prerendered.albedo.fill([0, 0, 0]);
self.server
.set_prerendered(region.id, region.prerendered.clone());
PRERENDERTHREAD.lock().unwrap().render_region(
region.clone(),
self.project.palette.clone(),
vec![],
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region.clone(), vec![]);
}
}
}
Expand Down Expand Up @@ -1104,6 +1103,11 @@ impl TheTrait for Editor {
// r.models.clear();
// }

PRERENDERTHREAD
.lock()
.unwrap()
.set_palette(self.project.palette.clone());

PRERENDERTHREAD
.lock()
.unwrap()
Expand Down
48 changes: 27 additions & 21 deletions creator/src/modelfxeditor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -478,11 +478,10 @@ impl ModelFXEditor {
project.get_region(&server_ctx.curr_region)
{
let area = region.get_material_area(material_id);
PRERENDERTHREAD.lock().unwrap().render_region(
region.clone(),
project.palette.clone(),
area,
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region.clone(), area);
}

if let Some(widget) = ui.get_widget(&id.name) {
Expand Down Expand Up @@ -556,7 +555,7 @@ impl ModelFXEditor {
//self.render_preview(ui, &project.palette);
} else if id.name.starts_with(":MODELFX:") {
if let Some(name) = id.name.strip_prefix(":MODELFX: ") {
let value = value.clone();
let mut value = value.clone();

if self.editing_mode == EditingMode::Geometry {
if let Some(curr_geo_node) = server_ctx.curr_geo_node {
Expand All @@ -572,6 +571,7 @@ impl ModelFXEditor {
region.find_geo_node(curr_geo_node)
{
old_tiles_to_render.clone_from(&geo_obj.area);

geo_obj.nodes[index].set(name, value);
geo_obj.update_area();

Expand All @@ -590,11 +590,10 @@ impl ModelFXEditor {
}

if let Some(region) = region_to_render {
PRERENDERTHREAD.lock().unwrap().render_region(
region,
project.palette.clone(),
tiles_to_render,
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region, tiles_to_render);
}
} else if let Some(editor) = ui.get_rgba_layout("GeoFX RGBA Layout") {
if let Some(rgba_view) = editor.rgba_view_mut().as_rgba_view() {
Expand All @@ -614,6 +613,15 @@ impl ModelFXEditor {
if let Some(material) = project.materials.get_mut(&material_id) {
if let Some(selected_index) = material.selected_node {
let prev = material.to_json();

if let Some(TheValue::TextList(_, list)) =
material.nodes[selected_index].get(name)
{
if let Some(v) = value.to_i32() {
value = TheValue::TextList(v, list.clone());
}
}

material.nodes[selected_index].set(name, value);
if material.nodes[selected_index].supports_preview {
material.nodes[selected_index]
Expand Down Expand Up @@ -663,11 +671,10 @@ impl ModelFXEditor {
}
}
if let Some(region) = region_to_render {
PRERENDERTHREAD.lock().unwrap().render_region(
region,
project.palette.clone(),
tiles_to_render,
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region, tiles_to_render);
}
}
/*
Expand Down Expand Up @@ -1223,11 +1230,10 @@ impl ModelFXEditor {
region_to_render = Some(region.clone());
}
if let Some(region) = region_to_render {
PRERENDERTHREAD.lock().unwrap().render_region(
region,
project.palette.clone(),
tiles_to_render,
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region, tiles_to_render);
}
}
}
18 changes: 8 additions & 10 deletions creator/src/sidebar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1097,11 +1097,10 @@ impl Sidebar {
.lock()
.unwrap()
.render_region_coord_tree(region.clone());
PRERENDERTHREAD.lock().unwrap().render_region(
region.clone(),
project.palette.clone(),
vec![],
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region.clone(), vec![]);

if let Some(rgba_layout) = ui.get_rgba_layout("Region Editor") {
if let Some(rgba) = rgba_layout.rgba_view_mut().as_rgba_view() {
Expand All @@ -1120,11 +1119,10 @@ impl Sidebar {
.lock()
.unwrap()
.render_region_coord_tree(region.clone());
PRERENDERTHREAD.lock().unwrap().render_region(
region.clone(),
project.palette.clone(),
vec![],
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region.clone(), vec![]);
}
}
} else if id.name == "Region Min Brightness" {
Expand Down
36 changes: 16 additions & 20 deletions creator/src/tileeditor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -416,11 +416,10 @@ impl TileEditor {
.lock()
.unwrap()
.render_region_coord_tree(region.clone());
PRERENDERTHREAD.lock().unwrap().render_region(
region.clone(),
project.palette.clone(),
vec![],
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region.clone(), vec![]);
redraw = true;
}
} else if item_id.name == "Create Area" {
Expand Down Expand Up @@ -1236,11 +1235,10 @@ impl TileEditor {

// Render the region area covered by the object with the new material.
if let Some(region) = region_to_render {
PRERENDERTHREAD.lock().unwrap().render_region(
region,
project.palette.clone(),
tiles_to_render,
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region, tiles_to_render);
}
}
}
Expand Down Expand Up @@ -1293,11 +1291,10 @@ impl TileEditor {
}

if let Some(region) = region_to_render {
PRERENDERTHREAD.lock().unwrap().render_region(
region,
project.palette.clone(),
tiles_to_render,
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region, tiles_to_render);
}
} else if self.editor_mode == EditorMode::Select {
let p = (coord.x, coord.y);
Expand Down Expand Up @@ -1488,11 +1485,10 @@ impl TileEditor {
}

if let Some(region) = region_to_render {
PRERENDERTHREAD.lock().unwrap().render_region(
region,
project.palette.clone(),
tiles_to_render,
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region, tiles_to_render);
}
}
}
Expand Down
6 changes: 2 additions & 4 deletions creator/src/undo/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,10 @@ impl UndoManager {
match &self.context {
UndoManagerContext::None => {}
UndoManagerContext::Region => {
let palette = project.palette.clone();
if let Some(region_undo) = self.regions.get_mut(&context_id) {
if let Some(region) = project.get_region_mut(&context_id) {
if region_undo.has_undo() {
region_undo.undo(region, &palette);
region_undo.undo(region);
}

if !region_undo.has_undo() {
Expand Down Expand Up @@ -117,11 +116,10 @@ impl UndoManager {
match &self.context {
UndoManagerContext::None => {}
UndoManagerContext::Region => {
let palette = project.palette.clone();
if let Some(region_undo) = self.regions.get_mut(&context_id) {
if let Some(region) = project.get_region_mut(&context_id) {
if region_undo.has_redo() {
region_undo.redo(region, &palette);
region_undo.redo(region);
}

if !region_undo.has_undo() {
Expand Down
48 changes: 22 additions & 26 deletions creator/src/undo/region_undo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,17 @@ pub enum RegionUndoAtom {
}

impl RegionUndoAtom {
pub fn undo(&self, region: &mut Region, palette: &ThePalette) {
pub fn undo(&self, region: &mut Region) {
match self {
RegionUndoAtom::GeoFXObjectsDeletion(objects, tiles) => {
for object in objects {
region.geometry.insert(object.id, object.clone());
}
region.update_geometry_areas();
PRERENDERTHREAD.lock().unwrap().render_region(
region.clone(),
palette.clone(),
tiles.clone(),
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region.clone(), tiles.clone());
}
RegionUndoAtom::GeoFXObjectEdit(id, prev, _, tiles) => {
if let Some(prev) = prev {
Expand All @@ -32,11 +31,10 @@ impl RegionUndoAtom {
region.geometry.remove(id);
}
region.update_geometry_areas();
PRERENDERTHREAD.lock().unwrap().render_region(
region.clone(),
palette.clone(),
tiles.clone(),
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region.clone(), tiles.clone());
}
RegionUndoAtom::RegionTileEdit(pos, prev, _) => {
if let Some(prev) = prev {
Expand All @@ -54,18 +52,17 @@ impl RegionUndoAtom {
}
}
}
pub fn redo(&self, region: &mut Region, palette: &ThePalette) {
pub fn redo(&self, region: &mut Region) {
match self {
RegionUndoAtom::GeoFXObjectsDeletion(objects, tiles) => {
for object in objects {
region.geometry.remove(&object.id);
}
region.update_geometry_areas();
PRERENDERTHREAD.lock().unwrap().render_region(
region.clone(),
palette.clone(),
tiles.clone(),
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region.clone(), tiles.clone());
}

RegionUndoAtom::GeoFXObjectEdit(id, _, next, tiles) => {
Expand All @@ -75,11 +72,10 @@ impl RegionUndoAtom {
region.geometry.remove(id);
}
region.update_geometry_areas();
PRERENDERTHREAD.lock().unwrap().render_region(
region.clone(),
palette.clone(),
tiles.clone(),
);
PRERENDERTHREAD
.lock()
.unwrap()
.render_region(region.clone(), tiles.clone());
}
RegionUndoAtom::RegionTileEdit(pos, _, next) => {
if let Some(next) = next {
Expand Down Expand Up @@ -148,17 +144,17 @@ impl RegionUndo {
self.index += 1;
}

pub fn undo(&mut self, region: &mut Region, palette: &ThePalette) {
pub fn undo(&mut self, region: &mut Region) {
if self.index >= 0 {
self.stack[self.index as usize].undo(region, palette);
self.stack[self.index as usize].undo(region);
self.index -= 1;
}
}

pub fn redo(&mut self, region: &mut Region, palette: &ThePalette) {
pub fn redo(&mut self, region: &mut Region) {
if self.index < self.stack.len() as isize - 1 {
self.index += 1;
self.stack[self.index as usize].redo(region, palette);
self.stack[self.index as usize].redo(region);
}
}
}
Loading

0 comments on commit b4edd6a

Please sign in to comment.