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
|
||||
|
||||
- [ ] 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
|
||||
- [ ] 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
|
||||
}
|
|
@ -23,4 +23,6 @@ unsigned short soundsPortalOpen2 = SOUNDS_PORTAL_OPEN2;
|
|||
|
||||
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 soundsBallLoop;
|
||||
|
||||
#endif
|
|
@ -161,7 +161,7 @@ static void gameProc(void* arg) {
|
|||
contactSolverInit(&gContactSolver);
|
||||
portalSurfaceCleanupQueueInit();
|
||||
savefileNew();
|
||||
levelLoad(0);
|
||||
levelLoad(4);
|
||||
cutsceneRunnerReset();
|
||||
controllersInit();
|
||||
initAudio(fps);
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
#include "../build/assets/models/cube/cube.h"
|
||||
#include "../build/assets/materials/static.h"
|
||||
|
||||
#include "../audio/soundplayer.h"
|
||||
#include "../audio/clips.h"
|
||||
|
||||
#define BALL_RADIUS 0.1f
|
||||
|
||||
struct CollisionBox gBallCollisionBox = {
|
||||
|
@ -83,6 +86,7 @@ void ballBurnRender(void* data, struct DynamicRenderDataList* renderList, struct
|
|||
void ballInitInactive(struct Ball* ball) {
|
||||
ball->targetSpeed = 0.0f;
|
||||
ball->flags = 0;
|
||||
ball->soundLoopId = SOUND_ID_NONE;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
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) {
|
||||
|
@ -163,6 +169,8 @@ void ballUpdate(struct Ball* ball) {
|
|||
vector3Scale(&ball->rigidBody.velocity, &ball->rigidBody.velocity, ball->targetSpeed / currentSpeed);
|
||||
}
|
||||
|
||||
soundPlayerUpdatePosition(ball->soundLoopId, &ball->rigidBody.transform.position, &ball->rigidBody.velocity);
|
||||
|
||||
ball->rigidBody.angularVelocity = gOneVec;
|
||||
|
||||
dynamicSceneSetRoomFlags(ball->dynamicId, ROOM_FLAG_FROM_INDEX(ball->rigidBody.currentRoom));
|
||||
|
@ -174,6 +182,8 @@ void ballUpdate(struct Ball* ball) {
|
|||
ball->targetSpeed = 0.0f;
|
||||
collisionSceneRemoveDynamicObject(&ball->collisionObject);
|
||||
dynamicSceneRemove(ball->dynamicId);
|
||||
soundPlayerStop(ball->soundLoopId);
|
||||
ball->soundLoopId = SOUND_ID_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -197,6 +207,8 @@ void ballMarkCaught(struct Ball* ball) {
|
|||
ball->flags |= BallFlagsCaught;
|
||||
collisionSceneRemoveDynamicObject(&ball->collisionObject);
|
||||
rigidBodyMarkKinematic(&ball->rigidBody);
|
||||
soundPlayerStop(ball->soundLoopId);
|
||||
ball->soundLoopId = SOUND_ID_NONE;
|
||||
}
|
||||
|
||||
int isColliderForBall(struct CollisionObject* collisionObject) {
|
||||
|
|
|
@ -28,6 +28,7 @@ struct Ball {
|
|||
float lifetime;
|
||||
short dynamicId;
|
||||
short flags;
|
||||
short soundLoopId;
|
||||
};
|
||||
|
||||
void ballBurnMarkInit();
|
||||
|
|
Loading…
Reference in a new issue