Work on ball sound effects
This commit is contained in:
parent
8c14455096
commit
47cd6c3c5e
|
@ -85,7 +85,7 @@ Where `/home/james/Blender/blender-2.93.1-linux-x64` is the folder where Blender
|
||||||
## Current TODO list
|
## Current TODO list
|
||||||
|
|
||||||
- [ ] fix chell animation problem (fixed itself, investigate)
|
- [ ] fix chell animation problem (fixed itself, investigate)
|
||||||
- [ ] sound effects for ball
|
- [ ] sound effects for ball (portal_pak_dir/scripts/npc_sounds_energy_ball.txt)
|
||||||
--------------------------------------------------------
|
--------------------------------------------------------
|
||||||
- [ ] Skips audio sometimes
|
- [ ] Skips audio sometimes
|
||||||
- [ ] Portal not rending recursively sometimes
|
- [ ] Portal not rending recursively sometimes
|
||||||
|
|
16
assets/sound/weapons/physcannon/energy_sing_loop4.ins
Normal file
16
assets/sound/weapons/physcannon/energy_sing_loop4.ins
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
envelope Envelope {
|
||||||
|
attackTime = 0
|
||||||
|
attackVolume = 127
|
||||||
|
decayTime = -1
|
||||||
|
decayVolume = 127
|
||||||
|
releaseTime = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
sound Sound {
|
||||||
|
use("../../../../portal_pak_dir/sound/weapons/physcannon/energy_sing_loop4.wav")
|
||||||
|
loopCount = -1
|
||||||
|
loopEnd = -1
|
||||||
|
pan=64
|
||||||
|
envelope = Envelope
|
||||||
|
}
|
|
@ -24,3 +24,5 @@ unsigned short soundsPortalOpen2 = SOUNDS_PORTAL_OPEN2;
|
||||||
unsigned short soundsPortalFizzle = SOUNDS_PORTAL_FIZZLE2;
|
unsigned short soundsPortalFizzle = SOUNDS_PORTAL_FIZZLE2;
|
||||||
|
|
||||||
unsigned short soundsElevatorDoor = SOUNDS_DOORMOVE1;
|
unsigned short soundsElevatorDoor = SOUNDS_DOORMOVE1;
|
||||||
|
|
||||||
|
unsigned short soundsBallLoop = SOUNDS_ENERGY_SING_LOOP4;
|
|
@ -12,4 +12,6 @@ extern unsigned short soundsPortalFizzle;
|
||||||
|
|
||||||
extern unsigned short soundsElevatorDoor;
|
extern unsigned short soundsElevatorDoor;
|
||||||
|
|
||||||
|
extern unsigned short soundsBallLoop;
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -161,7 +161,7 @@ static void gameProc(void* arg) {
|
||||||
contactSolverInit(&gContactSolver);
|
contactSolverInit(&gContactSolver);
|
||||||
portalSurfaceCleanupQueueInit();
|
portalSurfaceCleanupQueueInit();
|
||||||
savefileNew();
|
savefileNew();
|
||||||
levelLoad(0);
|
levelLoad(4);
|
||||||
cutsceneRunnerReset();
|
cutsceneRunnerReset();
|
||||||
controllersInit();
|
controllersInit();
|
||||||
initAudio(fps);
|
initAudio(fps);
|
||||||
|
|
|
@ -13,6 +13,9 @@
|
||||||
#include "../build/assets/models/cube/cube.h"
|
#include "../build/assets/models/cube/cube.h"
|
||||||
#include "../build/assets/materials/static.h"
|
#include "../build/assets/materials/static.h"
|
||||||
|
|
||||||
|
#include "../audio/soundplayer.h"
|
||||||
|
#include "../audio/clips.h"
|
||||||
|
|
||||||
#define BALL_RADIUS 0.1f
|
#define BALL_RADIUS 0.1f
|
||||||
|
|
||||||
struct CollisionBox gBallCollisionBox = {
|
struct CollisionBox gBallCollisionBox = {
|
||||||
|
@ -83,6 +86,7 @@ void ballBurnRender(void* data, struct DynamicRenderDataList* renderList, struct
|
||||||
void ballInitInactive(struct Ball* ball) {
|
void ballInitInactive(struct Ball* ball) {
|
||||||
ball->targetSpeed = 0.0f;
|
ball->targetSpeed = 0.0f;
|
||||||
ball->flags = 0;
|
ball->flags = 0;
|
||||||
|
ball->soundLoopId = SOUND_ID_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ballInit(struct Ball* ball, struct Vector3* position, struct Vector3* velocity, short startingRoom, float ballLifetime) {
|
void ballInit(struct Ball* ball, struct Vector3* position, struct Vector3* velocity, short startingRoom, float ballLifetime) {
|
||||||
|
@ -104,6 +108,8 @@ void ballInit(struct Ball* ball, struct Vector3* position, struct Vector3* veloc
|
||||||
ball->dynamicId = dynamicSceneAddViewDependant(ball, ballRender, &ball->rigidBody.transform.position, BALL_RADIUS);
|
ball->dynamicId = dynamicSceneAddViewDependant(ball, ballRender, &ball->rigidBody.transform.position, BALL_RADIUS);
|
||||||
|
|
||||||
dynamicSceneSetRoomFlags(ball->dynamicId, ROOM_FLAG_FROM_INDEX(startingRoom));
|
dynamicSceneSetRoomFlags(ball->dynamicId, ROOM_FLAG_FROM_INDEX(startingRoom));
|
||||||
|
|
||||||
|
ball->soundLoopId = soundPlayerPlay(soundsBallLoop, 4.0f, 1.0f, &ball->rigidBody.transform.position, &ball->rigidBody.velocity);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ballTurnOnCollision(struct Ball* ball) {
|
void ballTurnOnCollision(struct Ball* ball) {
|
||||||
|
@ -163,6 +169,8 @@ void ballUpdate(struct Ball* ball) {
|
||||||
vector3Scale(&ball->rigidBody.velocity, &ball->rigidBody.velocity, ball->targetSpeed / currentSpeed);
|
vector3Scale(&ball->rigidBody.velocity, &ball->rigidBody.velocity, ball->targetSpeed / currentSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
soundPlayerUpdatePosition(ball->soundLoopId, &ball->rigidBody.transform.position, &ball->rigidBody.velocity);
|
||||||
|
|
||||||
ball->rigidBody.angularVelocity = gOneVec;
|
ball->rigidBody.angularVelocity = gOneVec;
|
||||||
|
|
||||||
dynamicSceneSetRoomFlags(ball->dynamicId, ROOM_FLAG_FROM_INDEX(ball->rigidBody.currentRoom));
|
dynamicSceneSetRoomFlags(ball->dynamicId, ROOM_FLAG_FROM_INDEX(ball->rigidBody.currentRoom));
|
||||||
|
@ -174,6 +182,8 @@ void ballUpdate(struct Ball* ball) {
|
||||||
ball->targetSpeed = 0.0f;
|
ball->targetSpeed = 0.0f;
|
||||||
collisionSceneRemoveDynamicObject(&ball->collisionObject);
|
collisionSceneRemoveDynamicObject(&ball->collisionObject);
|
||||||
dynamicSceneRemove(ball->dynamicId);
|
dynamicSceneRemove(ball->dynamicId);
|
||||||
|
soundPlayerStop(ball->soundLoopId);
|
||||||
|
ball->soundLoopId = SOUND_ID_NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,6 +207,8 @@ void ballMarkCaught(struct Ball* ball) {
|
||||||
ball->flags |= BallFlagsCaught;
|
ball->flags |= BallFlagsCaught;
|
||||||
collisionSceneRemoveDynamicObject(&ball->collisionObject);
|
collisionSceneRemoveDynamicObject(&ball->collisionObject);
|
||||||
rigidBodyMarkKinematic(&ball->rigidBody);
|
rigidBodyMarkKinematic(&ball->rigidBody);
|
||||||
|
soundPlayerStop(ball->soundLoopId);
|
||||||
|
ball->soundLoopId = SOUND_ID_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int isColliderForBall(struct CollisionObject* collisionObject) {
|
int isColliderForBall(struct CollisionObject* collisionObject) {
|
||||||
|
|
|
@ -28,6 +28,7 @@ struct Ball {
|
||||||
float lifetime;
|
float lifetime;
|
||||||
short dynamicId;
|
short dynamicId;
|
||||||
short flags;
|
short flags;
|
||||||
|
short soundLoopId;
|
||||||
};
|
};
|
||||||
|
|
||||||
void ballBurnMarkInit();
|
void ballBurnMarkInit();
|
||||||
|
|
Loading…
Reference in a new issue