Compare commits

..

3 Commits

Author SHA1 Message Date
Nikolai Fesenko
8ef9cf5971 build update 2025-08-14 18:07:45 +02:00
Nikolai Fesenko
248ef3b912 build preview update 2025-08-14 17:43:11 +02:00
Nikolai Fesenko
3bfc5300cb train mode import and camera zoom update 2025-08-14 16:16:46 +02:00
11 changed files with 232 additions and 28 deletions

View File

@@ -3,25 +3,26 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://84bnb4rnuhuq" uid="uid://84bnb4rnuhuq"
path="res://.godot/imported/double_bed_metal.png-ecfdaed077568d6224139d3066a4c4c8.ctex" path.s3tc="res://.godot/imported/double_bed_metal.png-ecfdaed077568d6224139d3066a4c4c8.s3tc.ctex"
metadata={ metadata={
"vram_texture": false "imported_formats": ["s3tc_bptc"],
"vram_texture": true
} }
[deps] [deps]
source_file="res://Blends/Mobel/textures/double_bed_metal.png" source_file="res://Blends/Mobel/textures/double_bed_metal.png"
dest_files=["res://.godot/imported/double_bed_metal.png-ecfdaed077568d6224139d3066a4c4c8.ctex"] dest_files=["res://.godot/imported/double_bed_metal.png-ecfdaed077568d6224139d3066a4c4c8.s3tc.ctex"]
[params] [params]
compress/mode=0 compress/mode=2
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=false mipmaps/generate=true
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""
@@ -31,4 +32,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=0

View File

@@ -0,0 +1,53 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://rmccebiojtc6"
path="res://.godot/imported/Train.blend-cf41dbf2c3ca99c012b2eb0df2dbf2c3.scn"
[deps]
source_file="res://Blends/Train/Train.blend"
dest_files=["res://.godot/imported/Train.blend-cf41dbf2c3ca99c012b2eb0df2dbf2c3.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

View File

@@ -1,8 +1,72 @@
[gd_scene load_steps=2 format=3 uid="uid://0t0cvsitlfmm"] [gd_scene load_steps=14 format=3 uid="uid://0t0cvsitlfmm"]
[ext_resource type="PackedScene" uid="uid://ca3mea0tt0xvg" path="res://Blends/Mobel/DoubleBeds.blend" id="1_kkvf5"] [ext_resource type="Script" uid="uid://c61rr6to3q566" path="res://Scripts/build_object.gd" id="1_nn5da"]
[ext_resource type="ArrayMesh" uid="uid://cahq2fdeqqwhx" path="res://Blends/Mobel/DoubleBeds.obj" id="2_8ssp7"]
[ext_resource type="Texture2D" uid="uid://84bnb4rnuhuq" path="res://Blends/Mobel/textures/double_bed_metal.png" id="3_nn5da"]
[ext_resource type="Shader" uid="uid://bfv6ckihralab" path="res://Shaders/build_transparent.gdshader" id="3_pdq8c"]
[ext_resource type="Texture2D" uid="uid://lbbig7lpdun3" path="res://Blends/Mobel/textures/Material.003 Roughness.png" id="4_dn7et"]
[ext_resource type="Texture2D" uid="uid://kl1jplui8wfq" path="res://Blends/Mobel/textures/Material.003 Base Color.png" id="5_sp2kd"]
[node name="DoubleBeds" type="Node3D"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_dn7et"]
render_priority = 0
shader = ExtResource("3_pdq8c")
shader_parameter/alpha = 0.5
shader_parameter/color = Vector3(0, 1, 0)
[node name="DoubleBeds" parent="." instance=ExtResource("1_kkvf5")] [sub_resource type="ShaderMaterial" id="ShaderMaterial_sp2kd"]
render_priority = 0
shader = ExtResource("3_pdq8c")
shader_parameter/alpha = 0.5
shader_parameter/color = Vector3(0, 1, 0)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_c1046"]
render_priority = 0
shader = ExtResource("3_pdq8c")
shader_parameter/alpha = 0.5
shader_parameter/color = Vector3(0, 1, 0)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c1046"]
albedo_texture = ExtResource("3_nn5da")
roughness_texture = ExtResource("4_dn7et")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k1k40"]
albedo_texture = ExtResource("5_sp2kd")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tma46"]
albedo_texture = ExtResource("5_sp2kd")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_k1k40"]
render_priority = 0
shader = ExtResource("3_pdq8c")
shader_parameter/alpha = 0.5
shader_parameter/color = Vector3(1, 0, 0)
[node name="DoubleBeds" type="Node3D" node_paths=PackedStringArray("meshInstance", "greenMeshInstance", "RedMeshInstance")]
script = ExtResource("1_nn5da")
meshInstance = NodePath("DoubleBeds")
greenMeshInstance = NodePath("Green_preview")
RedMeshInstance = NodePath("Red_preview")
[node name="Green_preview" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0) transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0)
visible = false
mesh = ExtResource("2_8ssp7")
skeleton = NodePath("../DoubleBeds")
surface_material_override/0 = SubResource("ShaderMaterial_dn7et")
surface_material_override/1 = SubResource("ShaderMaterial_sp2kd")
surface_material_override/2 = SubResource("ShaderMaterial_c1046")
[node name="DoubleBeds" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0)
mesh = ExtResource("2_8ssp7")
surface_material_override/0 = SubResource("StandardMaterial3D_c1046")
surface_material_override/1 = SubResource("StandardMaterial3D_k1k40")
surface_material_override/2 = SubResource("StandardMaterial3D_tma46")
[node name="Red_preview" type="MeshInstance3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0)
visible = false
mesh = ExtResource("2_8ssp7")
surface_material_override/0 = SubResource("ShaderMaterial_k1k40")
surface_material_override/1 = SubResource("ShaderMaterial_k1k40")
surface_material_override/2 = SubResource("ShaderMaterial_k1k40")

View File

@@ -1,10 +1,11 @@
[gd_scene load_steps=8 format=3 uid="uid://dim2geqhn6d35"] [gd_scene load_steps=11 format=3 uid="uid://dim2geqhn6d35"]
[ext_resource type="Script" uid="uid://dhls6unflalvd" path="res://Scripts/cart.gd" id="1_esjgi"] [ext_resource type="Script" uid="uid://dhls6unflalvd" path="res://Scripts/cart.gd" id="1_esjgi"]
[ext_resource type="ArrayMesh" uid="uid://p3d7iitismhf" path="res://Blends/Cart/cart-bottom.obj" id="1_ux2tx"] [ext_resource type="ArrayMesh" uid="uid://p3d7iitismhf" path="res://Blends/Cart/cart-bottom.obj" id="1_ux2tx"]
[ext_resource type="ArrayMesh" uid="uid://docto7iocves6" path="res://Blends/Cart/wheels.obj" id="2_2wj72"] [ext_resource type="ArrayMesh" uid="uid://docto7iocves6" path="res://Blends/Cart/wheels.obj" id="2_2wj72"]
[ext_resource type="ArrayMesh" uid="uid://cayqoyyq7nbij" path="res://Blends/Cart/cart-top.obj" id="3_2wj72"] [ext_resource type="ArrayMesh" uid="uid://cayqoyyq7nbij" path="res://Blends/Cart/cart-top.obj" id="3_2wj72"]
[ext_resource type="Script" uid="uid://bcmd74mxocn7e" path="res://Scripts/building_area.gd" id="5_eosii"] [ext_resource type="Script" uid="uid://bcmd74mxocn7e" path="res://Scripts/building_area.gd" id="5_eosii"]
[ext_resource type="Shader" uid="uid://bfv6ckihralab" path="res://Shaders/build_transparent.gdshader" id="6_ru0md"]
[sub_resource type="BoxShape3D" id="BoxShape3D_esjgi"] [sub_resource type="BoxShape3D" id="BoxShape3D_esjgi"]
size = Vector3(22.2341, 4.23804, 0.494629) size = Vector3(22.2341, 4.23804, 0.494629)
@@ -12,6 +13,14 @@ size = Vector3(22.2341, 4.23804, 0.494629)
[sub_resource type="BoxShape3D" id="BoxShape3D_eosii"] [sub_resource type="BoxShape3D" id="BoxShape3D_eosii"]
size = Vector3(5.40002, 4.29805, 2.28394) size = Vector3(5.40002, 4.29805, 2.28394)
[sub_resource type="BoxMesh" id="BoxMesh_eosii"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_u7bw1"]
render_priority = 0
shader = ExtResource("6_ru0md")
shader_parameter/alpha = 0.5
shader_parameter/color = Vector3(0, 0, 0)
[node name="Cart" type="Node3D" node_paths=PackedStringArray("cartTop")] [node name="Cart" type="Node3D" node_paths=PackedStringArray("cartTop")]
script = ExtResource("1_esjgi") script = ExtResource("1_esjgi")
cartTop = NodePath("Cart-top") cartTop = NodePath("Cart-top")
@@ -61,21 +70,17 @@ shape = SubResource("BoxShape3D_esjgi")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.282789, 1.61902, -2.6054) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.282789, 1.61902, -2.6054)
shape = SubResource("BoxShape3D_esjgi") shape = SubResource("BoxShape3D_esjgi")
[node name="BuildingArea2" type="StaticBody3D" parent="."] [node name="BuildingArea" type="StaticBody3D" parent="." node_paths=PackedStringArray("buildTransparentPreivew")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.23003, 0, 0)
script = ExtResource("5_eosii")
metadata/is_building_area = true
[node name="smallBuildingArea2" type="CollisionShape3D" parent="BuildingArea2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.69414, 1.02766, -1.22106)
shape = SubResource("BoxShape3D_eosii")
metadata/is_building_area = true
[node name="BuildingArea" type="StaticBody3D" parent="."]
script = ExtResource("5_eosii") script = ExtResource("5_eosii")
buildTransparentPreivew = NodePath("BuildAreaModeView")
metadata/is_building_area = true metadata/is_building_area = true
[node name="smallBuildingArea2" type="CollisionShape3D" parent="BuildingArea"] [node name="smallBuildingArea2" type="CollisionShape3D" parent="BuildingArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.69414, 1.02766, -1.22106) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.69414, 1.02766, -1.22106)
shape = SubResource("BoxShape3D_eosii") shape = SubResource("BoxShape3D_eosii")
metadata/is_building_area = true metadata/is_building_area = true
[node name="BuildAreaModeView" type="MeshInstance3D" parent="BuildingArea"]
transform = Transform3D(5.40002, 0, 0, 0, 4.29805, 0, 0, 0, 2.28394, -5.69414, 1.02766, -1.22106)
mesh = SubResource("BoxMesh_eosii")
surface_material_override/0 = SubResource("ShaderMaterial_u7bw1")

37
Scripts/build_object.gd Normal file
View File

@@ -0,0 +1,37 @@
extends Node3D
@export var meshInstance: MeshInstance3D
@export var greenMeshInstance: MeshInstance3D
@export var RedMeshInstance: MeshInstance3D
func _ready() -> void:
Global.preview_created.connect(_on_preview_create)
Global.object_placed.connect(_on_object_placed)
func set_green_color():
hide_mainMesh()
greenMeshInstance.visible = true
func set_red_color():
hide_mainMesh()
RedMeshInstance.visible = true
func hide_mainMesh():
meshInstance.visible = false
func show_mainMesh():
meshInstance.visible = true
greenMeshInstance.visible = false
RedMeshInstance.visible = false
func _on_preview_create():
set_green_color()
func _on_object_placed():
show_mainMesh()
greenMeshInstance.queue_free()
RedMeshInstance.queue_free()

View File

@@ -0,0 +1 @@
uid://c61rr6to3q566

View File

@@ -1,13 +1,19 @@
extends StaticBody3D extends StaticBody3D
@onready var beds = preload("res://Scenes/Prefabs/DoubleBeds.tscn") @onready var beds = preload("res://Scenes/Prefabs/DoubleBeds.tscn")
@export var buildTransparentPreivew: MeshInstance3D
var areas var areas
var previewObject: Node3D var previewObject: Node3D
var is_placed = false var is_placed = false
func _ready() -> void: func _ready() -> void:
areas = get_children() areas = get_children()
buildTransparentPreivew.visible = false
Global.exit_build_mode.connect(_on_exit_build_mode) Global.exit_build_mode.connect(_on_exit_build_mode)
Global.enter_build_mode.connect(_on_enter_build_mode)
func _input_event(camera: Camera3D, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) -> void: func _input_event(camera: Camera3D, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) -> void:
@@ -27,15 +33,23 @@ func _mouse_exit() -> void:
func show_preview(): func show_preview():
previewObject = beds.instantiate() previewObject = beds.instantiate()
areas[0].add_child(previewObject) areas[0].add_child(previewObject)
buildTransparentPreivew.visible = false
Global.preview_created.emit()
func hide_preview(): func hide_preview():
if is_placed != true: if is_placed != true:
if previewObject != null: if previewObject != null:
previewObject.queue_free() previewObject.queue_free()
buildTransparentPreivew.visible = true
func place_object(): func place_object():
is_placed = true is_placed = true
buildTransparentPreivew.visible = false
Global.object_placed.emit()
func _on_enter_build_mode():
if !is_placed:
buildTransparentPreivew.visible = true
func _on_exit_build_mode(): func _on_exit_build_mode():
hide_preview() hide_preview()
buildTransparentPreivew.visible = false

View File

@@ -9,8 +9,11 @@ extends Camera3D
var debugLabel var debugLabel
var global_delta var global_delta
var default_pos var default_pos
var zoom_pos
func _ready() -> void: func _ready() -> void:
zoom_pos = 40
default_pos = self.position default_pos = self.position
debugLabel = $DebugLabel1 debugLabel = $DebugLabel1
particlesSystem.emitting = true particlesSystem.emitting = true
@@ -22,7 +25,7 @@ func _process(delta: float) -> void:
debugLabel.text = "Mode: " + str(Global.build_mode) debugLabel.text = "Mode: " + str(Global.build_mode)
global_delta = delta global_delta = delta
look_at(ownRigidBody.position) look_at(ownRigidBody.position)
self.position.y = -0.1 * pow(self.position.z,2) + 40 self.position.y = -0.1 * pow(self.position.z,2) + zoom_pos # y axis controll for camera
if(Input.is_action_just_released("move_camera_enable")): if(Input.is_action_just_released("move_camera_enable")):
ownRigidBody.angular_velocity = Vector3.ZERO ownRigidBody.angular_velocity = Vector3.ZERO
if(Input.is_action_pressed("move_camera_enable")): if(Input.is_action_pressed("move_camera_enable")):
@@ -32,12 +35,14 @@ func _process(delta: float) -> void:
#ownRigidBody.angular_velocity.x = mouseV.y * delta / camera_speed #ownRigidBody.angular_velocity.x = mouseV.y * delta / camera_speed
#print(self.position.dot(ownRigidBody.position)) #print(self.position.dot(ownRigidBody.position))
func _input(event: InputEvent) -> void: func _input(event: InputEvent) -> void: # zoom control
if(event.is_action("camera_zoom")): if(event.is_action("camera_zoom")):
if (event.as_text() == "Mouse Wheel Up"): if (event.as_text() == "Mouse Wheel Up"):
self.position = self.position.lerp(Vector3.ZERO,global_delta * 5.0) #self.position = self.position.lerp(Vector3.ZERO,global_delta * 5.0)
zoom_pos += global_delta * 45.0
else: else:
self.position = self.position.lerp(endZoom.position,global_delta * 5.0) #self.position = self.position.lerp(endZoom.position,global_delta * 5.0)
zoom_pos -= global_delta * 45.0

View File

@@ -1,8 +1,13 @@
extends Node3D extends Node3D
@export var debugLabel1: Label @export var debugLabel1: Label
signal exit_build_mode signal exit_build_mode
signal enter_build_mode
signal preview_created
signal preview_destroyed
signal object_placed
var build_mode: bool = false var build_mode: bool = false
@@ -13,5 +18,6 @@ func _input(event: InputEvent) -> void:
exit_build_mode.emit() exit_build_mode.emit()
build_mode = false build_mode = false
else: else:
enter_build_mode.emit()
build_mode = true build_mode = true

View File

@@ -0,0 +1,17 @@
shader_type spatial;
uniform float alpha;
uniform vec3 color;
void vertex() {
// Called for every vertex the material is visible on.
}
void fragment() {
ALBEDO = color;
ALPHA = alpha;
}
//void light() {
// // Called for every pixel for every light affecting the material.
// // Uncomment to replace the default light processing function with this one.
//}

View File

@@ -0,0 +1 @@
uid://bfv6ckihralab