mirror of https://github.com/PrimeDecomp/prime.git
Match and link InternalColliders
Former-commit-id: 9a6b212fb1bc4b57ae1701c6333d2d903dce8935
This commit is contained in:
parent
12e5a2c300
commit
3cb651ad95
|
@ -11749,9 +11749,9 @@ reserve__Q24rstl42vector<6CAABox,Q24rstl17rmemory_allocator>Fi = .text:0x802AE2C
|
||||||
GetEntityIdByIndex__11CPVSAreaSetCFUi = .text:0x802AE3E4; // type:function size:0x10 scope:global
|
GetEntityIdByIndex__11CPVSAreaSetCFUi = .text:0x802AE3E4; // type:function size:0x10 scope:global
|
||||||
GetLightSet__11CPVSAreaSetCFi = .text:0x802AE3F4; // type:function size:0x90 scope:global
|
GetLightSet__11CPVSAreaSetCFi = .text:0x802AE3F4; // type:function size:0x90 scope:global
|
||||||
GetVisOctree__11CPVSAreaSetCFUi = .text:0x802AE484; // type:function size:0x8 scope:global
|
GetVisOctree__11CPVSAreaSetCFUi = .text:0x802AE484; // type:function size:0x8 scope:global
|
||||||
__ct__11CPVSAreaSetFPCci = .text:0x802AE48C; // type:function size:0x11C scope:global
|
MakeAreaSet__11CPVSAreaSetFPCci = .text:0x802AE48C; // type:function size:0x11C scope:global
|
||||||
__ct__Q211CPVSAreaSet14CPVSAreaHolderFiiiiiiii = .text:0x802AE5A8; // type:function size:0x88 scope:global
|
__ct__11CPVSAreaSetFiiiiiiPCcPCcPCc = .text:0x802AE5A8; // type:function size:0x88 scope:global
|
||||||
__ct__13CPVSVisOctreeFR13CPVSVisOctree = .text:0x802AE630; // type:function size:0x94 scope:global
|
__ct__13CPVSVisOctreeFRC13CPVSVisOctree = .text:0x802AE630; // type:function size:0x94 scope:global
|
||||||
TestBit__13CCubeRendererFPCUii = .text:0x802AE6C4; // type:function size:0x2C scope:global
|
TestBit__13CCubeRendererFPCUii = .text:0x802AE6C4; // type:function size:0x2C scope:global
|
||||||
RecursiveBuildOverlaps__18CAreaRenderOctTreeFPUiRC18CAreaRenderOctTreeRC6CAABoxRC6CAABox = .text:0x802AE6F0; // type:function size:0x128 scope:global
|
RecursiveBuildOverlaps__18CAreaRenderOctTreeFPUiRC18CAreaRenderOctTreeRC6CAABoxRC6CAABox = .text:0x802AE6F0; // type:function size:0x128 scope:global
|
||||||
FindOverlappingModels__18CAreaRenderOctTreeFPUiRC6CAABox = .text:0x802AE818; // type:function size:0x3C scope:global
|
FindOverlappingModels__18CAreaRenderOctTreeFPUiRC6CAABox = .text:0x802AE818; // type:function size:0x3C scope:global
|
||||||
|
@ -14708,10 +14708,10 @@ SetIconAddr__8CARDStatFi = .text:0x8034E538; // type:function size:0x8 scope:glo
|
||||||
SetIconSpeed__8CARDStatFii = .text:0x8034E540; // type:function size:0x24 scope:global
|
SetIconSpeed__8CARDStatFii = .text:0x8034E540; // type:function size:0x24 scope:global
|
||||||
SetIconFormat__8CARDStatFii = .text:0x8034E564; // type:function size:0x24 scope:global
|
SetIconFormat__8CARDStatFii = .text:0x8034E564; // type:function size:0x24 scope:global
|
||||||
SetBannerFormat__8CARDStatFi = .text:0x8034E588; // type:function size:0x14 scope:global
|
SetBannerFormat__8CARDStatFi = .text:0x8034E588; // type:function size:0x14 scope:global
|
||||||
GetCommentAddr__8CardStatCFv = .text:0x8034E59C; // type:function size:0x8 scope:global
|
GetCommentAddr__8CARDStatCFv = .text:0x8034E59C; // type:function size:0x8 scope:global
|
||||||
GetIconFormat__8CARDStatFi = .text:0x8034E5A4; // type:function size:0x14 scope:global
|
GetIconFormat__8CARDStatFi = .text:0x8034E5A4; // type:function size:0x14 scope:global
|
||||||
GetBannerFormat__8CARDStatFv = .text:0x8034E5B8; // type:function size:0xC scope:global
|
GetBannerFormat__8CARDStatFv = .text:0x8034E5B8; // type:function size:0xC scope:global
|
||||||
GetTime__8CardStatCFv = .text:0x8034E5C4; // type:function size:0x8 scope:global
|
GetTime__8CARDStatCFv = .text:0x8034E5C4; // type:function size:0x8 scope:global
|
||||||
GetFileLength__8CARDStatFv = .text:0x8034E5CC; // type:function size:0x8 scope:global
|
GetFileLength__8CARDStatFv = .text:0x8034E5CC; // type:function size:0x8 scope:global
|
||||||
CalculateBannerDataSize__13CCardFileInfoFv = .text:0x8034E5D4; // type:function size:0x84 scope:global
|
CalculateBannerDataSize__13CCardFileInfoFv = .text:0x8034E5D4; // type:function size:0x84 scope:global
|
||||||
CalculateTotalDataSize__13CCardFileInfoFv = .text:0x8034E658; // type:function size:0x38 scope:global
|
CalculateTotalDataSize__13CCardFileInfoFv = .text:0x8034E658; // type:function size:0x38 scope:global
|
||||||
|
|
|
@ -11762,9 +11762,9 @@ reserve__Q24rstl42vector<6CAABox,Q24rstl17rmemory_allocator>Fi = .text:0x802AE37
|
||||||
GetEntityIdByIndex__11CPVSAreaSetCFUi = .text:0x802AE490; // type:function size:0x10 scope:global
|
GetEntityIdByIndex__11CPVSAreaSetCFUi = .text:0x802AE490; // type:function size:0x10 scope:global
|
||||||
GetLightSet__11CPVSAreaSetCFi = .text:0x802AE4A0; // type:function size:0x90 scope:global
|
GetLightSet__11CPVSAreaSetCFi = .text:0x802AE4A0; // type:function size:0x90 scope:global
|
||||||
GetVisOctree__11CPVSAreaSetCFUi = .text:0x802AE530; // type:function size:0x8 scope:global
|
GetVisOctree__11CPVSAreaSetCFUi = .text:0x802AE530; // type:function size:0x8 scope:global
|
||||||
__ct__11CPVSAreaSetFPCci = .text:0x802AE538; // type:function size:0x11C scope:global
|
MakeAreaSet__11CPVSAreaSetFPCci = .text:0x802AE538; // type:function size:0x11C scope:global
|
||||||
__ct__Q211CPVSAreaSet14CPVSAreaHolderFiiiiiiii = .text:0x802AE654; // type:function size:0x88 scope:global
|
__ct__Q211CPVSAreaSet14CPVSAreaHolderFiiiiiiii = .text:0x802AE654; // type:function size:0x88 scope:global
|
||||||
__ct__13CPVSVisOctreeFR13CPVSVisOctree = .text:0x802AE6DC; // type:function size:0x94 scope:global
|
__ct__11CPVSAreaSetFiiiiiiPCcPCcPCc = .text:0x802AE6DC; // type:function size:0x94 scope:global
|
||||||
TestBit__13CCubeRendererFPCUii = .text:0x802AE770; // type:function size:0x2C scope:global
|
TestBit__13CCubeRendererFPCUii = .text:0x802AE770; // type:function size:0x2C scope:global
|
||||||
RecursiveBuildOverlaps__18CAreaRenderOctTreeFPUiRC18CAreaRenderOctTreeRC6CAABoxRC6CAABox = .text:0x802AE79C; // type:function size:0x128 scope:global
|
RecursiveBuildOverlaps__18CAreaRenderOctTreeFPUiRC18CAreaRenderOctTreeRC6CAABoxRC6CAABox = .text:0x802AE79C; // type:function size:0x128 scope:global
|
||||||
FindOverlappingModels__18CAreaRenderOctTreeFPUiRC6CAABox = .text:0x802AE8C4; // type:function size:0x3C scope:global
|
FindOverlappingModels__18CAreaRenderOctTreeFPUiRC6CAABox = .text:0x802AE8C4; // type:function size:0x3C scope:global
|
||||||
|
|
|
@ -727,7 +727,7 @@ config.libs = [
|
||||||
Object(NonMatching, "Collision/CCollidableAABox.cpp"),
|
Object(NonMatching, "Collision/CCollidableAABox.cpp"),
|
||||||
Object(Matching, "Collision/CCollidableCollisionSurface.cpp"),
|
Object(Matching, "Collision/CCollidableCollisionSurface.cpp"),
|
||||||
Object(Matching, "Collision/CCollisionInfo.cpp"),
|
Object(Matching, "Collision/CCollisionInfo.cpp"),
|
||||||
Object(NonMatching, "Collision/InternalColliders.cpp"),
|
Object(Matching, "Collision/InternalColliders.cpp"),
|
||||||
Object(NonMatching, "Collision/CCollisionPrimitive.cpp"),
|
Object(NonMatching, "Collision/CCollisionPrimitive.cpp"),
|
||||||
Object(Matching, "Collision/CMaterialList.cpp"),
|
Object(Matching, "Collision/CMaterialList.cpp"),
|
||||||
Object(NonMatching, "Collision/CollisionUtil.cpp"),
|
Object(NonMatching, "Collision/CollisionUtil.cpp"),
|
||||||
|
|
|
@ -11,10 +11,10 @@ public:
|
||||||
CCollidableAABox(const CAABox& box, const CMaterialList& matList)
|
CCollidableAABox(const CAABox& box, const CMaterialList& matList)
|
||||||
: CCollisionPrimitive(matList), x10_aabb(box) {}
|
: CCollisionPrimitive(matList), x10_aabb(box) {}
|
||||||
|
|
||||||
bool CollideMovingAABox(const CInternalCollisionStructure& collision, const CVector3f& dir,
|
static bool CollideMovingAABox(const CInternalCollisionStructure& collision, const CVector3f& dir,
|
||||||
double& dOut, CCollisionInfo& infoOut);
|
|
||||||
bool CollideMovingSphere(const CInternalCollisionStructure& collision, const CVector3f& dir,
|
|
||||||
double& dOut, CCollisionInfo& infoOut);
|
double& dOut, CCollisionInfo& infoOut);
|
||||||
|
static bool CollideMovingSphere(const CInternalCollisionStructure& collision,
|
||||||
|
const CVector3f& dir, double& dOut, CCollisionInfo& infoOut);
|
||||||
|
|
||||||
uint GetTableIndex() const;
|
uint GetTableIndex() const;
|
||||||
CAABox CalculateAABox(const CTransform4f&) const;
|
CAABox CalculateAABox(const CTransform4f&) const;
|
||||||
|
@ -36,5 +36,6 @@ CHECK_SIZEOF(CCollidableAABox, 0x28)
|
||||||
namespace Collide {
|
namespace Collide {
|
||||||
bool AABox_AABox_Bool(const CInternalCollisionStructure&);
|
bool AABox_AABox_Bool(const CInternalCollisionStructure&);
|
||||||
bool AABox_AABox(const CInternalCollisionStructure& collision, CCollisionInfoList& list);
|
bool AABox_AABox(const CInternalCollisionStructure& collision, CCollisionInfoList& list);
|
||||||
|
bool Sphere_AABox(const CInternalCollisionStructure& collision, CCollisionInfoList& list);
|
||||||
} // namespace Collide
|
} // namespace Collide
|
||||||
#endif // _CCOLLIDABLEAABOX
|
#endif // _CCOLLIDABLEAABOX
|
||||||
|
|
|
@ -12,6 +12,11 @@ public:
|
||||||
CCollidableSphere(const CSphere& sphere, const CMaterialList& material)
|
CCollidableSphere(const CSphere& sphere, const CMaterialList& material)
|
||||||
: CCollisionPrimitive(material), x10_sphere(sphere) {}
|
: CCollisionPrimitive(material), x10_sphere(sphere) {}
|
||||||
|
|
||||||
|
static bool CollideMovingAABox(const CInternalCollisionStructure& collision, const CVector3f& dir,
|
||||||
|
double& dOut, CCollisionInfo& infoOut);
|
||||||
|
static bool CollideMovingSphere(const CInternalCollisionStructure& collision,
|
||||||
|
const CVector3f& dir, double& dOut, CCollisionInfo& infoOut);
|
||||||
|
|
||||||
uint GetTableIndex() const override;
|
uint GetTableIndex() const override;
|
||||||
CAABox CalculateAABox(const CTransform4f&) const override;
|
CAABox CalculateAABox(const CTransform4f&) const override;
|
||||||
CAABox CalculateLocalAABox() const override;
|
CAABox CalculateLocalAABox() const override;
|
||||||
|
@ -19,9 +24,17 @@ public:
|
||||||
~CCollidableSphere() override {}
|
~CCollidableSphere() override {}
|
||||||
CRayCastResult CastRayInternal(const CInternalRayCastStructure&) const;
|
CRayCastResult CastRayInternal(const CInternalRayCastStructure&) const;
|
||||||
|
|
||||||
|
static Type GetType();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CSphere x10_sphere;
|
CSphere x10_sphere;
|
||||||
};
|
};
|
||||||
CHECK_SIZEOF(CCollidableSphere, 0x20)
|
CHECK_SIZEOF(CCollidableSphere, 0x20)
|
||||||
|
|
||||||
|
namespace Collide {
|
||||||
|
bool Sphere_Sphere(const CInternalCollisionStructure& collision, CCollisionInfoList& list);
|
||||||
|
bool Sphere_AABox_Bool(const CInternalCollisionStructure& collision);
|
||||||
|
bool Sphere_Sphere_Bool(const CInternalCollisionStructure& collision);
|
||||||
|
} // namespace Collide
|
||||||
|
|
||||||
#endif // _CCOLLIDABLESPHERE
|
#endif // _CCOLLIDABLESPHERE
|
||||||
|
|
|
@ -38,6 +38,10 @@ public:
|
||||||
const char* mInfo;
|
const char* mInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Comparison {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
CCollisionPrimitive(const CMaterialList& list);
|
CCollisionPrimitive(const CMaterialList& list);
|
||||||
|
|
||||||
virtual uint GetTableIndex() const = 0;
|
virtual uint GetTableIndex() const = 0;
|
||||||
|
@ -52,6 +56,12 @@ public:
|
||||||
static void InitBeginTypes();
|
static void InitBeginTypes();
|
||||||
static void InitAddType(const Type& type);
|
static void InitAddType(const Type& type);
|
||||||
static void InitEndTypes();
|
static void InitEndTypes();
|
||||||
|
static void InitBeginColliders();
|
||||||
|
static void InitAddCollider(const Comparison& comp);
|
||||||
|
static void InitAddCollider(ComparisonFunc comp, const char*, const char*);
|
||||||
|
static void InitAddBooleanCollider(BooleanComparisonFunc comp, const char*, const char*);
|
||||||
|
static void InitAddMovingCollider(MovingComparisonFunc comp, const char*, const char*);
|
||||||
|
static void InitEndColliders();
|
||||||
static void Uninitialize();
|
static void Uninitialize();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -2,4 +2,5 @@
|
||||||
|
|
||||||
namespace InternalColliders {
|
namespace InternalColliders {
|
||||||
void AddTypes();
|
void AddTypes();
|
||||||
|
void AddColliders();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@ public:
|
||||||
int IterateSearch(uchar a, const CVector3f& pos) const;
|
int IterateSearch(uchar a, const CVector3f& pos) const;
|
||||||
uint GetNumChildren(uchar a) const;
|
uint GetNumChildren(uchar a) const;
|
||||||
|
|
||||||
|
static CPVSVisOctree MakePVSVisOctree(const char* data, int len);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CAABox mBounds;
|
CAABox mBounds;
|
||||||
uint mNumObjects;
|
uint mNumObjects;
|
||||||
|
|
|
@ -45,6 +45,7 @@ public:
|
||||||
short ReadInt16() { return Get< short >(); }
|
short ReadInt16() { return Get< short >(); }
|
||||||
|
|
||||||
uint GetBlockOffset() const { return x4_blockOffset; }
|
uint GetBlockOffset() const { return x4_blockOffset; }
|
||||||
|
const uint GetReadPosition() const { return x18_readPosition; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool GrabAnotherBlock();
|
bool GrabAnotherBlock();
|
||||||
|
|
|
@ -1,11 +1,32 @@
|
||||||
#ifndef _CPVSAREASET
|
#ifndef _CPVSAREASET
|
||||||
#define _CPVSAREASET
|
#define _CPVSAREASET
|
||||||
|
|
||||||
|
#include "Kyoto/PVS/CPVSVisOctree.hpp"
|
||||||
class CPVSVisSet;
|
class CPVSVisSet;
|
||||||
|
class CInputStream;
|
||||||
|
|
||||||
class CPVSAreaSet {
|
class CPVSAreaSet {
|
||||||
public:
|
public:
|
||||||
|
CPVSAreaSet(const int, const int, const int, const int, const int, const int, const char*,
|
||||||
|
const char*, const char*);
|
||||||
|
|
||||||
|
const CPVSVisOctree& GetOctree() const { return x20_octree; }
|
||||||
|
|
||||||
|
static rstl::auto_ptr< CPVSAreaSet > MakeAreaSet(const char* data, int len);
|
||||||
CPVSVisSet GetLightSet(int) const;
|
CPVSVisSet GetLightSet(int) const;
|
||||||
|
|
||||||
|
const CPVSVisOctree& GetVisOctree(const uint) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
int x0_;
|
||||||
|
int x4_;
|
||||||
|
int x8_;
|
||||||
|
int xc_;
|
||||||
|
int x10_;
|
||||||
|
int x14_;
|
||||||
|
const char* x18_;
|
||||||
|
const char* x1c_;
|
||||||
|
CPVSVisOctree x20_octree;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _CPVSAREASET
|
#endif // _CPVSAREASET
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
#ifndef _DOLPHIN_OSBOOTINFO
|
#ifndef _DOLPHIN_OSBOOTINFO
|
||||||
#define _DOLPHIN_OSBOOTINFO
|
#define _DOLPHIN_OSBOOTINFO
|
||||||
|
|
||||||
|
#include "dolphin/DVDPriv.h"
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
typedef struct OSBootInfo {
|
typedef struct OSBootInfo {
|
||||||
DVDDiskID DVDDiskID;
|
DVDDiskID DVDDiskID;
|
||||||
u32 magic;
|
u32 magic;
|
||||||
|
@ -36,4 +39,12 @@ typedef struct BI2Debug {
|
||||||
u32 padSpec; // 0x24
|
u32 padSpec; // 0x24
|
||||||
} BI2Debug;
|
} BI2Debug;
|
||||||
|
|
||||||
|
// Magic number defines.
|
||||||
|
#define OS_BOOTINFO_MAGIC 0x0D15EA5E
|
||||||
|
#define OS_BOOTINFO_MAGIC_JTAG 0xE5207C22
|
||||||
|
#define OS_DVD_MAGIC_NINTENDO 0xC2339F3D
|
||||||
|
#define OS_THREAD_STACK_MAGIC 0xDEADBABE
|
||||||
|
|
||||||
|
#define OS_BOOTROM_ADDR 0x81300000
|
||||||
|
|
||||||
#endif // _DOLPHIN_OSBOOTINFO
|
#endif // _DOLPHIN_OSBOOTINFO
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
#include "Collision/CCollisionPrimitive.hpp"
|
||||||
|
#include <Collision/InternalColliders.hpp>
|
||||||
|
|
||||||
|
#include <Collision/CCollidableAABox.hpp>
|
||||||
|
#include <Collision/CCollidableSphere.hpp>
|
||||||
|
#include <Collision/CCollidableCollisionSurface.hpp>
|
||||||
|
|
||||||
|
void InternalColliders::AddTypes() {
|
||||||
|
CCollisionPrimitive::InitAddType(CCollidableAABox::GetType());
|
||||||
|
CCollisionPrimitive::InitAddType(CCollidableCollisionSurface::GetType());
|
||||||
|
CCollisionPrimitive::InitAddType(CCollidableSphere::GetType());
|
||||||
|
}
|
||||||
|
void InternalColliders::AddColliders() {
|
||||||
|
CCollisionPrimitive::InitAddCollider(Collide::AABox_AABox, "CCollidableAABox", "CCollidableAABox");
|
||||||
|
CCollisionPrimitive::InitAddCollider(Collide::Sphere_AABox, "CCollidableSphere", "CCollidableAABox");
|
||||||
|
CCollisionPrimitive::InitAddCollider(Collide::Sphere_Sphere, "CCollidableSphere", "CCollidableSphere");
|
||||||
|
CCollisionPrimitive::InitAddBooleanCollider(Collide::AABox_AABox_Bool, "CCollidableAABox", "CCollidableAABox");
|
||||||
|
CCollisionPrimitive::InitAddBooleanCollider(Collide::Sphere_AABox_Bool, "CCollidableSphere", "CCollidableAABox");
|
||||||
|
CCollisionPrimitive::InitAddBooleanCollider(Collide::Sphere_Sphere_Bool, "CCollidableSphere", "CCollidableSphere");
|
||||||
|
CCollisionPrimitive::InitAddMovingCollider(CCollidableAABox::CollideMovingAABox, "CCollidableAABox", "CCollidableAABox");
|
||||||
|
CCollisionPrimitive::InitAddMovingCollider(CCollidableAABox::CollideMovingSphere, "CCollidableAABox", "CCollidableSphere");
|
||||||
|
CCollisionPrimitive::InitAddMovingCollider(CCollidableSphere::CollideMovingAABox, "CCollidableSphere", "CCollidableAABox");
|
||||||
|
CCollisionPrimitive::InitAddMovingCollider(CCollidableSphere::CollideMovingSphere, "CCollidableSphere", "CCollidableSphere");
|
||||||
|
}
|
|
@ -1,4 +1,6 @@
|
||||||
#include "dolphin/os.h"
|
#include "dolphin/os.h"
|
||||||
|
#include "dolphin/os/OSBootInfo.h"
|
||||||
|
#include "dolphin/dvd.h"
|
||||||
|
|
||||||
typedef struct ApploaderHeader {
|
typedef struct ApploaderHeader {
|
||||||
// total size: 0x20
|
// total size: 0x20
|
||||||
|
@ -17,6 +19,10 @@ extern void* __OSSavedRegionEnd;
|
||||||
static void* SaveStart = NULL;
|
static void* SaveStart = NULL;
|
||||||
static void* SaveEnd = NULL;
|
static void* SaveEnd = NULL;
|
||||||
|
|
||||||
|
extern u32 BOOT_REGION_START AT_ADDRESS(0x812FDFF0); //(*(u32 *)0x812fdff0)
|
||||||
|
extern u32 BOOT_REGION_END AT_ADDRESS(0x812FDFEC); //(*(u32 *)0x812fdfec)
|
||||||
|
extern u32 __OSIsGcam;
|
||||||
|
|
||||||
static BOOL Prepared = FALSE;
|
static BOOL Prepared = FALSE;
|
||||||
|
|
||||||
asm void Run() {
|
asm void Run() {
|
||||||
|
@ -29,12 +35,12 @@ asm void Run() {
|
||||||
// clang-format on
|
// clang-format on
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Callback() {
|
static void Callback() { Prepared = TRUE; }
|
||||||
Prepared = TRUE;
|
|
||||||
|
void ReadApploader(OSTime time1, OSTime time2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void __OSReboot(u32 resetCode, u32 bootDol) {
|
void __OSReboot(u32 resetCode, u32 bootDol) {
|
||||||
OSDisableInterrupts();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSSetSaveRegion(void* start, void* end) {
|
void OSSetSaveRegion(void* start, void* end) {
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include "Kyoto/PVS/CPVSVisOctree.hpp"
|
||||||
|
#include "rstl/auto_ptr.hpp"
|
||||||
|
#include <WorldFormat/CPVSAreaSet.hpp>
|
||||||
|
|
||||||
|
#include <Kyoto/Streams/CMemoryInStream.hpp>
|
||||||
|
|
||||||
|
#pragma inline_max_size(250)
|
||||||
|
CPVSAreaSet::CPVSAreaSet(int numFeatures, int numLights, int num2ndLights, int numActors,
|
||||||
|
int leafSize, int lightIndexCount, const char* w7, const char* w8,
|
||||||
|
const char* w9)
|
||||||
|
: x0_(numFeatures)
|
||||||
|
, x4_(numLights)
|
||||||
|
, x8_(num2ndLights)
|
||||||
|
, xc_(numActors)
|
||||||
|
, x10_(leafSize)
|
||||||
|
, x14_(lightIndexCount)
|
||||||
|
, x18_(w7)
|
||||||
|
, x1c_(w8)
|
||||||
|
, x20_octree(CPVSVisOctree::MakePVSVisOctree(w9, 68)) {}
|
||||||
|
|
||||||
|
rstl::auto_ptr< CPVSAreaSet > CPVSAreaSet::MakeAreaSet(const char* data, int len) {
|
||||||
|
CMemoryInStream in(data, len);
|
||||||
|
int numFeatures = in.ReadLong();
|
||||||
|
int numLights = in.ReadLong();
|
||||||
|
int num2ndLights = in.ReadLong();
|
||||||
|
int numActors = in.ReadLong();
|
||||||
|
int leafSize = in.ReadLong();
|
||||||
|
int lightIndexCount = in.ReadLong();
|
||||||
|
char* data1 = (char*)(data + in.GetReadPosition());
|
||||||
|
char* entityIndexEnd = (char*)(data + in.GetReadPosition() + (numActors * 4));
|
||||||
|
char* data3 = entityIndexEnd + lightIndexCount * leafSize;
|
||||||
|
|
||||||
|
return rs_new CPVSAreaSet(numFeatures, numLights, num2ndLights, numActors, leafSize,
|
||||||
|
lightIndexCount, data1, entityIndexEnd, data3);
|
||||||
|
}
|
||||||
|
|
||||||
|
const CPVSVisOctree& CPVSAreaSet::GetVisOctree(const uint) const { return x20_octree; }
|
Loading…
Reference in New Issue