Browse Source

Seperating BlockMesh scene and script

pull/13/head
Ryan Reed 1 month ago
parent
commit
9825023feb
7 changed files with 59 additions and 85 deletions
  1. +7
    -25
      scenes/blocks/block.gd
  2. +8
    -12
      scenes/blocks/block.tscn
  3. +6
    -0
      scenes/blocks/block_mesh.gd
  4. +1
    -0
      scenes/blocks/block_mesh.gd.uid
  5. +15
    -0
      scenes/blocks/block_mesh.tscn
  6. +5
    -20
      scenes/blocks/dropped_block.gd
  7. +17
    -28
      scenes/blocks/dropped_block.tscn

+ 7
- 25
scenes/blocks/block.gd View File

@ -2,21 +2,17 @@ class_name Block
extends StaticBody3D
@onready var collision_shape: CollisionShape3D = $CollisionShape3D
@onready var highlight_mesh: MeshInstance3D = $HighlightMesh
@onready var block_mesh: MeshInstance3D = $BlockMesh
@export var block_mesh: BlockMesh
@export var collision_shape: CollisionShape3D
@export var highlight_mesh: MeshInstance3D
var id: String
var resource: BlockResource
func _exit_tree() -> void:
if Waila.ref.get_target() == self:
Waila.ref.release_target()
func _ready() -> void:
_apply_material()
func get_id() -> String:
return id
@ -36,21 +32,7 @@ func release() -> void:
func set_id(block_id: String) -> void:
id = block_id
_load_resource_data()
_apply_material()
func _apply_material() -> void:
if block_mesh == null: return
if resource == null: return
block_mesh.set_surface_override_material(0, resource.material_texture)
func _load_resource_data() -> void:
if not id:
printerr("Could not load resource data. Block ID was empty.")
return
if not id in DBItems.data:
printerr("Could not load resource data. Unknown Block ID: ", id)
return
resource = DBItems.data[id]
if id in DBItems.data:
block_mesh.apply_material(DBItems.data[id].material_texture)
else:
printerr("Unknown Block ID: ", id)

+ 8
- 12
scenes/blocks/block.tscn View File

@ -1,8 +1,8 @@
[gd_scene load_steps=10 format=3 uid="uid://b8evbp40gnomt"]
[gd_scene load_steps=8 format=3 uid="uid://b8evbp40gnomt"]
[ext_resource type="Script" uid="uid://buvqmrrtmxs2h" path="res://scenes/blocks/block.gd" id="1_7fut1"]
[ext_resource type="Material" uid="uid://bgc6efqf8aiqo" path="res://assets/materials/block_highlight.tres" id="2_524ei"]
[ext_resource type="Texture2D" uid="uid://dsvk3faenewrl" path="res://assets/textures/grass-block.png" id="3_qi7hx"]
[ext_resource type="PackedScene" uid="uid://c8dch55d3txns" path="res://scenes/blocks/block_mesh.tscn" id="3_60een"]
[ext_resource type="PackedScene" uid="uid://baki8rbf1ti0r" path="res://save_load/components/save_data_component.tscn" id="4_60een"]
[ext_resource type="Resource" uid="uid://dfos8np8agysk" path="res://save_load/resources/node_types/block_data_resource.tres" id="5_60een"]
@ -12,14 +12,11 @@
material = ExtResource("2_524ei")
size = Vector3(1.01, 1.01, 1.01)
[sub_resource type="BoxMesh" id="BoxMesh_e15ke"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4e127"]
albedo_texture = ExtResource("3_qi7hx")
texture_filter = 0
[node name="Block" type="StaticBody3D"]
[node name="Block" type="StaticBody3D" node_paths=PackedStringArray("block_mesh", "collision_shape", "highlight_mesh")]
script = ExtResource("1_7fut1")
block_mesh = NodePath("BlockMesh")
collision_shape = NodePath("CollisionShape3D")
highlight_mesh = NodePath("HighlightMesh")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
visible = false
@ -29,9 +26,8 @@ shape = SubResource("BoxShape3D_n5naa")
visible = false
mesh = SubResource("BoxMesh_7fut1")
[node name="BlockMesh" type="MeshInstance3D" parent="."]
mesh = SubResource("BoxMesh_e15ke")
surface_material_override/0 = SubResource("StandardMaterial3D_4e127")
[node name="BlockMesh" parent="." instance=ExtResource("3_60een")]
skeleton = NodePath("")
[node name="SaveDataComponent" parent="." instance=ExtResource("4_60een")]
save_data_resource = ExtResource("5_60een")

+ 6
- 0
scenes/blocks/block_mesh.gd View File

@ -0,0 +1,6 @@
class_name BlockMesh
extends MeshInstance3D
func apply_material(material_texture: StandardMaterial3D) -> void:
set_surface_override_material(0, material_texture)

+ 1
- 0
scenes/blocks/block_mesh.gd.uid View File

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

+ 15
- 0
scenes/blocks/block_mesh.tscn View File

@ -0,0 +1,15 @@
[gd_scene load_steps=5 format=3 uid="uid://c8dch55d3txns"]
[ext_resource type="Texture2D" uid="uid://dsvk3faenewrl" path="res://assets/textures/grass-block.png" id="1_idwey"]
[ext_resource type="Script" uid="uid://c2rjyhwln6bmh" path="res://scenes/blocks/block_mesh.gd" id="2_06oav"]
[sub_resource type="BoxMesh" id="BoxMesh_idwey"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bqoxu"]
albedo_texture = ExtResource("1_idwey")
texture_filter = 0
[node name="BlockMesh" type="MeshInstance3D"]
mesh = SubResource("BoxMesh_idwey")
surface_material_override/0 = SubResource("StandardMaterial3D_bqoxu")
script = ExtResource("2_06oav")

+ 5
- 20
scenes/blocks/dropped_block.gd View File

@ -6,11 +6,10 @@ extends RigidBody3D
## This is to ensure that the item isn't picked up immediately after throwing
@export var pickup_timeout: int = 1
@export var animation_player: AnimationPlayer
@export var block_mesh: MeshInstance3D
@export var block_mesh: BlockMesh
@export var pickup_area: Area3D
var id: String
var resource: BlockResource
var impulse: Vector3 = Vector3.ZERO
@ -41,24 +40,10 @@ func initialize(block_id: String, start_position: Vector3, drop_direction: Vecto
func set_id(block_id: String) -> void:
id = block_id
_load_resource_data()
_apply_material()
func _apply_material() -> void:
if block_mesh == null: return
if resource == null: return
block_mesh.set_surface_override_material(0, resource.material_texture)
func _load_resource_data() -> void:
if not id:
printerr("Could not load resource data. Block ID was empty.")
return
if not id in DBItems.data:
printerr("Could not load resource data. Unknown Block ID: ", id)
return
resource = DBItems.data[id]
if id in DBItems.data:
block_mesh.apply_material(DBItems.data[id].material_texture)
else:
printerr("Unknown Block ID: ", id)
func _on_pickup_area_body_entered(body: Node3D) -> void:


+ 17
- 28
scenes/blocks/dropped_block.tscn View File

@ -1,21 +1,21 @@
[gd_scene load_steps=10 format=3 uid="uid://dq6alec7d35gc"]
[gd_scene load_steps=8 format=3 uid="uid://dq6alec7d35gc"]
[ext_resource type="Script" uid="uid://d2uws50yjvp6w" path="res://scenes/blocks/dropped_block.gd" id="1_y8usf"]
[ext_resource type="Texture2D" uid="uid://dsvk3faenewrl" path="res://assets/textures/grass-block.png" id="4_jhjal"]
[ext_resource type="PackedScene" uid="uid://c8dch55d3txns" path="res://scenes/blocks/block_mesh.tscn" id="2_5kft2"]
[sub_resource type="Animation" id="Animation_kym7p"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("BlockMesh:position")
tracks/0/path = NodePath("BlockMesh:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, -0.2, 0)]
"values": [Vector3(1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
@ -27,19 +27,19 @@ tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0.261799)]
"values": [Vector3(0, 0, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("BlockMesh:scale")
tracks/2/path = NodePath("BlockMesh:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.25, 0.25, 0.25)]
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_50ggx"]
@ -50,14 +50,14 @@ step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("BlockMesh:position")
tracks/0/path = NodePath("BlockMesh:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, -0.2, 0), Vector3(0, -0.3, 0), Vector3(0, -0.2, 0), Vector3(0, -0.1, 0), Vector3(0, -0.2, 0)]
"values": [Vector3(0.25, 0.25, 0.25)]
}
tracks/1/type = "value"
tracks/1/imported = false
@ -74,14 +74,14 @@ tracks/1/keys = {
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("BlockMesh:scale")
tracks/2/path = NodePath("BlockMesh:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(0.25, 0.25, 0.25)]
"values": [Vector3(0, -0.2, 0), Vector3(0, -0.3, 0), Vector3(0, -0.2, 0), Vector3(0, -0.1, 0), Vector3(0, -0.2, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_kym7p"]
@ -92,14 +92,7 @@ _data = {
[sub_resource type="BoxShape3D" id="BoxShape3D_kkyxx"]
[sub_resource type="BoxMesh" id="BoxMesh_e15ke"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4e127"]
albedo_texture = ExtResource("4_jhjal")
texture_filter = 0
[sub_resource type="SphereShape3D" id="SphereShape3D_5kft2"]
radius = 1.0
[node name="DroppedBlock" type="RigidBody3D" node_paths=PackedStringArray("animation_player", "block_mesh", "pickup_area")]
collision_layer = 4
@ -118,21 +111,17 @@ autoplay = "RESET"
visible = false
shape = SubResource("BoxShape3D_kkyxx")
[node name="BlockMesh" type="MeshInstance3D" parent="."]
transform = Transform3D(0.241481, -0.0647047, 0, 0.0647047, 0.241481, 0, 0, 0, 0.25, 0, -0.2, 0)
mesh = SubResource("BoxMesh_e15ke")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_4e127")
[node name="BlockMesh" parent="." instance=ExtResource("2_5kft2")]
[node name="PickupArea" type="Area3D" parent="."]
transform = Transform3D(0.965926, -0.258819, 0, 0.258819, 0.965926, 0, 0, 0, 1, 0, 0, 0)
visible = false
collision_layer = 4
collision_mask = 2
monitoring = false
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="PickupArea"]
visible = false
shape = SubResource("SphereShape3D_5kft2")
[connection signal="body_entered" from="PickupArea" to="." method="_on_pickup_area_body_entered"]

Loading…
Cancel
Save