mirror of
https://github.com/Relintai/godot-lportal.git
synced 2025-05-01 15:47:55 +02:00
Add files via upload
This commit is contained in:
parent
077c9ac13b
commit
eca14bea42
26
lroom.cpp
26
lroom.cpp
@ -33,6 +33,9 @@ LRoom::LRoom() {
|
|||||||
m_iFirstPortal = 0;
|
m_iFirstPortal = 0;
|
||||||
m_iNumPortals = 0;
|
m_iNumPortals = 0;
|
||||||
m_bVisible = true;
|
m_bVisible = true;
|
||||||
|
|
||||||
|
m_iFirstSOB = 0;
|
||||||
|
m_iNumSOBs = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -169,9 +172,10 @@ void LRoom::FinalizeVisibility(LRoomManager &manager)
|
|||||||
{
|
{
|
||||||
//print_line("FinalizeVisibility room " + get_name() + " NumSOBs " + itos(m_SOBs.size()) + ", NumDOBs " + itos(m_DOBs.size()));
|
//print_line("FinalizeVisibility room " + get_name() + " NumSOBs " + itos(m_SOBs.size()) + ", NumDOBs " + itos(m_DOBs.size()));
|
||||||
|
|
||||||
for (int n=0; n<m_SOBs.size(); n++)
|
int last_sob = m_iFirstSOB + m_iNumSOBs;
|
||||||
|
for (int n=m_iFirstSOB; n<last_sob; n++)
|
||||||
{
|
{
|
||||||
const LSob &sob = m_SOBs[n];
|
const LSob &sob = manager.m_SOBs[n];
|
||||||
VisualInstance * pVI = sob.GetVI();
|
VisualInstance * pVI = sob.GetVI();
|
||||||
|
|
||||||
if (pVI)
|
if (pVI)
|
||||||
@ -299,8 +303,14 @@ void LRoom::FirstTouch(LRoomManager &manager)
|
|||||||
manager.m_pCurr_VisibleRoomList->push_back(m_RoomID);
|
manager.m_pCurr_VisibleRoomList->push_back(m_RoomID);
|
||||||
|
|
||||||
// hide all objects
|
// hide all objects
|
||||||
for (int n=0; n<m_SOBs.size(); n++)
|
int last_sob = m_iFirstSOB + m_iNumSOBs;
|
||||||
m_SOBs[n].m_bVisible = false;
|
for (int n=m_iFirstSOB; n<last_sob; n++)
|
||||||
|
{
|
||||||
|
LSob &sob = manager.m_SOBs[n];
|
||||||
|
sob.m_bVisible = false;
|
||||||
|
}
|
||||||
|
// for (int n=0; n<m_SOBs.size(); n++)
|
||||||
|
// m_SOBs[n].m_bVisible = false;
|
||||||
|
|
||||||
// hide all dobs
|
// hide all dobs
|
||||||
for (int n=0; n<m_DOBs.size(); n++)
|
for (int n=0; n<m_DOBs.size(); n++)
|
||||||
@ -335,9 +345,13 @@ void LRoom::DetermineVisibility_Recursive(LRoomManager &manager, int depth, cons
|
|||||||
#ifdef LPORTAL_CULL_STATIC
|
#ifdef LPORTAL_CULL_STATIC
|
||||||
|
|
||||||
// clip all objects in this room to the clipping planes
|
// clip all objects in this room to the clipping planes
|
||||||
for (int n=0; n<m_SOBs.size(); n++)
|
int last_sob = m_iFirstSOB + m_iNumSOBs;
|
||||||
|
for (int n=m_iFirstSOB; n<last_sob; n++)
|
||||||
{
|
{
|
||||||
LSob &sob = m_SOBs[n];
|
LSob &sob = manager.m_SOBs[n];
|
||||||
|
// for (int n=0; n<m_SOBs.size(); n++)
|
||||||
|
// {
|
||||||
|
// LSob &sob = m_SOBs[n];
|
||||||
|
|
||||||
// already determined to be visible through another portal
|
// already determined to be visible through another portal
|
||||||
if (sob.m_bVisible)
|
if (sob.m_bVisible)
|
||||||
|
6
lroom.h
6
lroom.h
@ -57,8 +57,12 @@ public:
|
|||||||
static const int SOFT_SHOW_BIT = 18;
|
static const int SOFT_SHOW_BIT = 18;
|
||||||
static const int SOFT_HIDE_BIT = 19;
|
static const int SOFT_HIDE_BIT = 19;
|
||||||
|
|
||||||
|
// static objects are stored in the manager in a contiguous list
|
||||||
|
int m_iFirstSOB;
|
||||||
|
int m_iNumSOBs;
|
||||||
|
|
||||||
// static objects
|
// static objects
|
||||||
LVector<LSob> m_SOBs;
|
//LVector<LSob> m_SOBs;
|
||||||
|
|
||||||
// dynamic objects
|
// dynamic objects
|
||||||
LVector<LDob> m_DOBs;
|
LVector<LDob> m_DOBs;
|
||||||
|
@ -41,6 +41,8 @@ void LRoomConverter::Convert(LRoomManager &manager)
|
|||||||
LMAN = &manager;
|
LMAN = &manager;
|
||||||
int count = CountRooms();
|
int count = CountRooms();
|
||||||
|
|
||||||
|
LMAN->m_SOBs.clear();
|
||||||
|
|
||||||
// make sure bitfield is right size for number of rooms
|
// make sure bitfield is right size for number of rooms
|
||||||
LMAN->m_BF_visible_rooms.Create(count);
|
LMAN->m_BF_visible_rooms.Create(count);
|
||||||
|
|
||||||
@ -129,7 +131,8 @@ void LRoomConverter::Convert_Room_FindObjects_Recursive(Node * pParent, LRoom &l
|
|||||||
sob.m_ID = pVI->get_instance_id();
|
sob.m_ID = pVI->get_instance_id();
|
||||||
sob.m_aabb = bb;
|
sob.m_aabb = bb;
|
||||||
|
|
||||||
lroom.m_SOBs.push_back(sob);
|
//lroom.m_SOBs.push_back(sob);
|
||||||
|
LRoom_PushBackSOB(lroom, sob);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -409,6 +412,17 @@ void LRoomConverter::LRoom_DetectPortalMeshes(LRoom &lroom, LTempRoom &troom)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LRoomConverter::LRoom_PushBackSOB(LRoom &lroom, const LSob &sob)
|
||||||
|
{
|
||||||
|
// first added for this room?
|
||||||
|
if (lroom.m_iNumSOBs == 0)
|
||||||
|
lroom.m_iFirstSOB = LMAN->m_SOBs.size();
|
||||||
|
|
||||||
|
LMAN->m_SOBs.push_back(sob);
|
||||||
|
lroom.m_iNumSOBs++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// handles the slight faff involved in getting a new portal in the manager contiguous list of portals
|
// handles the slight faff involved in getting a new portal in the manager contiguous list of portals
|
||||||
LPortal * LRoomConverter::LRoom_RequestNewPortal(LRoom &lroom)
|
LPortal * LRoomConverter::LRoom_RequestNewPortal(LRoom &lroom)
|
||||||
{
|
{
|
||||||
|
@ -100,6 +100,7 @@ private:
|
|||||||
void LRoom_MakePortalFinalList(LRoom &lroom, LTempRoom &troom);
|
void LRoom_MakePortalFinalList(LRoom &lroom, LTempRoom &troom);
|
||||||
void LRoom_DetectedPortalMesh(LRoom &lroom, LTempRoom &troom, MeshInstance * pMeshInstance, String szLinkRoom);
|
void LRoom_DetectedPortalMesh(LRoom &lroom, LTempRoom &troom, MeshInstance * pMeshInstance, String szLinkRoom);
|
||||||
LPortal * LRoom_RequestNewPortal(LRoom &lroom);
|
LPortal * LRoom_RequestNewPortal(LRoom &lroom);
|
||||||
|
void LRoom_PushBackSOB(LRoom &lroom, const LSob &sob);
|
||||||
|
|
||||||
void TRoom_MakeOppositePortal(const LPortal &port, int iRoomOrig);
|
void TRoom_MakeOppositePortal(const LPortal &port, int iRoomOrig);
|
||||||
|
|
||||||
|
@ -159,6 +159,9 @@ private:
|
|||||||
LVector<LRoom> m_Rooms;
|
LVector<LRoom> m_Rooms;
|
||||||
LVector<LPortal> m_Portals;
|
LVector<LPortal> m_Portals;
|
||||||
|
|
||||||
|
// static objects
|
||||||
|
LVector<LSob> m_SOBs;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// whether debug planes is switched on
|
// whether debug planes is switched on
|
||||||
bool m_bDebugPlanes;
|
bool m_bDebugPlanes;
|
||||||
|
Loading…
Reference in New Issue
Block a user