2016-03-12 01:20:51 +01:00
|
|
|
/* Copyright (c) 2002-2012 Croteam Ltd.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of version 2 of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation
|
|
|
|
|
|
|
|
|
|
|
|
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, write to the Free Software Foundation, Inc.,
|
|
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
|
2016-03-11 14:57:17 +01:00
|
|
|
|
|
|
|
#ifndef SE_INCL_BRUSHTRANSFORMED_H
|
|
|
|
#define SE_INCL_BRUSHTRANSFORMED_H
|
|
|
|
#ifdef PRAGMA_ONCE
|
|
|
|
#pragma once
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#undef ALIGNED_NEW_AND_DELETE
|
|
|
|
#ifdef NDEBUG
|
|
|
|
#define ALIGNED_NEW_AND_DELETE(align) \
|
|
|
|
void *operator new[] (size_t size) { return AllocMemoryAligned(size, align); }; \
|
|
|
|
void operator delete[] (void* ptr) { FreeMemoryAligned(ptr); };
|
|
|
|
#else
|
|
|
|
#define ALIGNED_NEW_AND_DELETE(align)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <Engine/Math/Vector.h>
|
|
|
|
#include <Engine/Math/Plane.h>
|
|
|
|
#include <Engine/Math/TextureMapping.h>
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Cached transformed vertex.
|
|
|
|
*/
|
|
|
|
class CWorkingVertex {
|
|
|
|
public:
|
|
|
|
FLOAT3D wvx_vRelative; // coordinates in brush space
|
|
|
|
ALIGNED_NEW_AND_DELETE(32);
|
|
|
|
/* Clear the object. */
|
|
|
|
inline void Clear(void) {};
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Cached transformed plane.
|
|
|
|
*/
|
|
|
|
class CWorkingPlane {
|
|
|
|
public:
|
|
|
|
FLOATplane3D wpl_plRelative; // coordinates in brush space
|
|
|
|
CMappingVectors wpl_mvRelative; // mapping vectors in brush space
|
|
|
|
FLOATplane3D wpl_plView; // coordinates in view space
|
|
|
|
CMappingVectors wpl_mvView; // mapping vectors in view space
|
|
|
|
CPlanarGradients wpl_pgOoK; // plane gradients in default mapping
|
|
|
|
BOOL wpl_bVisible; // set if the plane is visible
|
|
|
|
/* Clear the object. */
|
|
|
|
inline void Clear(void) {};
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Cached transformed edge.
|
|
|
|
*/
|
|
|
|
class CWorkingEdge {
|
|
|
|
public:
|
|
|
|
INDEX wed_iwvx0; // working vertices in sector
|
|
|
|
INDEX wed_iwvx1;
|
|
|
|
/* Clear the object. */
|
|
|
|
inline void Clear(void) {};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* include-once check. */
|
|
|
|
|