Skip to content

Commit

Permalink
Merge pull request #3124 from t3du/SpeakerNodes
Browse files Browse the repository at this point in the history
SpeakerNodes: setSound and setVolume
  • Loading branch information
luboslenco authored Jan 8, 2025
2 parents ffb7730 + 27e207b commit dadf799
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 0 deletions.
18 changes: 18 additions & 0 deletions armory/Sources/armory/logicnode/SetSoundNode.hx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package armory.logicnode;

import iron.object.SpeakerObject;

class SetSoundNode extends LogicNode {

public function new(tree: LogicTree) {
super(tree);
}

override function run(from: Int) {
var object: SpeakerObject = cast(inputs[1].get(), SpeakerObject);
var sound: String = inputs[2].get();
if (object == null || sound == null) return;
object.setSound(sound);
runOutput(0);
}
}
17 changes: 17 additions & 0 deletions armory/Sources/armory/logicnode/SetVolumeSoundNode.hx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package armory.logicnode;

import iron.object.SpeakerObject;

class SetVolumeSoundNode extends LogicNode {

public function new(tree: LogicTree) {
super(tree);
}

override function run(from: Int) {
var object: SpeakerObject = cast(inputs[1].get(), SpeakerObject);
if (object == null) return;
object.setVolume(inputs[2].get());
runOutput(0);
}
}
14 changes: 14 additions & 0 deletions armory/Sources/iron/object/SpeakerObject.hx
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,20 @@ class SpeakerObject extends Object {
channels.splice(0, channels.length);
}

public function setSound(sound: String) {
if (sound == null) return;

data.sound = sound;

Data.getSound(sound, function(sound: kha.Sound) {
this.sound = sound;
});
}

public function setVolume(volume: FastFloat) {
data.volume = volume;
}

function update() {
if (paused) return;
for (c in channels) if (c.finished) channels.remove(c);
Expand Down
18 changes: 18 additions & 0 deletions armory/blender/arm/logicnode/sound/LN_set_sound_speaker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from arm.logicnode.arm_nodes import *

class SetSoundSpeakerNode(ArmLogicTreeNode):
"""sets sound name of the given speaker object.
@seeNode Play Speaker
@seeNode Stop Speaker
"""
bl_idname = 'LNSetSoundNode'
bl_label = 'Set Sound Speaker'
arm_version = 1

def arm_init(self, context):
self.add_input('ArmNodeSocketAction', 'In')
self.add_input('ArmNodeSocketObject', 'Speaker')
self.add_input('ArmStringSocket', 'Sound Name')

self.add_output('ArmNodeSocketAction', 'Out')
18 changes: 18 additions & 0 deletions armory/blender/arm/logicnode/sound/LN_set_volume_speaker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from arm.logicnode.arm_nodes import *

class SetVolumeSoundNode(ArmLogicTreeNode):
"""sets volume of the given speaker object.
@seeNode Play Speaker
@seeNode Stop Speaker
"""
bl_idname = 'LNSetVolumeSoundNode'
bl_label = 'Set Volume Speaker'
arm_version = 1

def arm_init(self, context):
self.add_input('ArmNodeSocketAction', 'In')
self.add_input('ArmNodeSocketObject', 'Speaker')
self.add_input('ArmFloatSocket', 'Volume')

self.add_output('ArmNodeSocketAction', 'Out')

0 comments on commit dadf799

Please sign in to comment.