Skip to content

Commit

Permalink
Resolve some issues with uasset manipulation
Browse files Browse the repository at this point in the history
  • Loading branch information
Giwayume committed Jun 14, 2022
1 parent 558278a commit a682d24
Show file tree
Hide file tree
Showing 7 changed files with 265 additions and 91 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ While making changes to a level, changes are automatically saved. Use the "Packa
- [ ] Edit enemies
- [x] Add
- [x] Remove
- [ ] Set initial position based on camera view
- [ ] Issues when multiple enemy blueprints are added (Seama + Morte as example)
- [ ] Check some enemy blueprints not working
- [x] Set initial position based on camera view
- [x] Issues when multiple enemy blueprints are added (Seama + Morte as example)
- [ ] Check though all enemy blueprints to make sure they work well
- [x] Edit the placement of any 3D static mesh in any room or remove them
- [x] Undo/redo history
- [x] Visual transform cursor
Expand Down
8 changes: 7 additions & 1 deletion Scenes/Editor.gd
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ func save_room_edits(is_run_cleanup: bool = false):
if typeof(room_edits[category]) == TYPE_DICTIONARY:
if (
len(room_edits[category]["existing_exports"].keys()) > 0 or
len(room_edits[category]["existing_exports"]) > 0
len(room_edits[category]["new_exports"]) > 0
):
all_categories_has_any_edit = true
break
Expand All @@ -150,8 +150,14 @@ func save_room_edits(is_run_cleanup: bool = false):
var edits_folder = "user://UserPackages/" + selected_package + "/Edits"
var level_path = level_assets["bg"].rsplit("/", true, 1)[0]
var edits_file_path = edits_folder + "/" + level_path + "/" + selected_level_name + ".json"
var modified_asset_path = "user://UserPackages/" + selected_package + "/ModifiedAssets/" + level_path
if has_no_edits:
directory.remove(edits_file_path)
var files = DirectoryExt.list_files(modified_asset_path)
for file in files:
print_debug(file)
if file.begins_with(selected_level_name):
directory.remove(modified_asset_path + "/" + file)
else:
var edits_file = File.new()
var file_error = edits_file.open(edits_file_path, File.WRITE)
Expand Down
16 changes: 16 additions & 0 deletions Scenes/Room3dDisplay.gd
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,7 @@ func place_tree_nodes_recursive(parent: Spatial, definition: Dictionary, is_debu
for child_definition in definition["children"]:
place_tree_nodes_recursive(node, child_definition)
call_deferred("handle_tree_nodes_after_placement", node, definition)
return node

func handle_tree_nodes_after_placement(node: Spatial, definition: Dictionary):
if (definition.has("deleted") and definition["deleted"]):
Expand All @@ -347,6 +348,21 @@ func use_edited_prop_if_exists(definition: Dictionary, export_index: int, prop_n
# OBJECT SELECTION #
####################

func get_room_walking_coordinate_at_camera_center():
var mouse_pos = Vector2(get_viewport().size.x / 2.0, get_viewport().size.y / 2.0)
var ray_length = 10000000
var ray_from = camera.project_ray_origin(mouse_pos)
var ray_to = ray_from + camera.project_ray_normal(mouse_pos) * ray_length
var direction = (ray_to - ray_from).normalized()

var axis = "z"
if direction[axis] == 0:
return null
var distance = (translation[axis] - ray_from[axis]) / direction[axis]
if distance < 0:
return null
return ray_from + direction * distance

func select_object_at_mouse(is_add: bool = false):
if not can_select:
return
Expand Down
11 changes: 9 additions & 2 deletions Scenes/RoomEdit.gd
Original file line number Diff line number Diff line change
Expand Up @@ -829,10 +829,17 @@ func on_character_dialog_selected(character_profile):
Editor.create_room_edit_export(current_tree_name, new_export)

room_3d_display.current_placing_tree_name = current_tree_name
room_3d_display.place_tree_nodes_recursive(level_node, blueprint_snippet_definition)
var transform_node = room_3d_display.place_tree_nodes_recursive(level_node, blueprint_snippet_definition)

if transform_node.selection_transform_node:
transform_node = transform_node.selection_transform_node
var walking_coordinate = room_3d_display.get_room_walking_coordinate_at_camera_center()
if walking_coordinate != null:
transform_node.transform.origin = walking_coordinate
SpatialTransformAction.new(transform_node, Transform(), transform_node.transform).do()

build_object_outlines(current_tree_name)

func on_open_uasset_gui():
OS.execute(ProjectSettings.globalize_path("res://VendorBinary/UAssetGUI/UAssetGUI.exe"), [
# ProjectSettings.globalize_path("user://PakExtract/" + room_definition.level_assets[get_current_tree_name()]),
Expand Down
17 changes: 17 additions & 0 deletions Utility/DirectoryExt.gd
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,20 @@ static func remove_recursive(path):
directory.remove(path)
else:
print_debug("Error removing " + path)

static func list_files(path):
var directory = Directory.new()
var files = []
directory.open(path)
directory.list_dir_begin()

while true:
var file = directory.get_next()
if file == "":
break
elif not file.begins_with(".") and not directory.current_is_dir():
files.append(file)

directory.list_dir_end()

return files
Loading

0 comments on commit a682d24

Please sign in to comment.