diff --git a/assets/meshes/jar_fill.res b/assets/meshes/jar_fill.res index 66a9553..615e968 100644 Binary files a/assets/meshes/jar_fill.res and b/assets/meshes/jar_fill.res differ diff --git a/assets/substances/MethylOrange.tres b/assets/substances/MethylOrange.tres index fe25dc5..85cbf9a 100644 --- a/assets/substances/MethylOrange.tres +++ b/assets/substances/MethylOrange.tres @@ -10,4 +10,5 @@ melting_point = 300.0 boiling_point = 520.0 color = Color(1, 0.26666665, 0, 1) prefer_scientific_name = true +is_solution = true metadata/_custom_type_script = "uid://b8q5buwgvppyh" diff --git a/assets/substances/Phenolphtalein.tres b/assets/substances/Phenolphtalein.tres index b89fb80..6d71db1 100644 --- a/assets/substances/Phenolphtalein.tres +++ b/assets/substances/Phenolphtalein.tres @@ -10,4 +10,5 @@ melting_point = 278.0 boiling_point = 557.8 color = Color(1, 1, 1, 0.43529412) prefer_scientific_name = true +is_solution = true metadata/_custom_type_script = "uid://b8q5buwgvppyh" diff --git a/assets/textures/solid.png b/assets/textures/solid.png new file mode 100644 index 0000000..efc117d Binary files /dev/null and b/assets/textures/solid.png differ diff --git a/assets/textures/solid.png.import b/assets/textures/solid.png.import new file mode 100644 index 0000000..f81de41 --- /dev/null +++ b/assets/textures/solid.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cw3jw8qbvj3fv" +path.s3tc="res://.godot/imported/solid.png-8966cbc3b9a90d3d5f9d92a3499b8110.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/solid.png" +dest_files=["res://.godot/imported/solid.png-8966cbc3b9a90d3d5f9d92a3499b8110.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/project.godot b/project.godot index 1af40d1..677580d 100644 --- a/project.godot +++ b/project.godot @@ -36,4 +36,5 @@ drag_camera={ [rendering] -renderer/rendering_method="mobile" +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" diff --git a/scenes/flask.tscn b/scenes/flask.tscn index ede41ea..e1a9c60 100644 --- a/scenes/flask.tscn +++ b/scenes/flask.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=3 uid="uid://bjxjcx2qu16q5"] +[gd_scene load_steps=12 format=3 uid="uid://bjxjcx2qu16q5"] [ext_resource type="Script" uid="uid://bjnv2g1ni0525" path="res://src/drag/draggable_object.gd" id="1_0xufn"] [ext_resource type="PackedScene" uid="uid://b6ydpkle2ol20" path="res://assets/models/FlaskNew.glb" id="2_h7awq"] @@ -6,6 +6,7 @@ [ext_resource type="Script" uid="uid://ctu7escah5lo1" path="res://src/interactible/interaction_source.gd" id="4_kkw7a"] [ext_resource type="Script" uid="uid://e8xu57ewvb5a" path="res://src/interactible/proximity_rotator.gd" id="5_rqua0"] [ext_resource type="Script" uid="uid://dteb2xxl8gixp" path="res://src/ui/slider_display.gd" id="6_wadb5"] +[ext_resource type="Script" uid="uid://82ettbegollp" path="res://src/inventory.gd" id="7_h7awq"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_vcwhe"] radius = 0.1 @@ -86,6 +87,12 @@ suffix = "%" layout_mode = 2 size_flags_horizontal = 3 +[node name="Inventory" type="Node" parent="."] +unique_name_in_owner = true +script = ExtResource("7_h7awq") +open_on_top = true +metadata/_custom_type_script = "uid://82ettbegollp" + [connection signal="drag_ended" from="." to="InteractionArea" method="request_interaction"] [connection signal="interaction_reciever_entered" from="InteractionArea" to="ProximityRotator" method="_on_interaction_area_interaction_reciever_entered"] [connection signal="interaction_reciever_exited" from="InteractionArea" to="ProximityRotator" method="_on_interaction_area_interaction_reciever_exited"] diff --git a/scenes/lab.tscn b/scenes/lab.tscn index e42d252..0e4b2ec 100644 --- a/scenes/lab.tscn +++ b/scenes/lab.tscn @@ -24,9 +24,6 @@ script = ExtResource("1_hem3r") [node name="Flask" parent="." instance=ExtResource("1_bb6uc")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.6518283, 1.0920403, 0.0039073825) -[node name="Flask2" parent="." instance=ExtResource("1_bb6uc")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.542716, 1.0920403, 0.20219529) - [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.8403207, 0.5420896, 0, -0.5420896, 0.8403207, 0, 1.9293891, 0) shadow_enabled = true diff --git a/scenes/substance_jar.tscn b/scenes/substance_jar.tscn index fa47b90..d5994a1 100644 --- a/scenes/substance_jar.tscn +++ b/scenes/substance_jar.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://cw6v8kbi76qak"] +[gd_scene load_steps=12 format=3 uid="uid://cw6v8kbi76qak"] [ext_resource type="Script" uid="uid://bjnv2g1ni0525" path="res://src/drag/draggable_object.gd" id="1_o7vug"] [ext_resource type="ArrayMesh" uid="uid://dddqboph2ygmw" path="res://assets/meshes/jar.res" id="2_o7vug"] @@ -6,6 +6,10 @@ [ext_resource type="Script" uid="uid://e8xu57ewvb5a" path="res://src/interactible/proximity_rotator.gd" id="4_ymvgp"] [ext_resource type="ArrayMesh" uid="uid://dxeseuqcwne1m" path="res://assets/meshes/jar_fill.res" id="6_kfk5m"] [ext_resource type="Script" uid="uid://co33kqhl3n06u" path="res://src/interactible/destructor.gd" id="7_00jpx"] +[ext_resource type="Script" uid="uid://c8epd7gguvyop" path="res://src/substance_holder.gd" id="7_ymvgp"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pcpcb"] +resource_local_to_scene = true [sub_resource type="CylinderShape3D" id="CylinderShape3D_kfk5m"] height = 0.5024414 @@ -25,6 +29,11 @@ script = ExtResource("1_o7vug") transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, -0.20877336, 0) mesh = ExtResource("2_o7vug") +[node name="JarFill" type="MeshInstance3D" parent="."] +transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, -0.20759426, 0) +material_override = SubResource("StandardMaterial3D_pcpcb") +mesh = ExtResource("6_kfk5m") + [node name="DragArea" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.04284668, 0) shape = SubResource("CylinderShape3D_kfk5m") @@ -71,14 +80,13 @@ step = 0.01 allow_greater = true suffix = "мг" -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, -0.20759426, 0) -mesh = ExtResource("6_kfk5m") - [node name="DestructorOnStop" type="Node" parent="." node_paths=PackedStringArray("node")] script = ExtResource("7_00jpx") node = NodePath("..") +[node name="SubstanceData" type="Node" parent="."] +script = ExtResource("7_ymvgp") + [connection signal="drag_ended" from="." to="InteractionArea" method="request_interaction"] [connection signal="interaction_closed" from="InteractionArea" to="DestructorOnStop" method="destruct"] [connection signal="interaction_reciever_entered" from="InteractionArea" to="ProximityRotator" method="_on_interaction_area_interaction_reciever_entered"] diff --git a/src/inventory.gd b/src/inventory.gd index 3f0798a..11606db 100644 --- a/src/inventory.gd +++ b/src/inventory.gd @@ -1,6 +1,6 @@ extends Node +class_name Inventory + @export var open_on_top: bool -var liquids -var solids -var gasses +var inventory: Array[RuntimeSubstanceData] diff --git a/src/resources/substance.gd b/src/resources/substance.gd index 40f17fb..7f76033 100644 --- a/src/resources/substance.gd +++ b/src/resources/substance.gd @@ -8,6 +8,7 @@ class_name Substance @export var boiling_point: float @export var color: Color @export var prefer_scientific_name: bool +@export var is_solution: bool func get_formula() -> StringName: return scientific_name if prefer_scientific_name else formula diff --git a/src/runtime_substance_data.gd b/src/runtime_substance_data.gd new file mode 100644 index 0000000..2ff1edc --- /dev/null +++ b/src/runtime_substance_data.gd @@ -0,0 +1,7 @@ +extends RefCounted + +class_name RuntimeSubstanceData + +var substance: Substance +var amount: float +var temperature: float = 20.0 diff --git a/src/runtime_substance_data.gd.uid b/src/runtime_substance_data.gd.uid new file mode 100644 index 0000000..8f2bb16 --- /dev/null +++ b/src/runtime_substance_data.gd.uid @@ -0,0 +1 @@ +uid://coq5iah4er0lc diff --git a/src/substance_holder.gd b/src/substance_holder.gd new file mode 100644 index 0000000..7bffcb7 --- /dev/null +++ b/src/substance_holder.gd @@ -0,0 +1,11 @@ +extends Node + + +var substance: Substance + +func _ready() -> void: + if substance: + var jar_fill_material = $"../JarFill".material_override + jar_fill_material.albedo_color = substance.color + if substance.melting_point > 20 and not substance.is_solution: + jar_fill_material.albedo_texture = preload("res://assets/textures/solid.png") diff --git a/src/substance_holder.gd.uid b/src/substance_holder.gd.uid new file mode 100644 index 0000000..7c004a5 --- /dev/null +++ b/src/substance_holder.gd.uid @@ -0,0 +1 @@ +uid://c8epd7gguvyop diff --git a/src/ui/reagent_drag_and_drop.gd b/src/ui/reagent_drag_and_drop.gd index f8628c7..c20e3f1 100644 --- a/src/ui/reagent_drag_and_drop.gd +++ b/src/ui/reagent_drag_and_drop.gd @@ -11,6 +11,7 @@ func _on_button_down() -> void: if scene is DraggableObject: scene.dragged = true scene.mouse_in = true + scene.get_node("SubstanceData").substance = reagent.substance get_tree().current_scene.add_child(scene) var camera = get_viewport().get_camera_3d() scene.global_position = camera.project_position(get_global_mouse_position(),1.8)