3#include <Core/ResourceManager/ResourceHandle.h>
4#include <Core/World/Declarations.h>
5#include <Foundation/Math/Color16f.h>
6#include <Foundation/SimdMath/SimdTransform.h>
7#include <Foundation/Strings/HashedString.h>
8#include <Foundation/Types/SharedPtr.h>
9#include <ProcGenPlugin/ProcGenPluginDLL.h>
18 using StorageType = plUInt8;
37 using StorageType = plUInt8;
57 using StorageType = plUInt8;
89 using StorageType = plUInt8;
104 using StorageType = plUInt8;
122 using StorageType = plUInt8;
132 Default = ReferenceColor
140namespace plProcGenInternal
143 class FindPlacementTilesTask;
144 class PreparePlacementTask;
146 class VertexColorTask;
147 struct PlacementData;
187 float GetTileSize()
const {
return m_pPattern->m_fSize * m_fFootprint; }
191 return !m_ObjectsToPlace.IsEmpty() && m_pPattern !=
nullptr && m_fFootprint > 0.0f && m_fCullDistance > 0.0f && m_pByteCode !=
nullptr;
196 const Pattern* m_pPattern =
nullptr;
197 float m_fFootprint = 1.0f;
203 float m_fAlignToNormal = 1.0f;
208 float m_fCullDistance = 30.0f;
210 plUInt32 m_uiCollisionLayer = 0;
257 PL_DECLARE_POD_TYPE();
262 plUInt8 m_uiColorIndex;
263 plUInt8 m_uiObjectIndex;
264 plUInt16 m_uiPointIndex;
269 PL_DECLARE_POD_TYPE();
273 plUInt16 m_uiPointIndex;
274 plUInt8 m_uiObjectIndex;
275 bool m_bHasValidColor;
276 plUInt32 m_uiPadding;
282 plUInt32 m_uiOutputIndex;
288 float m_fDistanceToCamera;
292 return m_hComponent == other.m_hComponent && m_uiOutputIndex == other.m_uiOutputIndex && m_iPosX == other.m_iPosX && m_iPosY == other.m_iPosY;
297 plVec2 vCenter =
plVec2(m_iPosX * m_fTileSize, m_iPosY * m_fTileSize);
298 plVec3 vMin = (vCenter -
plVec2(m_fTileSize * 0.5f)).GetAsVec3(m_fMinZ);
299 plVec3 vMax = (vCenter +
plVec2(m_fTileSize * 0.5f)).GetAsVec3(m_fMaxZ);
Float wrapper struct for a safe usage and conversions of angles.
Definition Angle.h:10
static constexpr plAngle MakeFromRadian(float fRadian)
Creates an instance of plAngle that was initialized from radian. (No need for any conversion)
Definition Angle_inl.h:38
This class encapsulates an array and it's size. It is recommended to use this class instead of plain ...
Definition ArrayPtr.h:37
static plBoundingBoxTemplate< float > MakeFromMinMax(const plVec3Template< float > &vMin, const plVec3Template< float > &vMax)
Definition BoundingBox_inl.h:42
A 16bit per channel float color storage format.
Definition Color16f.h:11
Definition ExpressionByteCode.h:10
This class is optimized to take nearly no memory (sizeof(void*)) and to allow very fast checks whethe...
Definition HashedString.h:25
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Base class for reference counted objects.
Definition RefCounted.h:52
A Shared ptr manages a shared object and destroys that object when no one references it anymore....
Definition SharedPtr.h:10
Interface for binary in (read) streams.
Definition Stream.h:22
Interface for binary out (write) streams.
Definition Stream.h:107
A Unique ptr manages an object and destroys that object when it goes out of scope....
Definition UniquePtr.h:10
static plVec3Template< float > MakeZero()
Definition Vec3.h:38
A world encapsulates a scene graph of game objects and various component managers and their component...
Definition World.h:22
A handle to a component.
Definition Declarations.h:138
A custom enum implementation that allows to define the underlying storage type to control its memory ...
Definition Enum.h:37
Definition Declarations.h:17
Definition Declarations.h:36
Definition Declarations.h:242
Definition Declarations.h:169
Definition Declarations.h:150
Definition Declarations.h:174
Definition Declarations.h:158
Definition Declarations.h:156
Definition Declarations.h:186
Definition Declarations.h:256
Definition Declarations.h:280
Definition Declarations.h:220
Definition Declarations.h:88
Definition Declarations.h:103
Definition Declarations.h:56
Definition Declarations.h:75
Definition Declarations.h:121
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54