Exemple #1
0
        /// <summary>
        /// Finds a random free molecule of a specific species.
        /// </summary>
        /// <returns><c>true</c>, if random molecule for reaction was found, <c>false</c> otherwise.</returns>
        /// <param name="species">Species.</param>
        /// <param name="molecule">Molecule.</param>
        private bool FindRandomMoleculeForReaction(MoleculeSpecies species, out Molecule molecule)
        {
            ShortKeyDict <MoleculeSpecies, MoleculeSet> .Entry entry;
            if (collection.Find(species, out entry))
            {
                MoleculeCollection free = entry.Value.Free;

                ulong c = free.Count;

                if (c == 0)
                {
                    molecule = null;
                    return(false);
                }

                uint i = (uint)(Random.value * c);
                if (i == free.Count)
                {
                    i--;
                }                                             // because Random.value's maximum is inclusive 1

                foreach (var m in free)
                {
                    if (i == 0)
                    {
                        molecule = m;
                        return(true);
                    }
                    i--;
                }

                throw new System.Exception("should not be possible");
            }
            else
            {
                molecule = null;
                return(false);
            }
        }
Exemple #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CellUnity.MoleculeManager+MoleculeSet"/> class.
 /// </summary>
 /// <param name="species">Species of the MolculeSet</param>
 public MoleculeSet(MoleculeSpecies species)
 {
     Free     = new MoleculeCollection(species.Name + " free");
     Reacting = new MoleculeCollection(species.Name + " reacting");
 }
Exemple #3
0
 public void Dispose()
 {
     current    = null;
     collection = null;
 }
Exemple #4
0
 public Enumerator(MoleculeCollection collection)
 {
     this.collection = collection;
 }