move ForestRenderer and ClusteredRenderer

This commit is contained in:
theo3 2021-07-06 12:49:02 -07:00
parent 4cba2eb093
commit b74df64276
18 changed files with 67 additions and 58 deletions

View File

@ -73900,9 +73900,9 @@
0x0000007100d4e310,sub_7100D4E310,28,_ZN4ksys3map10ObjectLink14sub_7100D4E310ENS0_14MapLinkDefTypeE?
0x0000007100d4e32c,isPlacementLODOrForSaleLink,24,_ZN4ksys3map10ObjectLink27isPlacementLODOrForSaleLinkENS0_14MapLinkDefTypeE
0x0000007100d4e344,PlacementLinkData::ctor,44,_ZN4ksys3map14ObjectLinkDataC1Ev
0x0000007100d4e370,PlacementLinkData::deleteArrays,136,_ZN4ksys3map14ObjectLinkData12deleteArraysEv!
0x0000007100d4e370,PlacementLinkData::deleteArrays,136,_ZN4ksys3map14ObjectLinkData12deleteArraysEv
0x0000007100d4e3f8,PlacementLinkData::allocLinks,556,
0x0000007100d4e624,PlacementLinkData::allocLinksToSelf,212,_ZN4ksys3map14ObjectLinkData16allocLinksToSelfEiPN4sead4HeapE!
0x0000007100d4e624,PlacementLinkData::allocLinksToSelf,212,_ZN4ksys3map14ObjectLinkData16allocLinksToSelfEiPN4sead4HeapE
0x0000007100d4e6f8,PlacementLinkData::dtor,292,
0x0000007100d4e81c,PlacementObj::x,256,
0x0000007100d4e91c,PlacementLinkData::addLink,440,

Can't render this file because it is too large.

View File

@ -86,6 +86,8 @@ target_sources(uking PRIVATE
actBaseProcMgr.h
actBaseProcUnit.cpp
actBaseProcUnit.h
actClusteredRenderer.cpp
actClusteredRenderer.h
actDebug.cpp
actDebug.h
actGlobalParameter.cpp

View File

@ -0,0 +1 @@
#include "KingSystem/ActorSystem/actClusteredRenderer.h"

View File

@ -1,10 +1,10 @@
#pragma once
namespace ksys::map {
namespace ksys::act {
class ClusteredRenderer {
public:
void startThread();
};
} // namespace ksys::map
} // namespace ksys::act

View File

@ -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)

View File

@ -0,0 +1,4 @@
target_sources(uking PRIVATE
gfxForestRenderer.cpp
gfxForestRenderer.h
)

View File

@ -0,0 +1 @@
#include "KingSystem/Graphics/gfxForestRenderer.h"

View File

@ -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

View File

@ -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
)

View File

@ -1 +0,0 @@
#include "KingSystem/Map/mapClusteredRenderer.h"

View File

@ -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) {

View File

@ -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];
}

View File

@ -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);

View File

@ -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"

View File

@ -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;

View File

@ -0,0 +1 @@
#include "KingSystem/Map/mapRail.h"

View File

@ -0,0 +1,7 @@
#pragma once
namespace ksys::map {
class Rail {};
} // namespace ksys::map

View File

@ -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