mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-10 14:51:51 +00:00
- exported all meaningful parts of side_t to the VM.
This commit is contained in:
parent
97a90c52e0
commit
f78927500e
6 changed files with 216 additions and 13 deletions
|
@ -50,6 +50,7 @@
|
||||||
#include "i_system.h"
|
#include "i_system.h"
|
||||||
#include "po_man.h"
|
#include "po_man.h"
|
||||||
#include "r_state.h"
|
#include "r_state.h"
|
||||||
|
#include "g_levellocals.h"
|
||||||
#include "math/cmath.h"
|
#include "math/cmath.h"
|
||||||
|
|
||||||
static const int PO_LINE_START = 1;
|
static const int PO_LINE_START = 1;
|
||||||
|
|
|
@ -1826,6 +1826,145 @@ DEFINE_ACTION_FUNCTION(_Sector, NextLowestFloorAt)
|
||||||
ACTION_RETURN_INT(ndx);
|
ACTION_RETURN_INT(ndx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, GetTexture)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
ACTION_RETURN_INT(self->GetTexture(which).GetIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, SetTexture)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
PARAM_INT(tex);
|
||||||
|
self->SetTexture(which, FSetTextureID(tex));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, SetTextureXOffset)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
PARAM_FLOAT(ofs);
|
||||||
|
self->SetTextureXOffset(which, ofs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, AddTextureXOffset)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
PARAM_FLOAT(ofs);
|
||||||
|
self->AddTextureXOffset(which, ofs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, GetTextureXOffset)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
ACTION_RETURN_FLOAT(self->GetTextureXOffset(which));
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, SetTextureYOffset)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
PARAM_FLOAT(ofs);
|
||||||
|
self->SetTextureYOffset(which, ofs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, AddTextureYOffset)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
PARAM_FLOAT(ofs);
|
||||||
|
self->AddTextureYOffset(which, ofs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, GetTextureYOffset)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
ACTION_RETURN_FLOAT(self->GetTextureYOffset(which));
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, SetTextureXScale)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
PARAM_FLOAT(ofs);
|
||||||
|
self->SetTextureXScale(which, ofs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, MultiplyTextureXScale)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
PARAM_FLOAT(ofs);
|
||||||
|
self->MultiplyTextureXScale(which, ofs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, GetTextureXScale)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
ACTION_RETURN_FLOAT(self->GetTextureXScale(which));
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, SetTextureYScale)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
PARAM_FLOAT(ofs);
|
||||||
|
self->SetTextureYScale(which, ofs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, MultiplyTextureYScale)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
PARAM_FLOAT(ofs);
|
||||||
|
self->MultiplyTextureYScale(which, ofs);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, GetTextureYScale)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
PARAM_INT(which);
|
||||||
|
ACTION_RETURN_FLOAT(self->GetTextureYScale(which));
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, V1)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
ACTION_RETURN_POINTER(self->V1());
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, V2)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
ACTION_RETURN_POINTER(self->V2());
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Side, Index)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(side_t);
|
||||||
|
ACTION_RETURN_INT(self->Index());
|
||||||
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//
|
//
|
||||||
|
@ -2157,6 +2296,11 @@ DEFINE_FIELD_X(Line, line_t, locknumber)
|
||||||
DEFINE_FIELD_X(Line, line_t, portalindex)
|
DEFINE_FIELD_X(Line, line_t, portalindex)
|
||||||
DEFINE_FIELD_X(Line, line_t, portaltransferred)
|
DEFINE_FIELD_X(Line, line_t, portaltransferred)
|
||||||
|
|
||||||
|
DEFINE_FIELD_X(Side, side_t, sector)
|
||||||
|
DEFINE_FIELD_X(Side, side_t, linedef)
|
||||||
|
DEFINE_FIELD_X(Side, side_t, Light)
|
||||||
|
DEFINE_FIELD_X(Side, side_t, Flags)
|
||||||
|
|
||||||
DEFINE_FIELD_X(Secplane, secplane_t, normal)
|
DEFINE_FIELD_X(Secplane, secplane_t, normal)
|
||||||
DEFINE_FIELD_X(Secplane, secplane_t, D)
|
DEFINE_FIELD_X(Secplane, secplane_t, D)
|
||||||
DEFINE_FIELD_X(Secplane, secplane_t, negiC)
|
DEFINE_FIELD_X(Secplane, secplane_t, negiC)
|
||||||
|
|
|
@ -40,17 +40,6 @@
|
||||||
|
|
||||||
// TYPES -------------------------------------------------------------------
|
// TYPES -------------------------------------------------------------------
|
||||||
|
|
||||||
inline vertex_t *side_t::V1() const
|
|
||||||
{
|
|
||||||
return this == linedef->sidedef[0]? linedef->v1 : linedef->v2;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline vertex_t *side_t::V2() const
|
|
||||||
{
|
|
||||||
return this == linedef->sidedef[0]? linedef->v2 : linedef->v1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class DRotatePoly : public DPolyAction
|
class DRotatePoly : public DPolyAction
|
||||||
{
|
{
|
||||||
DECLARE_CLASS (DRotatePoly, DPolyAction)
|
DECLARE_CLASS (DRotatePoly, DPolyAction)
|
||||||
|
@ -149,8 +138,6 @@ static void ReleaseAllPolyNodes();
|
||||||
|
|
||||||
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
||||||
|
|
||||||
extern seg_t *segs;
|
|
||||||
|
|
||||||
// PUBLIC DATA DEFINITIONS -------------------------------------------------
|
// PUBLIC DATA DEFINITIONS -------------------------------------------------
|
||||||
|
|
||||||
polyblock_t **PolyBlockMap;
|
polyblock_t **PolyBlockMap;
|
||||||
|
|
10
src/r_defs.h
10
src/r_defs.h
|
@ -1343,6 +1343,16 @@ struct line_t
|
||||||
int Index() const;
|
int Index() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline vertex_t *side_t::V1() const
|
||||||
|
{
|
||||||
|
return this == linedef->sidedef[0] ? linedef->v1 : linedef->v2;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline vertex_t *side_t::V2() const
|
||||||
|
{
|
||||||
|
return this == linedef->sidedef[0] ? linedef->v2 : linedef->v1;
|
||||||
|
}
|
||||||
|
|
||||||
// phares 3/14/98
|
// phares 3/14/98
|
||||||
//
|
//
|
||||||
// Sector list node showing all sectors an object appears in.
|
// Sector list node showing all sectors an object appears in.
|
||||||
|
|
|
@ -726,6 +726,10 @@ void InitThingdef()
|
||||||
linestruct->Size = sizeof(line_t);
|
linestruct->Size = sizeof(line_t);
|
||||||
linestruct->Align = alignof(line_t);
|
linestruct->Align = alignof(line_t);
|
||||||
|
|
||||||
|
auto sidestruct = NewNativeStruct("Side", nullptr);
|
||||||
|
sidestruct->Size = sizeof(side_t);
|
||||||
|
sidestruct->Align = alignof(side_t);
|
||||||
|
|
||||||
|
|
||||||
// set up the lines array in the sector struct. This is a bit messy because the type system is not prepared to handle a pointer to an array of pointers to a native struct even remotely well...
|
// set up the lines array in the sector struct. This is a bit messy because the type system is not prepared to handle a pointer to an array of pointers to a native struct even remotely well...
|
||||||
// As a result, the size has to be set to something large and arbritrary because it can change between maps. This will need some serious improvement when things get cleaned up.
|
// As a result, the size has to be set to something large and arbritrary because it can change between maps. This will need some serious improvement when things get cleaned up.
|
||||||
|
@ -754,6 +758,7 @@ void InitThingdef()
|
||||||
// Add the sector array to LevelLocals.
|
// Add the sector array to LevelLocals.
|
||||||
lstruct->AddNativeField("sectors", NewPointer(NewResizableArray(sectorstruct), false), myoffsetof(FLevelLocals, sectors), VARF_Native);
|
lstruct->AddNativeField("sectors", NewPointer(NewResizableArray(sectorstruct), false), myoffsetof(FLevelLocals, sectors), VARF_Native);
|
||||||
lstruct->AddNativeField("lines", NewPointer(NewResizableArray(linestruct), false), myoffsetof(FLevelLocals, lines), VARF_Native);
|
lstruct->AddNativeField("lines", NewPointer(NewResizableArray(linestruct), false), myoffsetof(FLevelLocals, lines), VARF_Native);
|
||||||
|
lstruct->AddNativeField("sides", NewPointer(NewResizableArray(sidestruct), false), myoffsetof(FLevelLocals, sides), VARF_Native);
|
||||||
|
|
||||||
// set up a variable for the DEH data
|
// set up a variable for the DEH data
|
||||||
PStruct *dstruct = NewNativeStruct("DehInfo", nullptr);
|
PStruct *dstruct = NewNativeStruct("DehInfo", nullptr);
|
||||||
|
|
|
@ -190,6 +190,56 @@ struct Vertex native
|
||||||
native readonly Vector2 p;
|
native readonly Vector2 p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Side
|
||||||
|
{
|
||||||
|
enum ETexpart
|
||||||
|
{
|
||||||
|
top=0,
|
||||||
|
mid=1,
|
||||||
|
bottom=2
|
||||||
|
};
|
||||||
|
|
||||||
|
enum EWallFlags
|
||||||
|
{
|
||||||
|
WALLF_ABSLIGHTING = 1, // Light is absolute instead of relative
|
||||||
|
WALLF_NOAUTODECALS = 2, // Do not attach impact decals to this wall
|
||||||
|
WALLF_NOFAKECONTRAST = 4, // Don't do fake contrast for this wall in side_t::GetLightLevel
|
||||||
|
WALLF_SMOOTHLIGHTING = 8, // Similar to autocontrast but applies to all angles.
|
||||||
|
WALLF_CLIP_MIDTEX = 16, // Like the line counterpart, but only for this side.
|
||||||
|
WALLF_WRAP_MIDTEX = 32, // Like the line counterpart, but only for this side.
|
||||||
|
WALLF_POLYOBJ = 64, // This wall belongs to a polyobject.
|
||||||
|
WALLF_LIGHT_FOG = 128, // This wall's Light is used even in fog.
|
||||||
|
};
|
||||||
|
|
||||||
|
native Sector sector; // Sector the SideDef is facing.
|
||||||
|
//DBaseDecal* AttachedDecals; // [RH] Decals bound to the wall
|
||||||
|
native Line linedef;
|
||||||
|
native int16 Light;
|
||||||
|
native uint8 Flags;
|
||||||
|
|
||||||
|
native TextureID GetTexture(int which);
|
||||||
|
native void SetTexture(int which, TextureID tex);
|
||||||
|
native void SetTextureXOffset(int which, double offset);
|
||||||
|
native double GetTextureXOffset(int which);
|
||||||
|
native void AddTextureXOffset(int which, double delta);
|
||||||
|
native void SetTextureYOffset(int which, double offset);
|
||||||
|
native double GetTextureYOffset(int which);
|
||||||
|
native void AddTextureYOffset(int which, double delta);
|
||||||
|
native void SetTextureXScale(int which, double scale);
|
||||||
|
native double GetTextureXScale(int which);
|
||||||
|
native void MultiplyTextureXScale(int which, double delta);
|
||||||
|
native void SetTextureYScale(int which, double scale);
|
||||||
|
native double GetTextureYScale(int which);
|
||||||
|
native void MultiplyTextureYScale(int which, double delta);
|
||||||
|
//native DInterpolation *SetInterpolation(int position);
|
||||||
|
//native void StopInterpolation(int position);
|
||||||
|
|
||||||
|
native Vertex V1();
|
||||||
|
native Vertex V2();
|
||||||
|
|
||||||
|
native int Index();
|
||||||
|
};
|
||||||
|
|
||||||
struct Line native
|
struct Line native
|
||||||
{
|
{
|
||||||
enum ELineFlags
|
enum ELineFlags
|
||||||
|
@ -302,6 +352,12 @@ struct Sector native
|
||||||
//SectorEffect ceilingdata;
|
//SectorEffect ceilingdata;
|
||||||
//SectorEffect lightingdata;
|
//SectorEffect lightingdata;
|
||||||
|
|
||||||
|
enum EPlane
|
||||||
|
{
|
||||||
|
floor,
|
||||||
|
ceiling
|
||||||
|
};
|
||||||
|
|
||||||
enum EInterpolationType
|
enum EInterpolationType
|
||||||
{
|
{
|
||||||
CeilingMove,
|
CeilingMove,
|
||||||
|
|
Loading…
Reference in a new issue