Source code for morse.blender.calling

import logging; logger = logging.getLogger("morse." + __name__)
import os

from morse.core import blenderapi

""" Generic Python Module to be called by all MORSE components.
    It will locate the calling object in the dictionary,
    retrieve the stored instance and call its 'action' method. """

[docs]def robot_action(contr): """ Call the 'action' method of the correct robot. """ scene = blenderapi.scene() # if current scene is not the main MORSE logic scene, pass if not scene or scene.name != 'S.MORSE_LOGIC': return # Do nothing if morse has not been properly initialised simu = blenderapi.persistantstorage() if "morse_initialised" not in simu or not simu.morse_initialised: return # Execute only when the sensor is really activated if contr.sensors[0].positive: obj = contr.owner # Do nothing if the component was not initialised. # Should be the case for external robots and components robot_object = simu.robotDict.get(obj, None) if robot_object: robot_object.action()
[docs]def component_action(contr): """ Call the 'action' method of the correct component. """ scene = blenderapi.scene() # if current scene is not the main MORSE logic scene, pass if not scene or scene.name != 'S.MORSE_LOGIC': return # Do nothing if morse has not been properly initialised simu = blenderapi.persistantstorage() if "morse_initialised" not in simu or not simu.morse_initialised: return # Execute only when the sensor is really activated if contr.sensors[0].positive: obj = contr.owner # Do nothing if the component was not initialised. # Should be the case for external robots and components cmpt_object = simu.componentDict.get(obj.name, None) if cmpt_object: cmpt_object.action()
[docs]def sensor_action(contr): """ Call the 'action' method of the correct sensor. """ component_action(contr)
[docs]def actuator_action(contr): """ Call the 'action' method of the correct actuator. """ component_action(contr)