- inlined the 4 remaining short functions of the Plane class and removed gl_geometric.cpp.

# Conflicts:
#	src/CMakeLists.txt

# Conflicts:
#	src/CMakeLists.txt
This commit is contained in:
Christoph Oelckers 2017-03-12 19:49:53 +01:00
parent b52d1c3d50
commit 438b983ab1
4 changed files with 29 additions and 73 deletions

View file

@ -903,7 +903,6 @@ set( FASTMATH_SOURCES
sound/mididevices/music_timiditypp_mididevice.cpp
gl/data/gl_matrix.cpp
gl/utility/gl_clock.cpp
gl/utility/gl_geometric.cpp
gl/renderer/gl_2ddrawer.cpp
gl/hqnx/init.cpp
gl/hqnx/hq2x.cpp

View file

@ -64,7 +64,7 @@ struct GLSeg
FVector3 Normal() const
{
// we do not use the vector math inlines here because they are not optimized for speed but accuracy in the playsim
// we do not use the vector math inlines here because they are not optimized for speed but accuracy in the playsim and this is called quite frequently.
float x = y2 - y1;
float y = x1 - x2;
#if defined(__amd64__) || defined(_M_X64)

View file

@ -1,67 +0,0 @@
/*
** gl_geometric.cpp
**
**---------------------------------------------------------------------------
** Copyright 2003 Timothy Stump
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
*/
#include <math.h>
#include <float.h>
#include "gl/utility/gl_geometric.h"
#include "gl/scene/gl_wall.h"
void Plane::Set(GLSeg *seg)
{
m_normal = seg->Normal();
m_d = m_normal | FVector3(-seg->x1, 0, -seg->y1);
}
void Plane::Set(secplane_t &plane)
{
m_normal = { (float)plane.Normal().X, (float)plane.Normal().Z, (float)plane.Normal().Y };
m_d = (float)plane.fD();
}
float Plane::DistToPoint(float x, float y, float z)
{
FVector3 p(x, y, z);
return (m_normal | p) + m_d;
}
bool Plane::PointOnSide(float x, float y, float z)
{
return DistToPoint(x, y, z) < 0.f;
}

View file

@ -36,16 +36,39 @@
#include "math.h"
#include "r_defs.h"
#include "gl/scene/gl_wall.h"
struct GLSeg;
class Plane
{
public:
void Set(GLSeg *seg);
void Set(secplane_t &plane);
float DistToPoint(float x, float y, float z);
bool PointOnSide(float x, float y, float z);
void Set(GLSeg *seg)
{
m_normal = seg->Normal();
m_d = m_normal | FVector3(-seg->x1, 0, -seg->y1);
}
void Set(secplane_t &plane)
{
m_normal = { (float)plane.Normal().X, (float)plane.Normal().Z, (float)plane.Normal().Y };
m_d = (float)plane.fD();
}
float DistToPoint(float x, float y, float z)
{
FVector3 p(x, y, z);
return (m_normal | p) + m_d;
}
bool PointOnSide(float x, float y, float z)
{
return DistToPoint(x, y, z) < 0.f;
}
bool PointOnSide(FVector3 &v) { return PointOnSide(v.X, v.Y, v.Z); }
bool ValidNormal() { return m_normal.LengthSquared() == 1.f; }
@ -60,6 +83,7 @@ protected:
float m_d;
};
class Matrix3x4 // used like a 4x4 matrix with the last row always being (0,0,0,1)
{
float m[3][4];