mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-03-16 16:01:06 +00:00
Merge branch 'master' of https://github.com/raa-eruanna/qzdoom
# Conflicts: # src/events.cpp # src/events.h # src/p_spec.cpp # wadsrc/static/zscript/events.txt
This commit is contained in:
commit
93601d911f
4 changed files with 43 additions and 10 deletions
|
@ -397,7 +397,9 @@ void FFlatVertexBuffer::CreateFlatVBO()
|
|||
{
|
||||
for(auto &sec : level.sectors)
|
||||
{
|
||||
CreateVertices(h, &sec, sec.GetSecPlane(h), h == sector_t::floor);
|
||||
secplane_t& plane = sec.GetSecPlane(h);
|
||||
CreateVertices(h, &sec, plane, h == sector_t::floor);
|
||||
plane.vbonormal = plane.normal;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -464,15 +466,21 @@ void FFlatVertexBuffer::CreateVBO()
|
|||
|
||||
void FFlatVertexBuffer::CheckPlanes(sector_t *sector)
|
||||
{
|
||||
if (sector->GetPlaneTexZ(sector_t::ceiling) != sector->vboheight[sector_t::ceiling])
|
||||
for (int i = sector_t::floor; i <= sector_t::ceiling; i++)
|
||||
{
|
||||
UpdatePlaneVertices(sector, sector_t::ceiling);
|
||||
sector->vboheight[sector_t::ceiling] = sector->GetPlaneTexZ(sector_t::ceiling);
|
||||
}
|
||||
if (sector->GetPlaneTexZ(sector_t::floor) != sector->vboheight[sector_t::floor])
|
||||
{
|
||||
UpdatePlaneVertices(sector, sector_t::floor);
|
||||
sector->vboheight[sector_t::floor] = sector->GetPlaneTexZ(sector_t::floor);
|
||||
if (sector->GetPlaneTexZ(i) != sector->vboheight[i])
|
||||
{
|
||||
UpdatePlaneVertices(sector, i);
|
||||
sector->vboheight[i] = sector->GetPlaneTexZ(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
secplane_t &splane = sector->GetSecPlane(i);
|
||||
if (splane.normal != splane.vbonormal)
|
||||
{
|
||||
UpdatePlaneVertices(sector, i);
|
||||
splane.vbonormal = splane.normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6757,6 +6757,21 @@ void PIT_CeilingRaise(AActor *thing, FChangePosition *cpos)
|
|||
//
|
||||
//=============================================================================
|
||||
|
||||
//
|
||||
DEFINE_ACTION_FUNCTION(_Sector, ChangeSector)
|
||||
{
|
||||
PARAM_SELF_STRUCT_PROLOGUE(sector_t);
|
||||
PARAM_INT(crunch);
|
||||
PARAM_FLOAT(amt);
|
||||
PARAM_INT(floorOrCeil);
|
||||
PARAM_BOOL(isreset);
|
||||
PARAM_BOOL(instant);
|
||||
|
||||
bool b = P_ChangeSector(self, crunch, amt, floorOrCeil, isreset, instant);
|
||||
|
||||
ACTION_RETURN_BOOL(b);
|
||||
}
|
||||
|
||||
bool P_ChangeSector(sector_t *sector, int crunch, double amt, int floorOrCeil, bool isreset, bool instant)
|
||||
{
|
||||
FChangePosition cpos;
|
||||
|
|
|
@ -288,6 +288,7 @@ struct secplane_t
|
|||
//private:
|
||||
DVector3 normal;
|
||||
double D, negiC; // negative iC because that also saves a negation in all methods using this.
|
||||
DVector3 vbonormal; // [ZZ] for opengl update. it's critical that this member is the last one, so that {{x,y,z},...} works properly
|
||||
public:
|
||||
friend FSerializer &Serialize(FSerializer &arc, const char *key, secplane_t &p, secplane_t *def);
|
||||
|
||||
|
|
|
@ -314,7 +314,7 @@ struct Sector native play
|
|||
SECF_NOMODIFY = SECF_SECRET|SECF_WASSECRET, // not modifiable by Sector_ChangeFlags
|
||||
SECF_SPECIALFLAGS = SECF_DAMAGEFLAGS|SECF_FRICTION|SECF_PUSH, // these flags originate from 'special and must be transferrable by floor thinkers
|
||||
}
|
||||
|
||||
|
||||
enum EMoveResult
|
||||
{
|
||||
MOVE_OK,
|
||||
|
@ -333,6 +333,15 @@ struct Sector native play
|
|||
|
||||
native int Index();
|
||||
|
||||
enum EChangeSectorMode
|
||||
{
|
||||
CS_Floor = 0,
|
||||
CS_Ceiling = 1,
|
||||
CS_3DMidTex = 2
|
||||
};
|
||||
|
||||
native bool ChangeSector(int crunch, double amt, EChangeSectorMode mode/*floorOrCeiling*/, bool isreset, bool instant);
|
||||
|
||||
native double, Sector, F3DFloor NextHighestCeilingAt(double x, double y, double bottomz, double topz, int flags = 0);
|
||||
native double, Sector, F3DFloor NextLowestFloorAt(double x, double y, double z, int flags = 0, double steph = 0);
|
||||
|
||||
|
|
Loading…
Reference in a new issue