[bb] DistantSound() by aab [ 1+ years ago ]

Started by BlitzBot, June 29, 2017, 00:28:42

Previous topic - Next topic

BlitzBot

Title : DistantSound()
Author : aab
Posted : 1+ years ago

Description : EmitSound wasn't working for me so i developed this simple version which works rather well:

distantSound(soundHandle,cam,entity,range#=500,volume#=1,inview#=0.7)

soundhandle-The sound loaded with loadsound, that you wish to play

cam-the camera handle that you wish the sound to play to
entity-the emitting entity

range-the range apon which the sound can no longer be heard(ie has dissipated completely)[default is 500]

volume-The max starting volume. This also alters the dissipation of the sound: increasing the volume will cut the sound off before it fades completely [default is 1]

inview#- This determines the (percentage/100) of volume retained while within the cameras view: in other words if not in view, that much of the volume will be lost. [defaults to 0.7]

The sounds are therefore quiet from a distance, loud close up, and quieter when out of view


Code :
Code (blitzbasic) Select
Function distantSound(soundHandle,cam,entity,range#=500,volume#=1,inview#=0.7)
If range#<1 range#=1
;If Not EntityInView(entity,cam) ChannelVolume soundHandle,0.5

; dis#=Sqr(Abs(EntityX(entity)-EntityX(cam))*Abs(EntityX(entity)-EntityX(cam))+Abs(EntityY(entity)-EntityY(cam))*Abs(EntityY(entity)-EntityY(cam))+Abs(EntityZ(entity)-EntityZ(cam))*Abs(EntityZ(entity)-EntityZ(cam)))
dis#=entitydistance(cam,entity)
If 1-dis#/range#>0 And 1-dis#/range#<1
SoundVolume soundHandle,volume#*(1-dis#/range#)*((1-inview)+(Float#(EntityInView(entity,cam))*inview))
PlaySound soundHandle

EndIf

End Function






;This one Checks for Co-ordinates rather than entities
Function distantSoundCoOrd(soundHandle,x1,y1,z1,x2,y2,z2,range#=500,volume#=1,inview#=0.7)
If range#<1 range#=1
;If Not EntityInView(entity,cam) ChannelVolume soundHandle,0.5

dis#=Sqr(Abs(x2-x1)*Abs(x2-x1))+Abs(y2-y1)*Abs(y2-y1)+Abs(z2-z1)*Abs(z2-z1)

If 1-dis#/range#>0 And 1-dis#/range#<1
SoundVolume soundHandle,volume#*(1-dis#/range#)*((1-inview)+(Float#(EntityInView(entity,cam))*inview))
PlaySound soundHandle

EndIf

End Function


Comments : none...