summaryrefslogtreecommitdiff
path: root/src/KingSystem
diff options
context:
space:
mode:
authortheo3 <arisstephenson2@gmail.com>2021-07-06 12:49:02 -0700
committertheo3 <arisstephenson2@gmail.com>2021-07-06 15:43:57 -0700
commitb74df64276fb87ffebef8c7e0b02bd7052b776d9 (patch)
treeff3994ca603445a7e6043cc68e1f751933140348 /src/KingSystem
parent4cba2eb093fbc452db88e33643b3ca293ff02213 (diff)
move ForestRenderer and ClusteredRenderer
Diffstat (limited to 'src/KingSystem')
-rw-r--r--src/KingSystem/ActorSystem/CMakeLists.txt2
-rw-r--r--src/KingSystem/ActorSystem/actClusteredRenderer.cpp1
-rw-r--r--src/KingSystem/ActorSystem/actClusteredRenderer.h (renamed from src/KingSystem/Map/mapClusteredRenderer.h)4
-rw-r--r--src/KingSystem/CMakeLists.txt1
-rw-r--r--src/KingSystem/Graphics/CMakeLists.txt4
-rw-r--r--src/KingSystem/Graphics/gfxForestRenderer.cpp1
-rw-r--r--src/KingSystem/Graphics/gfxForestRenderer.h12
-rw-r--r--src/KingSystem/Map/CMakeLists.txt4
-rw-r--r--src/KingSystem/Map/mapClusteredRenderer.cpp1
-rw-r--r--src/KingSystem/Map/mapObject.cpp5
-rw-r--r--src/KingSystem/Map/mapObjectLink.cpp48
-rw-r--r--src/KingSystem/Map/mapObjectLink.h11
-rw-r--r--src/KingSystem/Map/mapPlacementMgr.cpp2
-rw-r--r--src/KingSystem/Map/mapPlacementMgr.h6
-rw-r--r--src/KingSystem/Map/mapRail.cpp1
-rw-r--r--src/KingSystem/Map/mapRail.h7
-rw-r--r--src/KingSystem/Map/mapStagePreActorCache.h11
17 files changed, 65 insertions, 56 deletions
diff --git a/src/KingSystem/ActorSystem/CMakeLists.txt b/src/KingSystem/ActorSystem/CMakeLists.txt
index 27fd0a4a..fe74e421 100644
--- a/src/KingSystem/ActorSystem/CMakeLists.txt
+++ b/src/KingSystem/ActorSystem/CMakeLists.txt
@@ -86,6 +86,8 @@ target_sources(uking PRIVATE
actBaseProcMgr.h
actBaseProcUnit.cpp
actBaseProcUnit.h
+ actClusteredRenderer.cpp
+ actClusteredRenderer.h
actDebug.cpp
actDebug.h
actGlobalParameter.cpp
diff --git a/src/KingSystem/ActorSystem/actClusteredRenderer.cpp b/src/KingSystem/ActorSystem/actClusteredRenderer.cpp
new file mode 100644
index 00000000..fdf4b2fd
--- /dev/null
+++ b/src/KingSystem/ActorSystem/actClusteredRenderer.cpp
@@ -0,0 +1 @@
+#include "KingSystem/ActorSystem/actClusteredRenderer.h"
diff --git a/src/KingSystem/Map/mapClusteredRenderer.h b/src/KingSystem/ActorSystem/actClusteredRenderer.h
index 91103d68..d9e68db9 100644
--- a/src/KingSystem/Map/mapClusteredRenderer.h
+++ b/src/KingSystem/ActorSystem/actClusteredRenderer.h
@@ -1,10 +1,10 @@
#pragma once
-namespace ksys::map {
+namespace ksys::act {
class ClusteredRenderer {
public:
void startThread();
};
-} // namespace ksys::map
+} // namespace ksys::act
diff --git a/src/KingSystem/CMakeLists.txt b/src/KingSystem/CMakeLists.txt
index 80c07ae8..9c40f3ff 100644
--- a/src/KingSystem/CMakeLists.txt
+++ b/src/KingSystem/CMakeLists.txt
@@ -9,6 +9,7 @@ add_subdirectory(Ecosystem)
add_subdirectory(Effect)
add_subdirectory(Event)
add_subdirectory(Framework)
+add_subdirectory(Graphics)
add_subdirectory(Map)
add_subdirectory(Mii)
add_subdirectory(Physics)
diff --git a/src/KingSystem/Graphics/CMakeLists.txt b/src/KingSystem/Graphics/CMakeLists.txt
new file mode 100644
index 00000000..fdc1c04b
--- /dev/null
+++ b/src/KingSystem/Graphics/CMakeLists.txt
@@ -0,0 +1,4 @@
+target_sources(uking PRIVATE
+ gfxForestRenderer.cpp
+ gfxForestRenderer.h
+)
diff --git a/src/KingSystem/Graphics/gfxForestRenderer.cpp b/src/KingSystem/Graphics/gfxForestRenderer.cpp
new file mode 100644
index 00000000..8055101d
--- /dev/null
+++ b/src/KingSystem/Graphics/gfxForestRenderer.cpp
@@ -0,0 +1 @@
+#include "KingSystem/Graphics/gfxForestRenderer.h"
diff --git a/src/KingSystem/Graphics/gfxForestRenderer.h b/src/KingSystem/Graphics/gfxForestRenderer.h
new file mode 100644
index 00000000..ec4d76c3
--- /dev/null
+++ b/src/KingSystem/Graphics/gfxForestRenderer.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include <math/seadVector.h>
+
+namespace ksys::gfx {
+
+class ForestRenderer {
+public:
+ s32 x_7(const sead::Vector3f& vec);
+};
+
+} // namespace ksys::gfx
diff --git a/src/KingSystem/Map/CMakeLists.txt b/src/KingSystem/Map/CMakeLists.txt
index 47c18a8c..7336bfd1 100644
--- a/src/KingSystem/Map/CMakeLists.txt
+++ b/src/KingSystem/Map/CMakeLists.txt
@@ -1,6 +1,4 @@
target_sources(uking PRIVATE
- mapClusteredRenderer.cpp
- mapClusteredRenderer.h
mapTypes.h
mapDebug.cpp
mapDebug.h
@@ -18,6 +16,8 @@ target_sources(uking PRIVATE
mapPlacementMgr.h
mapPlacementTree.cpp
mapPlacementTree.h
+ mapRail.cpp
+ mapRail.h
mapStagePreActorCache.cpp
mapStagePreActorCache.h
)
diff --git a/src/KingSystem/Map/mapClusteredRenderer.cpp b/src/KingSystem/Map/mapClusteredRenderer.cpp
deleted file mode 100644
index 20b3f086..00000000
--- a/src/KingSystem/Map/mapClusteredRenderer.cpp
+++ /dev/null
@@ -1 +0,0 @@
-#include "KingSystem/Map/mapClusteredRenderer.h"
diff --git a/src/KingSystem/Map/mapObject.cpp b/src/KingSystem/Map/mapObject.cpp
index d198ab44..4cdc137f 100644
--- a/src/KingSystem/Map/mapObject.cpp
+++ b/src/KingSystem/Map/mapObject.cpp
@@ -2,6 +2,7 @@
#include "KingSystem/ActorSystem/actBaseProcMgr.h"
#include "KingSystem/ActorSystem/actInfoData.h"
#include "KingSystem/GameData/gdtManager.h"
+#include "KingSystem/Graphics/gfxForestRenderer.h"
#include "KingSystem/Map/mapObjectLink.h"
#include "KingSystem/Map/mapPlacementMgr.h"
#include "KingSystem/Map/mapStagePreActorCache.h"
@@ -430,7 +431,7 @@ bool Object::setupTargetLinks(Object* src, ObjectLink* link, sead::Heap* heap) {
return false;
}
- if (mLinkData->mLinksToSelf.links != nullptr)
+ if (mLinkData->mLinksToSelf.links.isBufferReady())
return mLinkData->sub_7100D4EC40(src, link, this);
if (!mLinkData->allocLinksToSelf(mNumLinksPointingToMe, heap))
@@ -498,7 +499,7 @@ void* Object::getRails() const {
void* Object::getRails_0() const {
if (mLinkData == nullptr)
return nullptr;
- return mLinkData->mRails;
+ return mLinkData->mRail;
}
bool Object::allocLinkData(sead::Heap* heap) {
diff --git a/src/KingSystem/Map/mapObjectLink.cpp b/src/KingSystem/Map/mapObjectLink.cpp
index fbfca297..2f2d44ca 100644
--- a/src/KingSystem/Map/mapObjectLink.cpp
+++ b/src/KingSystem/Map/mapObjectLink.cpp
@@ -138,44 +138,24 @@ bool ObjectLink::getObjectProcWithAccessor(act::ActorLinkConstDataAccess& access
ObjectLinkData::ObjectLinkData() = default;
void ObjectLinkData::deleteArrays() {
- if (mRails) {
- delete mRails;
- mRails = nullptr;
+ if (mRail) {
+ delete mRail;
+ mRail = nullptr;
}
- if (mLinksOther.links) {
- delete mLinksOther.links;
- mLinksOther.links = nullptr;
- mLinksOther.num_links = 0;
- }
-
- if (mLinksCs.links) {
- delete mLinksCs.links;
- mLinksCs.links = nullptr;
- mLinksCs.num_links = 0;
- }
-
- if (mLinksReference) {
- delete mLinksReference;
- mLinksReference = nullptr;
- mNumLinksReference = 0;
- }
-
- if (mLinksToSelf.links) {
- delete mLinksToSelf.links;
- mLinksToSelf.links = nullptr;
- mLinksToSelf.num_links = 0;
- }
+ mLinksOther.links.freeBuffer();
+ mLinksCs.links.freeBuffer();
+ mObjects.freeBuffer();
+ mLinksToSelf.links.freeBuffer();
}
bool ObjectLinkData::allocLinksToSelf(s32 num_links, sead::Heap* heap) {
- if (num_links < 1)
- return true;
-
- mLinksToSelf.links = new (heap, std::nothrow_t()) ObjectLink[num_links]();
- mLinksToSelf.num_links = num_links;
-
- return mLinksToSelf.links != nullptr;
+ if (num_links >= 1) {
+ mLinksToSelf.links.tryAllocBuffer(num_links, heap);
+ if (!mLinksToSelf.links.isBufferReady())
+ return false;
+ }
+ return true;
}
ObjectLink* ObjectLinkData::findLinkWithType(MapLinkDefType t) {
@@ -241,7 +221,7 @@ ObjectLink* ObjectLinkArray::findLinkWithType(MapLinkDefType type) {
}
ObjectLink* ObjectLinkArray::findLinkWithType_0(MapLinkDefType type) {
- for (int i = 0; i != num_links; ++i) {
+ for (int i = 0; i < links.size(); ++i) {
if (links[i].type == type)
return &links[i];
}
diff --git a/src/KingSystem/Map/mapObjectLink.h b/src/KingSystem/Map/mapObjectLink.h
index d58a1c32..0068fe9f 100644
--- a/src/KingSystem/Map/mapObjectLink.h
+++ b/src/KingSystem/Map/mapObjectLink.h
@@ -1,6 +1,7 @@
#pragma once
#include <basis/seadTypes.h>
+#include <container/seadBuffer.h>
#include "KingSystem/Map/mapMubinIter.h"
#include "KingSystem/Utils/Types.h"
@@ -13,6 +14,7 @@ namespace ksys::map {
class GenGroup;
class Object;
+class Rail;
enum class MapLinkDefType {
BasicSig = 0,
@@ -61,6 +63,7 @@ enum class MapLinkDefType {
};
struct ObjectLink {
+ ~ObjectLink() {}
act::Actor* getObjectActor() const;
bool getObjectProcWithAccessor(act::ActorLinkConstDataAccess& accessor) const;
const char* getDescription() const;
@@ -81,8 +84,7 @@ struct ObjectLinkArray {
ObjectLink* findLinkWithType(MapLinkDefType type);
ObjectLink* findLinkWithType_0(MapLinkDefType type);
- s32 num_links = 0;
- ObjectLink* links = nullptr;
+ sead::Buffer<ObjectLink> links;
};
KSYS_CHECK_SIZE_NX150(ObjectLinkArray, 0x10);
@@ -112,9 +114,8 @@ public:
Object* mCreateLinksSrcObj = nullptr;
Object* mDeleteLinksSrcObj = nullptr;
- u32 mNumLinksReference = 0;
- void* mLinksReference = nullptr;
+ sead::Buffer<Object*> mObjects;
ObjectLinkArray mLinksOther{};
ObjectLinkArray mLinksCs{};
ObjectLinkArray mLinksToSelf{};
@@ -126,7 +127,7 @@ public:
bool field_57 = false;
GenGroup* mGenGroup = nullptr;
- void* mRails = nullptr;
+ Rail* mRail = nullptr;
};
KSYS_CHECK_SIZE_NX150(ObjectLinkData, 0x68);
diff --git a/src/KingSystem/Map/mapPlacementMgr.cpp b/src/KingSystem/Map/mapPlacementMgr.cpp
index 6e6c3f9b..807dc199 100644
--- a/src/KingSystem/Map/mapPlacementMgr.cpp
+++ b/src/KingSystem/Map/mapPlacementMgr.cpp
@@ -1,9 +1,9 @@
#include "KingSystem/Map/mapPlacementMgr.h"
#include <thread/seadThreadUtil.h>
#include "KingSystem/ActorSystem/actActorCreator.h"
+#include "KingSystem/ActorSystem/actClusteredRenderer.h"
#include "KingSystem/ActorSystem/actInfoData.h"
#include "KingSystem/ActorSystem/actInstParamPack.h"
-#include "KingSystem/Map/mapClusteredRenderer.h"
#include "KingSystem/Map/mapObject.h"
#include "KingSystem/Map/mapPlacementActors.h"
#include "KingSystem/Map/mapPlacementTree.h"
diff --git a/src/KingSystem/Map/mapPlacementMgr.h b/src/KingSystem/Map/mapPlacementMgr.h
index 40ca95d6..d8189dfd 100644
--- a/src/KingSystem/Map/mapPlacementMgr.h
+++ b/src/KingSystem/Map/mapPlacementMgr.h
@@ -7,12 +7,12 @@
#include "KingSystem/ActorSystem/actActor.h"
namespace ksys::act {
+class ClusteredRenderer;
class InstParamPack;
-}
+} // namespace ksys::act
namespace ksys::map {
-class ClusteredRenderer;
class Object;
class PlacementTree;
class PlacementActors;
@@ -131,7 +131,7 @@ public:
PlacementTree* mPlacementTree = nullptr;
u32 _7a8;
void* mMassRenderer = nullptr;
- ClusteredRenderer* mClusteredRenderer = nullptr;
+ act::ClusteredRenderer* mClusteredRenderer = nullptr;
void* mPlacementNavi = nullptr;
u32 mMassRendererReqCount = 0;
u32 mMassRendererStatus = 0;
diff --git a/src/KingSystem/Map/mapRail.cpp b/src/KingSystem/Map/mapRail.cpp
new file mode 100644
index 00000000..939707d6
--- /dev/null
+++ b/src/KingSystem/Map/mapRail.cpp
@@ -0,0 +1 @@
+#include "KingSystem/Map/mapRail.h"
diff --git a/src/KingSystem/Map/mapRail.h b/src/KingSystem/Map/mapRail.h
new file mode 100644
index 00000000..dbbfca39
--- /dev/null
+++ b/src/KingSystem/Map/mapRail.h
@@ -0,0 +1,7 @@
+#pragma once
+
+namespace ksys::map {
+
+class Rail {};
+
+} // namespace ksys::map
diff --git a/src/KingSystem/Map/mapStagePreActorCache.h b/src/KingSystem/Map/mapStagePreActorCache.h
index a739f1ba..7d87c958 100644
--- a/src/KingSystem/Map/mapStagePreActorCache.h
+++ b/src/KingSystem/Map/mapStagePreActorCache.h
@@ -3,12 +3,11 @@
#include <heap/seadDisposer.h>
#include <math/seadVector.h>
-namespace ksys::map {
+namespace ksys::gfx {
+class ForestRenderer;
+}
-class ForestRenderer {
-public:
- s32 x_7(const sead::Vector3f& vec);
-};
+namespace ksys::map {
// TODO
class StagePreActorCache {
@@ -19,7 +18,7 @@ public:
auto* getForestRenderer() { return mForestRenderer; }
private:
- ForestRenderer* mForestRenderer;
+ gfx::ForestRenderer* mForestRenderer;
};
} // namespace ksys::map