Page 1 of 1
Getting the current engine thrust level
Posted: Sat Aug 23, 2014 9:18 pm
by streb2001
I am trying to modify a script to change the volume of an engine sound according to the current engine thrust level (w and s keys). I am reading the player.ship.thrust property but it always seems to return the ship's maximum thrust (=32 for the Cobra III).
Is there a property that will return the actual engine level, in this case somewhere between 0 and 32 presumably?
The sound plays OK, I just cannot change the volume.
Here are my code snippets:
Code: Select all
this.sprTimer = new Timer(this,this.sprTick,0,0.25); this.sprTimer.stop();
this.sprEngineSound = new SoundSource;
sprEngineSound.sound = "sprEngine.ogg";
sprEngineSound.loop = true;
this.sprTick = function()
{
//normalise to produce volume 0 - 1
sprEngineSound.volume = player.ship.thrust/player.ship.maxThrust;
//debug output
log(this.name,"Current Level: "+player.ship.thrust); //always gives 32
return;
};
this.shipWillLaunchFromStation = function(station)
{
// ... other code
this.sprTimer.start();
sprEngineSound.play();
};
Re: Getting the current engine thrust level
Posted: Sat Aug 23, 2014 9:23 pm
by cim
The thrust
property measures the ability of the ship to accelerate. While it could in theory change, it doesn't tend to. (I'm not sure there are any circumstances in which the JS value changes for the player ship)
You probably want player.ship.speed
and player.ship.maxSpeed
instead (noting that speed
will exceed maxSpeed
under injectors or torus drive, but the SoundSource will treat any volume > 1 as equal to 1 anyway, so you probably don't need to worry about that here)
Re: Getting the current engine thrust level
Posted: Sat Aug 23, 2014 9:38 pm
by streb2001
Excellent! Thank you, that works nicely. I now have a custom engine roar whose volume is proportional to my speed.
btw I have done this by hacking the main script in the BGS expansion along with stealing the engine sound from the XR2 in Orbiter.
ed. top tip for other newbie script hackers: Hold the Shift key down when starting Oolite! It seems that scripts are cached and changes will not register even after a reboot.
Re: Getting the current engine thrust level
Posted: Sun Aug 24, 2014 12:24 am
by dertien
Welcome to the boards streb2001
Nice job on the script, I was thinking about missing engine sound for the player only yesterday.
streb2001 wrote:Excellent! Thank you, that works nicely. I now have a custom engine roar whose volume is proportional to my speed.
btw I have done this by hacking the main script in the BGS expansion along with stealing the engine sound from the XR2 in Orbiter.
ed. top tip for other newbie script hackers: Hold the Shift key down when starting Oolite! It seems that scripts are cached and changes will not register even after a reboot.
Yes, or you can always add the line
to the .GNUstepDefaults file like so:
Code: Select all
{
NSGlobalDomain = {
};
oolite = {
"Commander Gordts-humbletrash" = "-6792";
"Jameson-humbletrash" = "-29624";
JoystickAxes = {
0 = {
isAxis = 1;
stickAxBt = 0;
stickNum = 0;
};
1 = {
isAxis = 1;
stickAxBt = 1;
stickNum = 0;
};
};
JoystickButs = {
0 = {
isAxis = 0;
stickAxBt = 3;
stickNum = 0;
};
1 = {
isAxis = 0;
stickAxBt = 1;
stickNum = 0;
};
12 = {
isAxis = 0;
stickAxBt = 11;
stickNum = 0;
};
13 = {
isAxis = 0;
stickAxBt = 7;
stickNum = 0;
};
14 = {
isAxis = 0;
stickAxBt = 10;
stickNum = 0;
};
15 = {
isAxis = 0;
stickAxBt = 67;
stickNum = 0;
};
16 = {
isAxis = 0;
stickAxBt = 65;
stickNum = 0;
};
17 = {
isAxis = 0;
stickAxBt = 6;
stickNum = 0;
};
19 = {
isAxis = 0;
stickAxBt = 5;
stickNum = 0;
};
21 = {
isAxis = 0;
stickAxBt = 4;
stickNum = 0;
};
23 = {
isAxis = 0;
stickAxBt = 2;
stickNum = 0;
};
32 = {
isAxis = 0;
stickAxBt = 64;
stickNum = 0;
};
33 = {
isAxis = 0;
stickAxBt = 66;
stickNum = 0;
};
8 = {
isAxis = 0;
stickAxBt = 9;
stickNum = 0;
};
9 = {
isAxis = 0;
stickAxBt = 8;
stickNum = 0;
};
};
PitchAxisProfile = {
Deadzone = 0.05;
Parameter = 1;
Power = 1;
Type = Standard;
};
RollAxisProfile = {
Deadzone = 0.05;
Parameter = 1;
Power = 1;
Type = Standard;
};
YawAxisProfile = {
Deadzone = 0.05;
Parameter = 1;
Power = 1;
Type = Standard;
};
"always-flush-cache" = YES;
"debug-settings-override" = {
};
fullscreen = YES;
"music mode" = off;
"save-directory" = "C:\\games/Oolite-1.81-blue ownbuild/oolite.app/oolite-saves";
"show-ship-model-in-status-screen" = YES;
};
}
Open file with notepad ++ and not notepad since it leaves garbage (carriage returns)
Then you won't have to worry about the shift key again ever.