Fizzle radio
This commit is contained in:
parent
5d9cd2e5ed
commit
9f92f1fac3
|
@ -1 +1,7 @@
|
|||
-alpha off -crop 197x145+0+0 -resize 48x
|
||||
-alpha off
|
||||
\( -clone 0 -crop 197x145+0+0 -resize 48x -repage +0+0 \)
|
||||
\( -clone 0 -crop 6x6+358+29 -repage +0+0 \)
|
||||
\( -clone 0 -crop 6x6+341+130 -repage +42+0 \)
|
||||
-compose Over
|
||||
-layers merge
|
||||
-crop 48x35+0+0
|
|
@ -75,37 +75,6 @@ materials:
|
|||
gDPSetCombineMode:
|
||||
color: ["SHADE", "0", "PRIMITIVE", "0"]
|
||||
|
||||
radio_face:
|
||||
gDPSetTile:
|
||||
filename: ../../portal_pak_modified/materials/models/props/radio.png
|
||||
fmt: G_IM_FMT_RGBA
|
||||
siz: G_IM_SIZ_16b
|
||||
|
||||
gSPGeometryMode:
|
||||
set: [G_LIGHTING, G_SHADE]
|
||||
gDPSetCombineMode:
|
||||
color: ["SHADE", "0", "TEXEL0", "0"]
|
||||
|
||||
radio_black:
|
||||
gDPSetPrimColor:
|
||||
r: 32
|
||||
g: 32
|
||||
b: 32
|
||||
gSPGeometryMode:
|
||||
set: [G_LIGHTING, G_SHADE]
|
||||
gDPSetCombineMode:
|
||||
color: ["SHADE", "0", "PRIMITIVE", "0"]
|
||||
|
||||
radio_white:
|
||||
gDPSetPrimColor:
|
||||
r: 240
|
||||
g: 240
|
||||
b: 240
|
||||
gSPGeometryMode:
|
||||
set: [G_LIGHTING, G_SHADE]
|
||||
gDPSetCombineMode:
|
||||
color: ["SHADE", "0", "PRIMITIVE", "0"]
|
||||
|
||||
solid_white:
|
||||
gDPSetPrimColor:
|
||||
r: 255
|
||||
|
|
Binary file not shown.
|
@ -117,8 +117,11 @@ void decorObjectDelete(struct DecorObject* decorObject) {
|
|||
free(decorObject);
|
||||
}
|
||||
|
||||
int decorObjectUpdateFizzler(struct CollisionObject* collisionObject, float* fizzleTime) {
|
||||
enum FizzleCheckResult decorObjectUpdateFizzler(struct CollisionObject* collisionObject, float* fizzleTime) {
|
||||
enum FizzleCheckResult result = FizzleCheckResultNone;
|
||||
|
||||
if (collisionObject->body && collisionObject->body->flags & RigidBodyFizzled) {
|
||||
|
||||
if (*fizzleTime == 0.0f) {
|
||||
vector3Scale(&collisionObject->body->velocity, &collisionObject->body->velocity, 0.25f);
|
||||
|
||||
|
@ -128,6 +131,8 @@ int decorObjectUpdateFizzler(struct CollisionObject* collisionObject, float* fiz
|
|||
quatMultVector(&randomRotation, &gRight, &randomAngularVelocity);
|
||||
|
||||
vector3AddScaled(&collisionObject->body->angularVelocity, &randomAngularVelocity, 0.3f, &collisionObject->body->angularVelocity);
|
||||
|
||||
result = FizzleCheckResultStart;
|
||||
}
|
||||
|
||||
*fizzleTime += FIZZLE_TIME_STEP;
|
||||
|
@ -136,11 +141,11 @@ int decorObjectUpdateFizzler(struct CollisionObject* collisionObject, float* fiz
|
|||
|
||||
if (*fizzleTime > 1.0f) {
|
||||
collisionObject->body->flags &= ~RigidBodyFizzled;
|
||||
return 1;
|
||||
result = FizzleCheckResultEnd;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
int decorObjectUpdate(struct DecorObject* decorObject) {
|
||||
|
@ -152,7 +157,14 @@ int decorObjectUpdate(struct DecorObject* decorObject) {
|
|||
);
|
||||
}
|
||||
|
||||
if (decorObjectUpdateFizzler(&decorObject->collisionObject, &decorObject->fizzleTime)) {
|
||||
enum FizzleCheckResult fizzleResult = decorObjectUpdateFizzler(&decorObject->collisionObject, &decorObject->fizzleTime);
|
||||
|
||||
if (fizzleResult == FizzleCheckResultStart) {
|
||||
if (decorObject->playingSound != SOUND_ID_NONE) {
|
||||
soundPlayerStop(decorObject->playingSound);
|
||||
decorObject->playingSound = SOUND_ID_NONE;
|
||||
}
|
||||
} else if (fizzleResult == FizzleCheckResultEnd) {
|
||||
if (decorObject->definition->flags & DecorObjectFlagsImportant) {
|
||||
decorObjectReset(decorObject);
|
||||
dynamicSceneSetRoomFlags(decorObject->dynamicId, ROOM_FLAG_FROM_INDEX(decorObject->rigidBody.currentRoom));
|
||||
|
|
|
@ -42,7 +42,13 @@ void decorObjectDelete(struct DecorObject* decorObject);
|
|||
|
||||
int decorObjectUpdate(struct DecorObject* decorObject);
|
||||
|
||||
enum FizzleCheckResult {
|
||||
FizzleCheckResultNone,
|
||||
FizzleCheckResultStart,
|
||||
FizzleCheckResultEnd,
|
||||
};
|
||||
|
||||
Gfx* decorBuildFizzleGfx(Gfx* gfxToRender, float fizzleTime, struct RenderState* renderState);
|
||||
int decorObjectUpdateFizzler(struct CollisionObject* collisionObject, float* fizzleTime);
|
||||
enum FizzleCheckResult decorObjectUpdateFizzler(struct CollisionObject* collisionObject, float* fizzleTime);
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue