2018-11-25 10:34:50 +00:00
//-----------------------------------------------------------------------------
//
// Copyright 2016-2018 Christoph Oelckers
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/
//
//-----------------------------------------------------------------------------
//
// VM thunks for simple functions.
//
//-----------------------------------------------------------------------------
# include "vm.h"
# include "r_defs.h"
# include "g_levellocals.h"
# include "s_sound.h"
# include "p_local.h"
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , FindShortestTextureAround , FindShortestTextureAround )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
ACTION_RETURN_FLOAT ( FindShortestTextureAround ( self ) ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , FindShortestUpperAround , FindShortestUpperAround )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
ACTION_RETURN_FLOAT ( FindShortestUpperAround ( self ) ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , FindModelFloorSector , FindModelFloorSector )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_FLOAT ( fdh ) ;
auto h = FindModelFloorSector ( self , fdh ) ;
ACTION_RETURN_POINTER ( h ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , FindModelCeilingSector , FindModelCeilingSector )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_FLOAT ( fdh ) ;
auto h = FindModelCeilingSector ( self , fdh ) ;
ACTION_RETURN_POINTER ( h ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetColor , SetColor )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_COLOR ( color ) ;
PARAM_INT ( desat ) ;
SetColor ( self , color , desat ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetFade , SetFade )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_COLOR ( fade ) ;
SetFade ( self , fade ) ;
return 0 ;
}
2018-11-25 12:35:32 +00:00
static void SetSpecialColor ( sector_t * self , int num , int color )
2018-11-25 10:34:50 +00:00
{
if ( num > = 0 & & num < 5 )
{
self - > SetSpecialColor ( num , color ) ;
}
}
2018-11-25 12:35:32 +00:00
2018-11-25 10:34:50 +00:00
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetSpecialColor , SetSpecialColor )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( num ) ;
PARAM_COLOR ( color ) ;
SetSpecialColor ( self , num , color ) ;
return 0 ;
}
static void SetFogDensity ( sector_t * self , int dens )
{
self - > Colormap . FogDensity = dens ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetFogDensity , SetFogDensity )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( dens ) ;
self - > Colormap . FogDensity = dens ;
return 0 ;
}
2018-11-25 12:35:32 +00:00
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , PlaneMoving , PlaneMoving )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
2018-11-25 12:35:32 +00:00
ACTION_RETURN_BOOL ( PlaneMoving ( self , pos ) ) ;
2018-11-25 10:34:50 +00:00
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetFloorLight , GetFloorLight )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
ACTION_RETURN_INT ( self - > GetFloorLight ( ) ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetCeilingLight , GetCeilingLight )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
ACTION_RETURN_INT ( self - > GetCeilingLight ( ) ) ;
}
static sector_t * GetHeightSec ( sector_t * self )
{
return self - > GetHeightSec ( ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetHeightSec , GetHeightSec )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
ACTION_RETURN_POINTER ( self - > GetHeightSec ( ) ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetSpecial , GetSpecial )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_POINTER ( spec , secspecial_t ) ;
2018-11-25 12:35:32 +00:00
GetSpecial ( self , spec ) ;
2018-11-25 10:34:50 +00:00
return 0 ;
}
2018-11-25 12:35:32 +00:00
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetSpecial , SetSpecial )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_POINTER ( spec , secspecial_t ) ;
2018-11-25 12:35:32 +00:00
SetSpecial ( self , spec ) ;
2018-11-25 10:34:50 +00:00
return 0 ;
}
2018-11-25 12:35:32 +00:00
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , TransferSpecial , TransferSpecial )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_POINTER ( spec , sector_t ) ;
2018-11-25 12:35:32 +00:00
TransferSpecial ( self , spec ) ;
2018-11-25 10:34:50 +00:00
return 0 ;
}
2018-11-25 12:35:32 +00:00
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetTerrain , GetTerrain )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
2018-11-25 12:35:32 +00:00
ACTION_RETURN_INT ( GetTerrain ( self , pos ) ) ;
2018-11-25 10:34:50 +00:00
}
2018-11-25 12:35:32 +00:00
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , CheckPortalPlane , CheckPortalPlane )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( plane ) ;
self - > CheckPortalPlane ( plane ) ;
return 0 ;
}
2018-11-25 12:35:32 +00:00
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , RemoveForceField , RemoveForceField )
2018-11-25 10:34:50 +00:00
{
2018-11-25 12:35:32 +00:00
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
RemoveForceField ( self ) ;
return 0 ;
2018-11-25 10:34:50 +00:00
}
2018-11-25 13:19:19 +00:00
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , AdjustFloorClip , AdjustFloorClip )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
2018-11-25 13:19:19 +00:00
AdjustFloorClip ( self ) ;
2018-11-25 10:34:50 +00:00
return 0 ;
}
2018-11-25 13:19:19 +00:00
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , PointInSector , P_PointInSectorXY )
2018-11-25 10:34:50 +00:00
{
PARAM_PROLOGUE ;
PARAM_FLOAT ( x ) ;
PARAM_FLOAT ( y ) ;
ACTION_RETURN_POINTER ( P_PointInSector ( x , y ) ) ;
}
2018-11-25 13:19:19 +00:00
static void SetXOffset ( sector_t * self , int pos , double o )
{
self - > SetXOffset ( pos , o ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetXOffset , SetXOffset )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
self - > SetXOffset ( pos , o ) ;
return 0 ;
}
2018-11-25 13:19:19 +00:00
static void AddXOffset ( sector_t * self , int pos , double o )
{
self - > AddXOffset ( pos , o ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , AddXOffset , AddXOffset )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
self - > AddXOffset ( pos , o ) ;
return 0 ;
}
2018-11-25 13:19:19 +00:00
static double GetXOffset ( sector_t * self , int pos )
{
return self - > GetXOffset ( pos ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetXOffset , GetXOffset )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_FLOAT ( self - > GetXOffset ( pos ) ) ;
}
2018-11-25 13:19:19 +00:00
static void SetYOffset ( sector_t * self , int pos , double o )
{
self - > SetYOffset ( pos , o ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetYOffset , SetYOffset )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
self - > SetXOffset ( pos , o ) ;
return 0 ;
}
2018-11-25 13:19:19 +00:00
static void AddYOffset ( sector_t * self , int pos , double o )
{
self - > AddYOffset ( pos , o ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , AddYOffset , AddYOffset )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
2018-11-25 13:19:19 +00:00
self - > AddYOffset ( pos , o ) ;
2018-11-25 10:34:50 +00:00
return 0 ;
}
2018-11-25 13:19:19 +00:00
static double GetYOffset ( sector_t * self , int pos )
{
return self - > GetYOffset ( pos ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetYOffset , GetYOffset )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_BOOL ( addbase ) ;
ACTION_RETURN_FLOAT ( self - > GetYOffset ( pos , addbase ) ) ;
}
2018-11-25 13:19:19 +00:00
static void SetXScale ( sector_t * self , int pos , double o )
{
self - > SetXScale ( pos , o ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetXScale , SetXScale )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
self - > SetXScale ( pos , o ) ;
return 0 ;
}
2018-11-25 13:19:19 +00:00
static double GetXScale ( sector_t * self , int pos )
{
return self - > GetXScale ( pos ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetXScale , GetXScale )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_FLOAT ( self - > GetXScale ( pos ) ) ;
}
2018-11-25 13:19:19 +00:00
static void SetYScale ( sector_t * self , int pos , double o )
{
self - > SetYScale ( pos , o ) ;
}
2018-11-25 10:34:50 +00:00
DEFINE_ACTION_FUNCTION ( _Sector , SetYScale )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
self - > SetYScale ( pos , o ) ;
return 0 ;
}
2018-11-25 13:19:19 +00:00
static double GetYScale ( sector_t * self , int pos )
{
return self - > GetYScale ( pos ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetYScale , GetYScale )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_FLOAT ( self - > GetYScale ( pos ) ) ;
}
2018-11-25 13:19:19 +00:00
static void SetAngle ( sector_t * self , int pos , double o )
{
self - > SetAngle ( pos , o ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetAngle , SetAngle )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_ANGLE ( o ) ;
self - > SetAngle ( pos , o ) ;
return 0 ;
}
2018-11-25 13:19:19 +00:00
static double GetAngle ( sector_t * self , int pos , bool addbase )
{
return self - > GetAngle ( pos , addbase ) . Degrees ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetAngle , GetAngle )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_BOOL ( addbase ) ;
ACTION_RETURN_FLOAT ( self - > GetAngle ( pos , addbase ) . Degrees ) ;
}
2018-11-25 13:19:19 +00:00
static void SetBase ( sector_t * self , int pos , double o , double a )
{
self - > SetBase ( pos , o , a ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetBase , SetBase )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
PARAM_ANGLE ( a ) ;
self - > SetBase ( pos , o , a ) ;
return 0 ;
}
2018-11-25 13:19:19 +00:00
static void SetAlpha ( sector_t * self , int pos , double o )
{
self - > SetAlpha ( pos , o ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , SetAlpha , SetAlpha )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
self - > SetAlpha ( pos , o ) ;
return 0 ;
}
2018-11-25 13:19:19 +00:00
static double GetAlpha ( sector_t * self , int pos )
{
return self - > GetAlpha ( pos ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetAlpha , GetAlpha )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_FLOAT ( self - > GetAlpha ( pos ) ) ;
}
2018-11-25 13:19:19 +00:00
static int GetFlags ( sector_t * self , int pos )
{
return self - > GetFlags ( pos ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetFlags , GetFlags )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_INT ( self - > GetFlags ( pos ) ) ;
}
2018-11-25 13:19:19 +00:00
static int GetVisFlags ( sector_t * self , int pos )
{
return self - > GetVisFlags ( pos ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , GetVisFlags , GetVisFlags )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_INT ( self - > GetVisFlags ( pos ) ) ;
}
2018-11-25 13:19:19 +00:00
static void ChangeFlags ( sector_t * self , int pos , int a , int o )
{
self - > ChangeFlags ( pos , a , o ) ;
}
DEFINE_ACTION_FUNCTION_NATIVE ( _Sector , ChangeFlags , ChangeFlags )
2018-11-25 10:34:50 +00:00
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_INT ( a ) ;
PARAM_INT ( o ) ;
self - > ChangeFlags ( pos , a , o ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , SetPlaneLight )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_INT ( o ) ;
self - > SetPlaneLight ( pos , o ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetPlaneLight )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_INT ( self - > GetPlaneLight ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , SetTexture )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_INT ( o ) ;
PARAM_BOOL ( adj ) ;
self - > SetTexture ( pos , FSetTextureID ( o ) , adj ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetTexture )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_INT ( self - > GetTexture ( pos ) . GetIndex ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , SetPlaneTexZ )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
PARAM_BOOL ( dirty ) ;
self - > SetPlaneTexZ ( pos , o , true ) ; // not setting 'dirty' here is a guaranteed cause for problems.
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetPlaneTexZ )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_FLOAT ( self - > GetPlaneTexZ ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , SetLightLevel )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( o ) ;
self - > SetLightLevel ( o ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , ChangeLightLevel )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( o ) ;
self - > ChangeLightLevel ( o ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetLightLevel )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
ACTION_RETURN_INT ( self - > GetLightLevel ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , PortalBlocksView )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_BOOL ( self - > PortalBlocksView ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , PortalBlocksSight )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_BOOL ( self - > PortalBlocksSight ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , PortalBlocksMovement )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_BOOL ( self - > PortalBlocksMovement ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , PortalBlocksSound )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_BOOL ( self - > PortalBlocksSound ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , PortalIsLinked )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_BOOL ( self - > PortalIsLinked ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , ClearPortal )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
self - > ClearPortal ( pos ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetPortalPlaneZ )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_FLOAT ( self - > GetPortalPlaneZ ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetPortalDisplacement )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_VEC2 ( self - > GetPortalDisplacement ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetPortalType )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_INT ( self - > GetPortalType ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetOppositePortalGroup )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_INT ( self - > GetOppositePortalGroup ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , CenterFloor )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
ACTION_RETURN_FLOAT ( self - > CenterFloor ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , CenterCeiling )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
ACTION_RETURN_FLOAT ( self - > CenterCeiling ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , Index )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
unsigned ndx = self - > Index ( ) ;
if ( ndx > = level . sectors . Size ( ) )
{
// This qualifies as an array out of bounds exception. Normally it can only happen when a sector copy is concerned which scripts should not be able to create.
ThrowAbortException ( X_ARRAY_OUT_OF_BOUNDS , " Accessed invalid sector " ) ;
}
ACTION_RETURN_INT ( ndx ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , SetEnvironmentID )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( envnum ) ;
level . Zones [ self - > ZoneNumber ] . Environment = S_FindEnvironment ( envnum ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , SetEnvironment )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_STRING ( env ) ;
level . Zones [ self - > ZoneNumber ] . Environment = S_FindEnvironment ( env ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetGlowHeight )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_FLOAT ( self - > GetGlowHeight ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , GetGlowColor )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
ACTION_RETURN_INT ( self - > GetGlowColor ( pos ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Sector , SetGlowHeight )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_FLOAT ( o ) ;
self - > SetGlowHeight ( pos , float ( o ) ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Sector , SetGlowColor )
{
PARAM_SELF_STRUCT_PROLOGUE ( sector_t ) ;
PARAM_INT ( pos ) ;
PARAM_COLOR ( o ) ;
self - > SetGlowColor ( pos , o ) ;
return 0 ;
}
//===========================================================================
//
// line_t exports
//
//===========================================================================
DEFINE_ACTION_FUNCTION ( _Line , isLinePortal )
{
PARAM_SELF_STRUCT_PROLOGUE ( line_t ) ;
ACTION_RETURN_BOOL ( self - > isLinePortal ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Line , isVisualPortal )
{
PARAM_SELF_STRUCT_PROLOGUE ( line_t ) ;
ACTION_RETURN_BOOL ( self - > isVisualPortal ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Line , getPortalDestination )
{
PARAM_SELF_STRUCT_PROLOGUE ( line_t ) ;
ACTION_RETURN_POINTER ( self - > getPortalDestination ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Line , getPortalAlignment )
{
PARAM_SELF_STRUCT_PROLOGUE ( line_t ) ;
ACTION_RETURN_INT ( self - > getPortalAlignment ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Line , Index )
{
PARAM_SELF_STRUCT_PROLOGUE ( line_t ) ;
unsigned ndx = self - > Index ( ) ;
if ( ndx > = level . lines . Size ( ) )
{
ThrowAbortException ( X_ARRAY_OUT_OF_BOUNDS , " Accessed invalid line " ) ;
}
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 ( ) ) ;
}
//=====================================================================================
//
//
//=====================================================================================
DEFINE_ACTION_FUNCTION ( _Side , SetSpecialColor )
{
PARAM_SELF_STRUCT_PROLOGUE ( side_t ) ;
PARAM_INT ( tier ) ;
PARAM_INT ( position ) ;
PARAM_COLOR ( color ) ;
if ( tier > = 0 & & tier < 3 & & position > = 0 & & position < 2 )
{
color . a = 255 ;
self - > SetSpecialColor ( tier , position , color ) ;
}
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Vertex , Index )
{
PARAM_SELF_STRUCT_PROLOGUE ( vertex_t ) ;
ACTION_RETURN_INT ( self - > Index ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _TexMan , ReplaceTextures )
{
PARAM_PROLOGUE ;
PARAM_STRING ( from ) ;
PARAM_STRING ( to ) ;
PARAM_INT ( flags ) ;
P_ReplaceTextures ( from , to , flags ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Secplane , isSlope )
{
PARAM_SELF_STRUCT_PROLOGUE ( secplane_t ) ;
ACTION_RETURN_BOOL ( ! self - > normal . XY ( ) . isZero ( ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Secplane , PointOnSide )
{
PARAM_SELF_STRUCT_PROLOGUE ( secplane_t ) ;
PARAM_FLOAT ( x ) ;
PARAM_FLOAT ( y ) ;
PARAM_FLOAT ( z ) ;
ACTION_RETURN_INT ( self - > PointOnSide ( DVector3 ( x , y , z ) ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Secplane , ZatPoint )
{
PARAM_SELF_STRUCT_PROLOGUE ( secplane_t ) ;
PARAM_FLOAT ( x ) ;
PARAM_FLOAT ( y ) ;
ACTION_RETURN_FLOAT ( self - > ZatPoint ( x , y ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Secplane , ZatPointDist )
{
PARAM_SELF_STRUCT_PROLOGUE ( secplane_t ) ;
PARAM_FLOAT ( x ) ;
PARAM_FLOAT ( y ) ;
PARAM_FLOAT ( d ) ;
ACTION_RETURN_FLOAT ( ( d + self - > normal . X * x + self - > normal . Y * y ) * self - > negiC ) ;
}
DEFINE_ACTION_FUNCTION ( _Secplane , isEqual )
{
PARAM_SELF_STRUCT_PROLOGUE ( secplane_t ) ;
PARAM_POINTER ( other , secplane_t ) ;
ACTION_RETURN_BOOL ( * self = = * other ) ;
}
DEFINE_ACTION_FUNCTION ( _Secplane , ChangeHeight )
{
PARAM_SELF_STRUCT_PROLOGUE ( secplane_t ) ;
PARAM_FLOAT ( hdiff ) ;
self - > ChangeHeight ( hdiff ) ;
return 0 ;
}
DEFINE_ACTION_FUNCTION ( _Secplane , GetChangedHeight )
{
PARAM_SELF_STRUCT_PROLOGUE ( secplane_t ) ;
PARAM_FLOAT ( hdiff ) ;
ACTION_RETURN_FLOAT ( self - > GetChangedHeight ( hdiff ) ) ;
}
DEFINE_ACTION_FUNCTION ( _Secplane , HeightDiff )
{
PARAM_SELF_STRUCT_PROLOGUE ( secplane_t ) ;
PARAM_FLOAT ( oldd ) ;
PARAM_FLOAT ( newd ) ;
if ( newd ! = 1e37 )
{
ACTION_RETURN_FLOAT ( self - > HeightDiff ( oldd ) ) ;
}
else
{
PARAM_FLOAT ( newd ) ;
ACTION_RETURN_FLOAT ( self - > HeightDiff ( oldd , newd ) ) ;
}
}
DEFINE_ACTION_FUNCTION ( _Secplane , PointToDist )
{
PARAM_SELF_STRUCT_PROLOGUE ( secplane_t ) ;
PARAM_FLOAT ( x ) ;
PARAM_FLOAT ( y ) ;
PARAM_FLOAT ( z ) ;
ACTION_RETURN_FLOAT ( self - > PointToDist ( DVector2 ( x , y ) , z ) ) ;
}