mirror of
https://github.com/mwpenny/portal64-still-alive.git
synced 2024-10-20 10:37:37 -04:00
moved room changing code to collision_scene in its own function
This commit is contained in:
parent
ac697d8114
commit
e6ce03faef
|
@ -6,6 +6,7 @@
|
|||
#include "contact_solver.h"
|
||||
#include "../util/memory.h"
|
||||
#include "../scene/portal.h"
|
||||
#include "../levels/levels.h"
|
||||
|
||||
struct CollisionScene gCollisionScene;
|
||||
|
||||
|
@ -570,7 +571,15 @@ void collisionSceneWalkBroadphase(struct CollisionScene* collisionScene, struct
|
|||
}
|
||||
}
|
||||
|
||||
void collisionSceneUpdateObjectCurrentRooms(struct Vector3* prevPosList){
|
||||
for (unsigned i = 0; i < gCollisionScene.dynamicObjectCount; ++i) {
|
||||
int doorwayMask = worldCheckDoorwaySides(&gCurrentLevel->world, &prevPosList[i], gCollisionScene.dynamicObjects[i]->body->currentRoom);
|
||||
gCollisionScene.dynamicObjects[i]->body->currentRoom = worldCheckDoorwayCrossings(&gCurrentLevel->world, &gCollisionScene.dynamicObjects[i]->body->transform.position, gCollisionScene.dynamicObjects[i]->body->currentRoom, doorwayMask);
|
||||
}
|
||||
}
|
||||
|
||||
void collisionSceneCollideDynamicPairs(struct CollisionScene* collisionScene, struct Vector3* prevPos, struct Box3D* sweptBB) {
|
||||
|
||||
struct DynamicBroadphase dynamicBroadphase;
|
||||
|
||||
dynamicBroadphase.edges = stackMalloc(sizeof(union DynamicBroadphaseEdge) * collisionScene->dynamicObjectCount * 2);
|
||||
|
@ -585,6 +594,8 @@ void collisionSceneCollideDynamicPairs(struct CollisionScene* collisionScene, st
|
|||
|
||||
collisionSceneWalkBroadphase(collisionScene, &dynamicBroadphase, prevPos, sweptBB);
|
||||
|
||||
collisionSceneUpdateObjectCurrentRooms(prevPos);
|
||||
|
||||
stackMallocFree(dynamicBroadphase.objectsInCurrentRange);
|
||||
stackMallocFree(dynamicBroadphase.edges);
|
||||
}
|
||||
|
|
|
@ -728,11 +728,7 @@ void playerUpdate(struct Player* player, struct Transform* cameraTransform) {
|
|||
cameraTransform->position.y += DEAD_OFFSET;
|
||||
}
|
||||
|
||||
int prev_room = player->body.currentRoom;
|
||||
player->body.currentRoom = worldCheckDoorwayCrossings(&gCurrentLevel->world, &player->lookTransform.position, player->body.currentRoom, doorwayMask);
|
||||
if (playerIsGrabbing(player) && prev_room != player->body.currentRoom){
|
||||
player->grabConstraint.object->body->currentRoom = player->body.currentRoom;
|
||||
}
|
||||
dynamicSceneSetRoomFlags(player->dynamicId, ROOM_FLAG_FROM_INDEX(player->body.currentRoom));
|
||||
|
||||
float startTime = 0.0f;
|
||||
|
|
Loading…
Reference in a new issue