armory/blender/arm/logicnode/sound_play_sound.py

56 lines
1.8 KiB
Python
Raw Normal View History

2017-04-08 00:34:45 +02:00
import bpy
from bpy.props import *
from bpy.types import Node, NodeSocket
from arm.logicnode.arm_nodes import *
class PlaySoundNode(Node, ArmLogicTreeNode):
"""Play sound node"""
2018-02-21 23:23:23 +01:00
bl_idname = 'LNPlaySoundRawNode'
2017-04-08 00:34:45 +02:00
bl_label = 'Play Sound'
2020-08-07 19:05:48 +02:00
bl_icon = 'NONE'
2017-04-08 00:34:45 +02:00
property0: PointerProperty(name='', type=bpy.types.Sound)
property1: BoolProperty(
2020-05-15 23:32:48 +02:00
name='Loop',
description='Play the sound in a loop',
default=False)
property2: BoolProperty(
name='Retrigger',
description='Play the sound from the beginning everytime',
default=False)
property3: BoolProperty(
name='Use Custom Sample Rate',
description='If enabled, override the default sample rate',
default=False)
property4: IntProperty(
name='Sample Rate',
description='Set the sample rate used to play this sound',
default=44100,
min=0)
2018-02-21 23:23:23 +01:00
2017-04-08 00:34:45 +02:00
def init(self, context):
self.inputs.new('ArmNodeSocketAction', 'Play')
self.inputs.new('ArmNodeSocketAction', 'Pause')
self.inputs.new('ArmNodeSocketAction', 'Stop')
2017-04-08 20:05:35 +02:00
self.outputs.new('ArmNodeSocketAction', 'Out')
self.outputs.new('ArmNodeSocketAction', 'Running')
self.outputs.new('ArmNodeSocketAction', 'Done')
2017-04-08 00:34:45 +02:00
2018-02-21 23:23:23 +01:00
def draw_buttons(self, context, layout):
layout.prop_search(self, 'property0', bpy.data, 'sounds', icon='NONE', text='')
col = layout.column(align=True)
col.prop(self, 'property1')
col.prop(self, 'property2')
2020-05-15 23:32:48 +02:00
layout.label(text="Overrides:")
# Sample rate
split = layout.split(factor=0.15, align=False)
split.prop(self, 'property3', text="")
row = split.row()
if not self.property3:
row.enabled = False
row.prop(self, 'property4')
2017-04-08 00:34:45 +02:00
add_node(PlaySoundNode, category='Sound')