//! This function is called at the initialisation of the simulation (like a Constructor)
void Awake()
{
_instance = this;
FileLoader fileLoader = new FileLoader();
_reactionsSets = new LinkedList <ReactionSet>();
_moleculesSets = new LinkedList <MoleculeSet>();
_mediums = new LinkedList <Medium>();
//TODO there is only one file in _moleculesFiles and in _reactionsFiles
foreach (string file in _reactionsFiles)
{
LinkedList <ReactionSet> lr = fileLoader.loadObjectsFromFile <ReactionSet>(file, "reactions");
if (null != lr)
{
LinkedListExtensions.AppendRange <ReactionSet>(_reactionsSets, lr);
}
}
foreach (string file in _moleculesFiles)
{
Logger.Log("ReactionEngine::Awake() loading molecules from file", Logger.Level.DEBUG);
LinkedList <MoleculeSet> lm = fileLoader.loadObjectsFromFile <MoleculeSet>(file, "molecules");
if (null != lm)
{
LinkedListExtensions.AppendRange <MoleculeSet>(_moleculesSets, lm);
}
Logger.Log("ReactionEngine::Awake() loading molecules from file done"
+ ": _moleculesSets=" + Logger.ToString <MoleculeSet>(_moleculesSets)
, Logger.Level.DEBUG);
}
foreach (string file in _mediumsFiles)
{
LinkedList <Medium> lmed = fileLoader.loadObjectsFromFile <Medium>(file, "Medium");
if (null != lmed)
{
LinkedListExtensions.AppendRange <Medium>(_mediums, lmed);
}
}
foreach (Medium medium in _mediums)
{
medium.Init(_reactionsSets, _moleculesSets);
medium.enableSequential(enableSequential);
medium.enableNoise(enableNoise);
medium.enableEnergy(enableEnergy);
medium.enableShufflingReactionOrder = enableShufflingReactionOrder;
}
Logger.Log("ReactionEngine::Awake() FickReactions starting", Logger.Level.INFO);
_fick = new Fick();
_fick.loadFicksReactionsFromFiles(_fickFiles, _mediums);
Logger.Log("ReactionEngine::Awake() activeTransport starting", Logger.Level.INFO);
_activeTransport = new ActiveTransport();
_activeTransport.loadActiveTransportReactionsFromFiles(_activeTransportFiles, _mediums);
Logger.Log("ReactionEngine::Awake() done", Logger.Level.INFO);
}