private void Update() { int detectedSamples = 0; var currentPosition = new Vector2(transform.position.x, transform.position.y); CompDict composition = new CompDict(); bool catlystPresent = false; foreach (var item in Physics2D.OverlapBoxAll(currentPosition + reactionOrigin, reactionSize, 0)) { var catalyst = item.GetComponent <Catalyst>(); if (catalyst != null) { catlystPresent = true; } var liquid = item.GetComponent <Liquid>(); if (liquid == null) { continue; } detectedSamples++; foreach (var kvp in liquid.Composition) { if (composition.ContainsKey(kvp.Key)) { composition[kvp.Key] = composition[kvp.Key] + kvp.Value; } else { composition.Add(kvp.Key, kvp.Value); } } } if (detectedSamples > 0) { Liquid.Normalize(composition); foreach (var item in Physics2D.OverlapBoxAll(currentPosition + reactionOrigin, reactionSize, 0)) { var liquid = item.GetComponent <Liquid>(); if (liquid == null) { continue; } liquid.CatalystPresent = catlystPresent; liquid.Composition = CompDict.Clone(composition); } } }
private void Update() { var currentPosition = new Vector2(transform.position.x, transform.position.y); if (Physics2D.OverlapBoxAll(currentPosition + probeOrigin, probeSize, 0).Length == 0) { outputText.text = "No Sample"; } int detectedSamples = 0; CompDict composition = new CompDict(); foreach (var item in Physics2D.OverlapBoxAll(currentPosition + probeOrigin, probeSize, 0)) { var liquid = item.GetComponent <Liquid>(); if (liquid == null) { continue; } detectedSamples++; foreach (var kvp in liquid.Composition) { if (composition.ContainsKey(kvp.Key)) { composition[kvp.Key] = composition[kvp.Key] + kvp.Value; } else { composition.Add(kvp.Key, kvp.Value); } } } if (detectedSamples == 0) { outputText.text = "No Sample"; } else { //normalize results Liquid.Normalize(composition); outputText.text = Liquid.GetComposition(composition); } }