//! Make the reaction using concentration A and B. public void MakeReaction(string reactionName, float concentrationA, float concentrationB) { ReactionClass reaction = ReactionsSaver.LoadReactions() [reactionName]; float realConcentrationA; float realConcentrationB; float realConcentrationC; float realConcentrationD; realConcentrationB = concentrationB; // limitant!!! realConcentrationA = realConcentrationB * reaction.stoichiometryR1; realConcentrationC = realConcentrationA * reaction.stoichiometryMainProduct; realConcentrationD = realConcentrationA * reaction.stoichiometrySubProduct; float phC = 0, phD = 0; float turbidityC = 0, turbidityD = 0; Dictionary <string, Compound> reagents = CompoundFactory.GetInstance().CupboardCollection; if (!reagents [reaction.mainProduct].IsSolid) { phC = reagents [reaction.mainProduct].PH; turbidityC = reagents [reaction.mainProduct].Turbidity; } if (!reagents [reaction.subProduct].IsSolid) { phD = reagents [reaction.mainProduct].PH; turbidityD = reagents [reaction.mainProduct].Turbidity; } polarizability = (reagents [reaction.mainProduct].Polarizability * realConcentrationC + reagents [reaction.subProduct].Polarizability * realConcentrationD) / (realConcentrationC + realConcentrationD); conductibility = (reagents [reaction.mainProduct].Conductibility * realConcentrationC + reagents [reaction.subProduct].Conductibility * realConcentrationD) / (realConcentrationC + realConcentrationD); solubility = (reagents [reaction.mainProduct].Solubility * realConcentrationC + reagents [reaction.subProduct].Solubility * realConcentrationD) / (realConcentrationC + realConcentrationD); ph = (phC * realConcentrationC + phD * realConcentrationD) / (realConcentrationC + realConcentrationD); turbidity = (turbidityC * realConcentrationC + turbidityD * realConcentrationD) / (realConcentrationC + realConcentrationD); /* float colorR = (reagents [reaction.cName].color.r * realConcentrationC + reagents [reaction.dName].color.r * realConcentrationD) / (realConcentrationC + realConcentrationD); * float colorG = (reagents [reaction.cName].color.g * realConcentrationC + reagents [reaction.dName].color.g * realConcentrationD) / (realConcentrationC + realConcentrationD); * float colorB = (reagents [reaction.cName].color.b * realConcentrationC + reagents [reaction.dName].color.b * realConcentrationD) / (realConcentrationC + realConcentrationD); * float colorA = (reagents [reaction.cName].color.a * realConcentrationC + reagents [reaction.dName].color.a * realConcentrationD) / (realConcentrationC + realConcentrationD); * * color = new Color (colorR, colorG, colorB, colorA);*/ }
private ReactionTable() { table = new MultiDictionary <string, string, string> (); //Load the reagents from file into memory reactions = ReactionsSaver.LoadReactions(); foreach (Compound c in CompoundFactory.GetInstance().CupboardCollection.Values) { foreach (ReactionClass re in reactions.Values) { if (re.reagent1 == c.Formula) { table[re.reagent1, re.reagent2] = re.name; table[re.reagent2, re.reagent1] = re.name; } } } }
void OnGUI() { EditorGUILayout.BeginVertical(); scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition, GUILayout.Width(0), GUILayout.Height(0)); EditorGUILayout.LabelField("Deletar Reacao:"); Dictionary <string, ReactionClass> reactions = ReactionsSaver.LoadReactions(); string[] names = new string[reactions.Count]; int counter = 0; foreach (string name in reactions.Keys) { names[counter] = name; counter++; } indexOfReactions = EditorGUILayout.Popup(indexOfReactions, names); selectedReaction = names[indexOfReactions]; if (selectedReaction != selectedReactionLastInteraction) { selected = false; } selectedReactionLastInteraction = selectedReaction; if (!selected) { if (GUILayout.Button("Checar")) { selected = true; reaction = reactions[names[indexOfReactions]]; } } EditorGUILayout.Space(); EditorGUILayout.Space(); if (selected) { EditorGUILayout.LabelField("Nome: " + reaction.name); EditorGUILayout.Space(); string bString = ""; if (reaction.stoichiometryR2 != 0) { bString = " + " + reaction.stoichiometryR2.ToString() + " " + reaction.reagent2; } string dString = ""; if (reaction.stoichiometrySubProduct != 0) { dString = " + " + reaction.stoichiometrySubProduct.ToString() + " " + reaction.subProduct; } EditorGUILayout.LabelField(reaction.stoichiometryR1.ToString() + " " + reaction.reagent1 + bString + " = " + reaction.stoichiometryMainProduct.ToString() + " " + reaction.mainProduct + dString); EditorGUILayout.Space(); if (!deleteSelected) { if (GUILayout.Button("DELETAR!")) { deleteSelected = true; } } else { EditorGUILayout.LabelField("Deletar?"); if (GUILayout.Button("Sim")) { Dictionary <string, ReactionClass> allReactions = ReactionsSaver.LoadReactions(); allReactions.Remove(names[indexOfReactions]); // ReactionsSaver.SaveReactions(allReactions); Debug.Log("Reaçao " + names[indexOfReactions] + " Removida com sucesso!"); this.Close(); } if (GUILayout.Button("Nao")) { this.Close(); } } } EditorGUILayout.EndScrollView(); EditorGUILayout.EndVertical(); }