void OnTriggerEnter(Collider collider) { Logger.Log("PhenoFickContact::OnTriggerEnter collider=" + collider, Logger.Level.DEBUG); PhysicalMedium PMext = collider.gameObject.GetComponent <PhysicalMedium>(); if (PMext == null) { Logger.Log("PhenoFickContact::OnTriggerEnter collider.PMext == null", Logger.Level.TRACE); return; } int colliderMediumIdExt = PMext.MediumId; Medium colliderMediumExt = ReactionEngine.getMediumFromId(colliderMediumIdExt, _reactionEngine.getMediumList()); if (colliderMediumExt == null) { Logger.Log("PhenoFickContact::OnTriggerEnter The collided medium does not exist in the reaction Engine. Load it or change the MediumId number in the PhysicalMedium script.", Logger.Level.WARN); return; } PhysicalMedium PM = GetComponent <PhysicalMedium>(); if (PMext == null) { Logger.Log("PhenoFickContact::OnTriggerEnter this.PMext == null", Logger.Level.TRACE); return; } int mediumId = PM.MediumId; Medium medium = ReactionEngine.getMediumFromId(mediumId, _reactionEngine.getMediumList()); if (medium == null) { Logger.Log("PhenoFickContact::OnTriggerEnter The medium does not exist in the reaction Engine. Load it or change the MediumId number in the PhysicalMedium script.", Logger.Level.WARN); return; } float surface = Math.Min(PM.Size, PMext.Size); Fick fick = _reactionEngine.getFick(); FickReaction reaction = Fick.getFickReactionFromIds(colliderMediumIdExt, mediumId, fick.getFickReactions()); if (reaction == null) { Logger.Log("PhenoFickContact::OnTriggerEnter This FickReaction does not exist.", Logger.Level.WARN); return; } reaction.setSurface(surface); // set medium as medium of collider Logger.Log("colliderMediumIdExt : " + colliderMediumIdExt, Logger.Level.INFO); configureExternalDisplays(colliderMediumIdExt); _collidedMediumIds.AddLast(colliderMediumIdExt); /* * Logger.Log("PhenoFickContact::OnTriggerEnter" +" reaction.setSurface("+surface+")" +" _collidedMediumIds.Count="+_collidedMediumIds.Count +" _collidedMediumIds.Last.Value="+_collidedMediumIds.Last.Value * ,Logger.Level.); */ }
//! 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); }
//! 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); }
//! This function is called at the initialisation of the simulation (like a Constructor) public void Awake() { FileLoader fileLoader = new FileLoader(); _reactionsSets = new LinkedList<ReactionsSet>(); _moleculesSets = new LinkedList<MoleculesSet>(); _mediums = new LinkedList<Medium>(); foreach (string file in _reactionsFiles) LinkedListExtensions.AppendRange<ReactionsSet>(_reactionsSets, fileLoader.loadReactionsFromFile(file)); foreach (string file in _moleculesFiles) LinkedListExtensions.AppendRange<MoleculesSet>(_moleculesSets, fileLoader.loadMoleculesFromFile(file)); MediumLoader mediumLoader = new MediumLoader(); foreach (string file in _mediumsFiles) LinkedListExtensions.AppendRange<Medium>(_mediums, mediumLoader.loadMediumsFromFile(file)); foreach (Medium medium in _mediums) { medium.Init(_reactionsSets, _moleculesSets); medium.enableSequential(enableSequential); medium.enableNoise(enableNoise); medium.enableEnergy(enableEnergy); medium.enableShufflingReactionOrder = enableShufflingReactionOrder; } _fick = new Fick(); _fick.loadFicksReactionsFromFiles(_fickFiles, _mediums); _activeTransport = new ActiveTransport(); _activeTransport.loadActiveTransportReactionsFromFiles(_activeTransportFiles, _mediums); }
public void OnTriggerExit(Collider collider) { Logger.Log("PhenoFickContact::OnTriggerExit collider=" + collider, Logger.Level.DEBUG); PhysicalMedium PMext = collider.gameObject.GetComponent <PhysicalMedium>(); if (PMext == null) { Logger.Log("PhenoFickContact::OnTriggerExit collider.PMext == null", Logger.Level.TRACE); return; } int colliderMediumIdExt = PMext.MediumId; Medium colliderMediumExt = ReactionEngine.getMediumFromId(colliderMediumIdExt, _reactionEngine.getMediumList()); if (colliderMediumExt == null) { Logger.Log("PhenoFickContact::OnTriggerExit The collided medium does not exist in the reaction Engine. Load it or change the MediumId number in the PhysicalMedium script.", Logger.Level.WARN); return; } PhysicalMedium PM = GetComponent <PhysicalMedium>(); if (PMext == null) { Logger.Log("PhenoFickContact::OnTriggerExit this.PMext == null", Logger.Level.TRACE); return; } int mediumId = PM.MediumId; Medium medium = ReactionEngine.getMediumFromId(mediumId, _reactionEngine.getMediumList()); if (medium == null) { Logger.Log("PhenoFickContact::OnTriggerExit The medium does not exist in the reaction Engine. Load it or change the MediumId number in the PhysicalMedium script.", Logger.Level.WARN); return; } // un-set medium as medium of collider _collidedMediumIds.Remove(colliderMediumIdExt); //string nullLast = (null != _collidedMediumIds.Last)?_collidedMediumIds.Last.Value.ToString():"null"; /* * Logger.Log("PhenoFickContact::OnTriggerExit" +" _collidedMediumIds.Count="+_collidedMediumIds.Count +" _collidedMediumIds.Last.Value="+nullLast * ,Logger.Level.); */ //Logger.Log("PhenoFickContact::OnTriggerExit _collidedMediumIds.Last.Value="+nullLast, Logger.Level.); if (null != _collidedMediumIds.Last) { // TODO consider the current medium as superposition of mediums the ids of which are _collidedMediumIds configureExternalDisplays(_collidedMediumIds.Last.Value); } else { //not in any Fick contact anymore configureExternalDisplays(_vectroPanelInitMediumId); Fick fick = _reactionEngine.getFick(); FickReaction reaction = Fick.getFickReactionFromIds(colliderMediumIdExt, mediumId, fick.getFickReactions()); if (reaction == null) { Logger.Log("PhenoFickContact::OnTriggerExit This FickReaction does not exist.", Logger.Level.WARN); } reaction.setSurface(0); } }
//! This function is called at the initialisation of the simulation (like a Constructor) public void Awake() { FileLoader fileLoader = new FileLoader(); _reactionsSets = new LinkedList<ReactionsSet>(); _moleculesSets = new LinkedList<MoleculesSet>(); _mediums = new LinkedList<Medium>(); foreach (string file in _reactionsFiles) LinkedListExtensions.AppendRange<ReactionsSet>(_reactionsSets, fileLoader.loadReactionsFromFile(file)); foreach (string file in _moleculesFiles) LinkedListExtensions.AppendRange<MoleculesSet>(_moleculesSets, fileLoader.loadMoleculesFromFile(file)); MediumLoader mediumLoader = new MediumLoader(); foreach (string file in _mediumsFiles) LinkedListExtensions.AppendRange<Medium>(_mediums, mediumLoader.loadMediumsFromFile(file)); foreach (Medium medium in _mediums) medium.Init(_reactionsSets, _moleculesSets); _fick = new Fick(); _fick.loadFicksReactionsFromFiles(_fickFiles, _mediums); _activeTransport = new ActiveTransport(); _activeTransport.loadActiveTransportReactionsFromFiles(_activeTransportFiles, _mediums); }