Source code for morse.actuators.sound
import logging; logger = logging.getLogger("morse." + __name__)
from morse.core import blenderapi
from morse.core.actuator import Actuator
from morse.helpers.components import add_data
[docs]class Sound(Actuator):
"""
This actuator is a simple On/Off sound. Based on `Sound
<http://wiki.blender.org/index.php/Doc:2.6/Manual/Game_Engine/Logic/Actuators/Sound>`_
actuator.
"""
_name = "Sound"
_short_desc = "A simple sound actuator"
add_data('mode', "stop", 'string', "mode, enum in ['play','pause','stop']")
def __init__(self, obj, parent=None):
logger.info("%s initialization" % obj.name)
# Call the constructor of the parent class
Actuator.__init__(self, obj, parent)
self.local_data['mode'] = obj['mode']
self._last_mode = None
logger.info('Component initialized')
[docs] def default_action(self):
""" Apply ``play`` to this actuator. """
# get the Blender Logic Controller
contr = blenderapi.controller()
# http://www.blender.org/documentation/blender_python_api_2_65_release/bge.types.html#bge.types.KX_SoundActuator
if self.local_data['mode'] == self._last_mode:
return
act = contr.actuators[-1]
contr.activate(act) # enables 3D effect (!)
if self.local_data['mode'] == 'play':
act.startSound()
elif self.local_data['mode'] == 'pause':
act.pauseSound()
elif self.local_data['mode'] == 'stop':
act.stopSound()
# new last mode
self._last_mode = self.local_data['mode']