summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorSergeanur <s.anureev@yandex.ua>2020-11-16 11:49:23 +0100
committerSergeanur <s.anureev@yandex.ua>2020-11-16 11:49:23 +0100
commitcdd30f4da5f220aa584eebddcfd5d16c39ca7426 (patch)
tree540a167f585e3779380dd3ce67140e75c9191e15 /src/core
parentsmall fix of fix (diff)
downloadre3-cdd30f4da5f220aa584eebddcfd5d16c39ca7426.tar
re3-cdd30f4da5f220aa584eebddcfd5d16c39ca7426.tar.gz
re3-cdd30f4da5f220aa584eebddcfd5d16c39ca7426.tar.bz2
re3-cdd30f4da5f220aa584eebddcfd5d16c39ca7426.tar.lz
re3-cdd30f4da5f220aa584eebddcfd5d16c39ca7426.tar.xz
re3-cdd30f4da5f220aa584eebddcfd5d16c39ca7426.tar.zst
re3-cdd30f4da5f220aa584eebddcfd5d16c39ca7426.zip
Diffstat (limited to 'src/core')
-rw-r--r--src/core/ColStore.cpp236
-rw-r--r--src/core/ColStore.h43
2 files changed, 0 insertions, 279 deletions
diff --git a/src/core/ColStore.cpp b/src/core/ColStore.cpp
deleted file mode 100644
index bca1e9b7..00000000
--- a/src/core/ColStore.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-#include "common.h"
-
-#include "templates.h"
-#include "General.h"
-#include "ModelInfo.h"
-#include "Streaming.h"
-#include "FileLoader.h"
-#include "Script.h"
-#include "Timer.h"
-#include "Camera.h"
-#include "Frontend.h"
-#include "Physical.h"
-#include "ColStore.h"
-
-CPool<ColDef,ColDef> *CColStore::ms_pColPool;
-
-void
-CColStore::Initialise(void)
-{
- if(ms_pColPool == nil)
- ms_pColPool = new CPool<ColDef,ColDef>(COLSTORESIZE, "CollisionFiles");
- AddColSlot("generic"); // slot 0. not streamed
-}
-
-void
-CColStore::Shutdown(void)
-{
- int i;
- for(i = 0; i < COLSTORESIZE; i++)
- RemoveColSlot(i);
- if(ms_pColPool)
- delete ms_pColPool;
- ms_pColPool = nil;
-}
-
-int
-CColStore::AddColSlot(const char *name)
-{
- ColDef *def = ms_pColPool->New();
- assert(def);
- def->isLoaded = false;
- def->unused = 0;
- def->bounds.left = 1000000.0f;
- def->bounds.top = 1000000.0f;
- def->bounds.right = -1000000.0f;
- def->bounds.bottom = -1000000.0f;
- def->minIndex = INT16_MAX;
- def->maxIndex = INT16_MIN;
- strcpy(def->name, name);
- return ms_pColPool->GetJustIndex(def);
-}
-
-void
-CColStore::RemoveColSlot(int slot)
-{
- if(GetSlot(slot)){
- if(GetSlot(slot)->isLoaded)
- RemoveCol(slot);
- ms_pColPool->Delete(GetSlot(slot));
- }
-}
-
-int
-CColStore::FindColSlot(const char *name)
-{
- ColDef *def;
- int size = ms_pColPool->GetSize();
- for(int i = 0; i < size; i++){
- def = GetSlot(i);
- if(def && !CGeneral::faststricmp(def->name, name))
- return i;
- }
- return -1;
-}
-
-char*
-CColStore::GetColName(int32 slot)
-{
- return GetSlot(slot)->name;
-}
-
-CRect&
-CColStore::GetBoundingBox(int32 slot)
-{
- return GetSlot(slot)->bounds;
-}
-
-void
-CColStore::IncludeModelIndex(int32 slot, int32 modelIndex)
-{
- ColDef *def = GetSlot(slot);
- if(modelIndex < def->minIndex)
- def->minIndex = modelIndex;
- if(modelIndex > def->maxIndex)
- def->maxIndex = modelIndex;
-}
-
-bool
-CColStore::LoadCol(int32 slot, uint8 *buffer, int32 bufsize)
-{
- bool success;
- ColDef *def = GetSlot(slot);
- if(def->minIndex > def->maxIndex)
- success = CFileLoader::LoadCollisionFileFirstTime(buffer, bufsize, slot);
- else
- success = CFileLoader::LoadCollisionFile(buffer, bufsize, slot);
- if(success)
- def->isLoaded = true;
- else
- debug("Failed to load Collision\n");
- return success;
-}
-
-void
-CColStore::RemoveCol(int32 slot)
-{
- int id;
- GetSlot(slot)->isLoaded = false;
- for(id = 0; id < MODELINFOSIZE; id++){
- CBaseModelInfo *mi = CModelInfo::GetModelInfo(id);
- if(mi){
- CColModel *col = mi->GetColModel();
- if(col && col->level == slot)
- col->RemoveCollisionVolumes();
- }
- }
-}
-
-void
-CColStore::LoadAllCollision(void)
-{
- int i;
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i))
- CStreaming::RequestCol(i, 0);
-
- CStreaming::LoadAllRequestedModels(false);
-}
-
-void
-CColStore::RemoveAllCollision(void)
-{
- int i;
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i))
- if(CStreaming::CanRemoveCol(i))
- CStreaming::RemoveCol(i);
-}
-
-static bool bLoadAtSecondPosition;
-static CVector2D secondPosition;
-
-void
-CColStore::AddCollisionNeededAtPosn(const CVector2D &pos)
-{
- bLoadAtSecondPosition = true;
- secondPosition = pos;
-}
-
-void
-CColStore::LoadCollision(const CVector2D &pos)
-{
- int i;
-
- if(CStreaming::ms_disableStreaming)
- return;
-
- for(i = 1; i < COLSTORESIZE; i++){
- if(GetSlot(i) == nil)
- continue;
-
- bool wantThisOne = false;
-
- if(GetBoundingBox(i).IsPointInside(pos) ||
- bLoadAtSecondPosition && GetBoundingBox(i).IsPointInside(secondPosition, -119.0f) ||
- CGeneral::faststrcmp(GetColName(i), "yacht") == 0){
- wantThisOne = true;
- }else{
- for (int j = 0; j < MAX_CLEANUP; j++) {
- CPhysical* pEntity = CTheScripts::MissionCleanup.DoesThisEntityWaitForCollision(j);
- if (pEntity && !pEntity->bDontLoadCollision && !pEntity->bIsFrozen) {
- if (GetBoundingBox(i).IsPointInside(pEntity->GetPosition(), -80.0f))
- wantThisOne = true;
- }
- }
- }
-
- if(wantThisOne)
- CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
- else
- CStreaming::RemoveCol(i);
- }
- bLoadAtSecondPosition = false;
-}
-
-void
-CColStore::RequestCollision(const CVector2D &pos)
-{
- int i;
-
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -115.0f))
- CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
-}
-
-void
-CColStore::EnsureCollisionIsInMemory(const CVector2D &pos)
-{
- int i;
-
- if(CStreaming::ms_disableStreaming)
- return;
-
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -110.0f) &&
- !CStreaming::HasColLoaded(i)){
- CStreaming::RequestCol(i, 0);
- if(TheCamera.GetScreenFadeStatus() == FADE_0)
- FrontEndMenuManager.MessageScreen("LOADCOL", false);
- CTimer::Suspend();
- CStreaming::LoadAllRequestedModels(false);
- CTimer::Resume();
- }
-}
-
-bool
-CColStore::HasCollisionLoaded(const CVector2D &pos)
-{
- int i;
-
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -115.0f) &&
- !GetSlot(i)->isLoaded)
- return false;
- return true;
-}
diff --git a/src/core/ColStore.h b/src/core/ColStore.h
deleted file mode 100644
index 8e2a3a70..00000000
--- a/src/core/ColStore.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#pragma once
-
-#include "templates.h"
-
-struct ColDef { // made up name
- int32 unused;
- bool isLoaded;
- CRect bounds;
- char name[20];
- int16 minIndex;
- int16 maxIndex;
-};
-
-class CColStore
-{
- static CPool<ColDef,ColDef> *ms_pColPool;
-
-public:
- static void Initialise(void);
- static void Shutdown(void);
- static int AddColSlot(const char *name);
- static void RemoveColSlot(int32 slot);
- static int FindColSlot(const char *name);
- static char *GetColName(int32 slot);
- static CRect &GetBoundingBox(int32 slot);
- static void IncludeModelIndex(int32 slot, int32 modelIndex);
- static bool LoadCol(int32 storeID, uint8 *buffer, int32 bufsize);
- static void RemoveCol(int32 slot);
- static void AddCollisionNeededAtPosn(const CVector2D &pos);
- static void LoadAllCollision(void);
- static void RemoveAllCollision(void);
- static void LoadCollision(const CVector2D &pos);
- static void RequestCollision(const CVector2D &pos);
- static void EnsureCollisionIsInMemory(const CVector2D &pos);
- static bool HasCollisionLoaded(const CVector2D &pos);
-
- static ColDef *GetSlot(int slot) {
- assert(slot >= 0);
- assert(ms_pColPool);
- assert(slot < ms_pColPool->GetSize());
- return ms_pColPool->GetSlot(slot);
- }
-};