pH
This commit is contained in:
parent
bd87ccf871
commit
6fcca904a1
11 changed files with 92 additions and 9 deletions
45
assets/reactions/nh4cl_p_naoh.tres
Normal file
45
assets/reactions/nh4cl_p_naoh.tres
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
[gd_resource type="Resource" script_class="Reaction" load_steps=13 format=3 uid="uid://ujxlydwg6ssk"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bb8o8l6u6fiai" path="res://src/resources/reaction_substance.gd" id="1_en87o"]
|
||||||
|
[ext_resource type="Resource" uid="uid://30ym4xb0uu3y" path="res://assets/substances/NaOH.tres" id="2_hfcrl"]
|
||||||
|
[ext_resource type="Script" uid="uid://dwks86y6383p4" path="res://src/resources/reaction.gd" id="2_x4xxd"]
|
||||||
|
[ext_resource type="Resource" uid="uid://b0pdv8e1ybr8h" path="res://assets/substances/NH4CL.tres" id="3_wvwtp"]
|
||||||
|
[ext_resource type="Resource" uid="uid://dp0e62nxlnaeg" path="res://assets/substances/H2O.tres" id="4_g78ug"]
|
||||||
|
[ext_resource type="Resource" uid="uid://chdrv5i45chwe" path="res://assets/substances/NaCl.tres" id="5_uu17e"]
|
||||||
|
[ext_resource type="Resource" uid="uid://cmmeaprxcpfvc" path="res://assets/substances/NH3.tres" id="6_wvwtp"]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_ldouh"]
|
||||||
|
script = ExtResource("1_en87o")
|
||||||
|
coefficient = 1
|
||||||
|
substance = ExtResource("2_hfcrl")
|
||||||
|
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_eih03"]
|
||||||
|
script = ExtResource("1_en87o")
|
||||||
|
coefficient = 1
|
||||||
|
substance = ExtResource("3_wvwtp")
|
||||||
|
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_wv1d1"]
|
||||||
|
script = ExtResource("1_en87o")
|
||||||
|
coefficient = 1
|
||||||
|
substance = ExtResource("4_g78ug")
|
||||||
|
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_504df"]
|
||||||
|
script = ExtResource("1_en87o")
|
||||||
|
coefficient = 1
|
||||||
|
substance = ExtResource("5_uu17e")
|
||||||
|
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id="Resource_koqi2"]
|
||||||
|
script = ExtResource("1_en87o")
|
||||||
|
coefficient = 1
|
||||||
|
substance = ExtResource("6_wvwtp")
|
||||||
|
metadata/_custom_type_script = "uid://bb8o8l6u6fiai"
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("2_x4xxd")
|
||||||
|
input_substances = Array[ExtResource("1_en87o")]([SubResource("Resource_ldouh"), SubResource("Resource_eih03")])
|
||||||
|
output_substances = Array[ExtResource("1_en87o")]([SubResource("Resource_wv1d1"), SubResource("Resource_504df"), SubResource("Resource_koqi2")])
|
||||||
|
metadata/_custom_type_script = "uid://dwks86y6383p4"
|
||||||
|
|
@ -8,5 +8,6 @@ formula = &"CH_3COOH"
|
||||||
scientific_name = &"Уксусная кислота"
|
scientific_name = &"Уксусная кислота"
|
||||||
melting_point = 16.75
|
melting_point = 16.75
|
||||||
boiling_point = 118.1
|
boiling_point = 118.1
|
||||||
|
pH = 2.4
|
||||||
color = Color(1, 1, 1, 0.3372549)
|
color = Color(1, 1, 1, 0.3372549)
|
||||||
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_iebgm")
|
script = ExtResource("1_iebgm")
|
||||||
formula = &"CaCl"
|
formula = &"CaCl2"
|
||||||
scientific_name = &"Хлорид кальция"
|
scientific_name = &"Хлорид кальция"
|
||||||
melting_point = 772.0
|
melting_point = 772.0
|
||||||
boiling_point = 1935.0
|
boiling_point = 1935.0
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,6 @@ formula = &"HCl"
|
||||||
scientific_name = &"Соляная кислота"
|
scientific_name = &"Соляная кислота"
|
||||||
melting_point = -30.0
|
melting_point = -30.0
|
||||||
boiling_point = 48.0
|
boiling_point = 48.0
|
||||||
|
pH = -1.0
|
||||||
color = Color(1, 1, 1, 1)
|
color = Color(1, 1, 1, 1)
|
||||||
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
[gd_resource type="Resource" script_class="Substance" load_steps=2 format=3 uid="uid://bnywd2asdr3eo"]
|
[gd_resource type="Resource" script_class="Substance" load_steps=3 format=3 uid="uid://bnywd2asdr3eo"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b8q5buwgvppyh" path="res://src/resources/substance.gd" id="1_iruga"]
|
[ext_resource type="Script" uid="uid://b8q5buwgvppyh" path="res://src/resources/substance.gd" id="1_iruga"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_iruga"]
|
||||||
|
offsets = PackedFloat32Array(0.43, 0.5, 0.57)
|
||||||
|
colors = PackedColorArray(1, 0, 0, 1, 1, 0.26666668, 0, 1, 1, 0.7, 0, 1)
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_iruga")
|
script = ExtResource("1_iruga")
|
||||||
formula = &"C_14H_14N_3O_3SNa"
|
formula = &"C_14H_14N_3O_3SNa"
|
||||||
|
|
@ -9,6 +13,7 @@ scientific_name = &"Метиловый оранжевый"
|
||||||
melting_point = 300.0
|
melting_point = 300.0
|
||||||
boiling_point = 520.0
|
boiling_point = 520.0
|
||||||
color = Color(1, 0.26666665, 0, 1)
|
color = Color(1, 0.26666665, 0, 1)
|
||||||
|
pHColor = SubResource("Gradient_iruga")
|
||||||
prefer_scientific_name = true
|
prefer_scientific_name = true
|
||||||
is_solution = true
|
is_solution = true
|
||||||
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
||||||
|
|
|
||||||
13
assets/substances/NH3.tres
Normal file
13
assets/substances/NH3.tres
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_resource type="Resource" script_class="Substance" load_steps=2 format=3 uid="uid://cmmeaprxcpfvc"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://b8q5buwgvppyh" path="res://src/resources/substance.gd" id="1_0e0io"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_0e0io")
|
||||||
|
formula = &"NH3"
|
||||||
|
scientific_name = &"Аммиак"
|
||||||
|
melting_point = -77.73
|
||||||
|
boiling_point = -33.34
|
||||||
|
color = Color(1, 1, 1, 1)
|
||||||
|
prefer_scientific_name = true
|
||||||
|
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
||||||
|
|
@ -8,5 +8,7 @@ formula = &"NaOH"
|
||||||
scientific_name = &"Гидроксид натрия"
|
scientific_name = &"Гидроксид натрия"
|
||||||
melting_point = 323.0
|
melting_point = 323.0
|
||||||
boiling_point = 1403.0
|
boiling_point = 1403.0
|
||||||
|
pH = 13.0
|
||||||
color = Color(1, 1, 1, 1)
|
color = Color(1, 1, 1, 1)
|
||||||
|
is_solution = true
|
||||||
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
[gd_resource type="Resource" script_class="Substance" load_steps=2 format=3 uid="uid://brih4gryc1acx"]
|
[gd_resource type="Resource" script_class="Substance" load_steps=3 format=3 uid="uid://brih4gryc1acx"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b8q5buwgvppyh" path="res://src/resources/substance.gd" id="1_td2hf"]
|
[ext_resource type="Script" uid="uid://b8q5buwgvppyh" path="res://src/resources/substance.gd" id="1_td2hf"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_td2hf"]
|
||||||
|
offsets = PackedFloat32Array(0.4198718, 0.5, 0.99)
|
||||||
|
colors = PackedColorArray(1, 0.20999998, 0.96050024, 1, 1, 1, 1, 0.43529412, 1, 1, 1, 0.43529412)
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("1_td2hf")
|
script = ExtResource("1_td2hf")
|
||||||
formula = &"C_20H_14O_4"
|
formula = &"C_20H_14O_4"
|
||||||
|
|
@ -9,6 +13,7 @@ scientific_name = &"Фенолфталеин"
|
||||||
melting_point = 278.0
|
melting_point = 278.0
|
||||||
boiling_point = 557.8
|
boiling_point = 557.8
|
||||||
color = Color(1, 1, 1, 0.43529412)
|
color = Color(1, 1, 1, 0.43529412)
|
||||||
|
pHColor = SubResource("Gradient_td2hf")
|
||||||
prefer_scientific_name = true
|
prefer_scientific_name = true
|
||||||
is_solution = true
|
is_solution = true
|
||||||
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
metadata/_custom_type_script = "uid://b8q5buwgvppyh"
|
||||||
|
|
|
||||||
|
|
@ -161,4 +161,3 @@ func check_for_reactions() -> void:
|
||||||
check_for_reactions()
|
check_for_reactions()
|
||||||
recalculate_temperature()
|
recalculate_temperature()
|
||||||
inventory_changed.emit(inventory.values())
|
inventory_changed.emit(inventory.values())
|
||||||
print(inventory)
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,9 @@ class_name Substance
|
||||||
@export var melting_point: float
|
@export var melting_point: float
|
||||||
@export var boiling_point: float
|
@export var boiling_point: float
|
||||||
@export var liquid_transparency: float = 0.5
|
@export var liquid_transparency: float = 0.5
|
||||||
|
@export var pH: float = 7.0
|
||||||
@export var color: Color
|
@export var color: Color
|
||||||
|
@export var pHColor: Gradient
|
||||||
@export var prefer_scientific_name: bool
|
@export var prefer_scientific_name: bool
|
||||||
@export var is_solution: bool
|
@export var is_solution: bool
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,17 +21,27 @@ func update_material(substances: Array[RuntimeSubstanceData]) -> void:
|
||||||
total_weight += sub.amount
|
total_weight += sub.amount
|
||||||
|
|
||||||
var alpha: float = 0
|
var alpha: float = 0
|
||||||
var color: Color = Color.WHITE
|
var pH: float = 0
|
||||||
|
var color: Color = Color(0,0,0,0)
|
||||||
|
|
||||||
for sub in substances:
|
for sub: RuntimeSubstanceData in substances:
|
||||||
|
var weight: float = sub.amount/total_weight
|
||||||
|
pH += sub.substance.pH * weight
|
||||||
|
|
||||||
|
for sub: RuntimeSubstanceData in substances:
|
||||||
|
var weight: float = sub.amount/total_weight
|
||||||
if display_type == DisplayType.Fluid:
|
if display_type == DisplayType.Fluid:
|
||||||
alpha += sub.substance.liquid_transparency
|
alpha += sub.substance.liquid_transparency * weight
|
||||||
color = color.lerp(sub.substance.color,sub.amount/total_weight
|
if sub.substance.pHColor != null:
|
||||||
)
|
color += sub.substance.pHColor.sample(pH/14.0) * weight
|
||||||
|
else:
|
||||||
|
color += sub.substance.color * weight
|
||||||
|
|
||||||
if display_type == DisplayType.Fluid:
|
if display_type == DisplayType.Fluid:
|
||||||
alpha /= len(substances)
|
alpha /= len(substances)
|
||||||
color.a = alpha
|
color.a = alpha
|
||||||
|
|
||||||
|
|
||||||
mat.albedo_color = color
|
mat.albedo_color = color
|
||||||
|
|
||||||
func update_material_unfiltered(substances: Array[RuntimeSubstanceData]):
|
func update_material_unfiltered(substances: Array[RuntimeSubstanceData]):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue