Core/AreaTriggers: Update areatrigger shape enum
This commit is contained in:
@@ -196,11 +196,13 @@ enum class AreaTriggerShapeType : int8
|
|||||||
{
|
{
|
||||||
Sphere = 0,
|
Sphere = 0,
|
||||||
Box = 1,
|
Box = 1,
|
||||||
Unk = 2,
|
Quad2D = 2,
|
||||||
Polygon = 3,
|
Polygon = 3,
|
||||||
Cylinder = 4,
|
Cylinder = 4,
|
||||||
Disk = 5,
|
Script = 5,
|
||||||
BoundedPlane = 6,
|
FromUnit = 6,
|
||||||
|
Disk = 7,
|
||||||
|
BoundedPlane = 8,
|
||||||
Max
|
Max
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1113,21 +1113,21 @@ void AreaTrigger::SetShape(AreaTriggerShapeInfo const& shape)
|
|||||||
|
|
||||||
if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Sphere>)
|
if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Sphere>)
|
||||||
{
|
{
|
||||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), 0);
|
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), uint8(AreaTriggerShapeType::Sphere));
|
||||||
auto sphere = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerSphere>);
|
auto sphere = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerSphere>);
|
||||||
SetUpdateFieldValue(sphere.ModifyValue(&UF::AreaTriggerSphere::Radius), shapeData.Radius);
|
SetUpdateFieldValue(sphere.ModifyValue(&UF::AreaTriggerSphere::Radius), shapeData.Radius);
|
||||||
SetUpdateFieldValue(sphere.ModifyValue(&UF::AreaTriggerSphere::RadiusTarget), shapeData.RadiusTarget);
|
SetUpdateFieldValue(sphere.ModifyValue(&UF::AreaTriggerSphere::RadiusTarget), shapeData.RadiusTarget);
|
||||||
}
|
}
|
||||||
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Box>)
|
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Box>)
|
||||||
{
|
{
|
||||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), 1);
|
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), uint8(AreaTriggerShapeType::Box));
|
||||||
auto box = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerBox>);
|
auto box = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerBox>);
|
||||||
SetUpdateFieldValue(box.ModifyValue(&UF::AreaTriggerBox::Extents), shapeData.Extents);
|
SetUpdateFieldValue(box.ModifyValue(&UF::AreaTriggerBox::Extents), shapeData.Extents);
|
||||||
SetUpdateFieldValue(box.ModifyValue(&UF::AreaTriggerBox::ExtentsTarget), shapeData.ExtentsTarget);
|
SetUpdateFieldValue(box.ModifyValue(&UF::AreaTriggerBox::ExtentsTarget), shapeData.ExtentsTarget);
|
||||||
}
|
}
|
||||||
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Polygon>)
|
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Polygon>)
|
||||||
{
|
{
|
||||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), 3);
|
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), uint8(shapeData.Type));
|
||||||
auto polygon = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerPolygon>);
|
auto polygon = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerPolygon>);
|
||||||
auto vertices = polygon.ModifyValue(&UF::AreaTriggerPolygon::Vertices);
|
auto vertices = polygon.ModifyValue(&UF::AreaTriggerPolygon::Vertices);
|
||||||
ClearDynamicUpdateFieldValues(vertices);
|
ClearDynamicUpdateFieldValues(vertices);
|
||||||
@@ -1142,7 +1142,7 @@ void AreaTrigger::SetShape(AreaTriggerShapeInfo const& shape)
|
|||||||
}
|
}
|
||||||
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Cylinder>)
|
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Cylinder>)
|
||||||
{
|
{
|
||||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), 4);
|
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), uint8(AreaTriggerShapeType::Cylinder));
|
||||||
auto cylinder = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerCylinder>);
|
auto cylinder = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerCylinder>);
|
||||||
SetUpdateFieldValue(cylinder.ModifyValue(&UF::AreaTriggerCylinder::Radius), shapeData.Radius);
|
SetUpdateFieldValue(cylinder.ModifyValue(&UF::AreaTriggerCylinder::Radius), shapeData.Radius);
|
||||||
SetUpdateFieldValue(cylinder.ModifyValue(&UF::AreaTriggerCylinder::RadiusTarget), shapeData.RadiusTarget);
|
SetUpdateFieldValue(cylinder.ModifyValue(&UF::AreaTriggerCylinder::RadiusTarget), shapeData.RadiusTarget);
|
||||||
@@ -1153,7 +1153,7 @@ void AreaTrigger::SetShape(AreaTriggerShapeInfo const& shape)
|
|||||||
}
|
}
|
||||||
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Disk>)
|
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::Disk>)
|
||||||
{
|
{
|
||||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), 7);
|
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), uint8(AreaTriggerShapeType::Disk));
|
||||||
auto disk = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerDisk>);
|
auto disk = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerDisk>);
|
||||||
SetUpdateFieldValue(disk.ModifyValue(&UF::AreaTriggerDisk::InnerRadius), shapeData.InnerRadius);
|
SetUpdateFieldValue(disk.ModifyValue(&UF::AreaTriggerDisk::InnerRadius), shapeData.InnerRadius);
|
||||||
SetUpdateFieldValue(disk.ModifyValue(&UF::AreaTriggerDisk::InnerRadiusTarget), shapeData.InnerRadiusTarget);
|
SetUpdateFieldValue(disk.ModifyValue(&UF::AreaTriggerDisk::InnerRadiusTarget), shapeData.InnerRadiusTarget);
|
||||||
@@ -1166,7 +1166,7 @@ void AreaTrigger::SetShape(AreaTriggerShapeInfo const& shape)
|
|||||||
}
|
}
|
||||||
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::BoundedPlane>)
|
else if constexpr (std::is_same_v<ShapeType, AreaTriggerShapeInfo::BoundedPlane>)
|
||||||
{
|
{
|
||||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), 8);
|
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeType), uint8(AreaTriggerShapeType::BoundedPlane));
|
||||||
auto boundedPlane = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerBoundedPlane>);
|
auto boundedPlane = areaTriggerData.ModifyValue(&UF::AreaTriggerData::ShapeData, UF::VariantCase<UF::AreaTriggerBoundedPlane>);
|
||||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsY), shapeData.ExtentsY);
|
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsY), shapeData.ExtentsY);
|
||||||
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsZ), shapeData.ExtentsZ);
|
SetUpdateFieldValue(boundedPlane.ModifyValue(&UF::AreaTriggerBoundedPlane::ExtentsZ), shapeData.ExtentsZ);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#ifndef TRINITYCORE_AREATRIGGER_TEMPLATE_H
|
#ifndef TRINITYCORE_AREATRIGGER_TEMPLATE_H
|
||||||
#define TRINITYCORE_AREATRIGGER_TEMPLATE_H
|
#define TRINITYCORE_AREATRIGGER_TEMPLATE_H
|
||||||
|
|
||||||
|
#include "DBCEnums.h"
|
||||||
#include "Define.h"
|
#include "Define.h"
|
||||||
#include "EnumFlag.h"
|
#include "EnumFlag.h"
|
||||||
#include "ObjectGuid.h"
|
#include "ObjectGuid.h"
|
||||||
@@ -121,14 +122,17 @@ struct AreaTriggerShapeInfo
|
|||||||
struct Polygon
|
struct Polygon
|
||||||
{
|
{
|
||||||
Polygon()
|
Polygon()
|
||||||
: PolygonVertices(), PolygonVerticesTarget(), Height(0.0f), HeightTarget(0.0f) { }
|
: PolygonVertices(), PolygonVerticesTarget(), Height(0.0f), HeightTarget(0.0f), Type(AreaTriggerShapeType::Polygon) {
|
||||||
explicit Polygon(std::array<float, MAX_AREATRIGGER_ENTITY_DATA> const& raw)
|
}
|
||||||
: PolygonVertices(), PolygonVerticesTarget(), Height(raw[0]), HeightTarget(raw[1]) { }
|
explicit Polygon(AreaTriggerShapeType type, std::array<float, MAX_AREATRIGGER_ENTITY_DATA> const& raw)
|
||||||
|
: PolygonVertices(), PolygonVerticesTarget(), Height(raw[0]), HeightTarget(raw[1]), Type(type) {
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<TaggedPosition<Position::XY>> PolygonVertices;
|
std::vector<TaggedPosition<Position::XY>> PolygonVertices;
|
||||||
std::vector<TaggedPosition<Position::XY>> PolygonVerticesTarget;
|
std::vector<TaggedPosition<Position::XY>> PolygonVerticesTarget;
|
||||||
float Height;
|
float Height;
|
||||||
float HeightTarget;
|
float HeightTarget;
|
||||||
|
AreaTriggerShapeType Type;
|
||||||
|
|
||||||
float GetMaxSearchRadius() const;
|
float GetMaxSearchRadius() const;
|
||||||
bool IsDynamic() const;
|
bool IsDynamic() const;
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shape == AreaTriggerShapeType::Unk || shape >= AreaTriggerShapeType::Max)
|
if (shape == AreaTriggerShapeType::Script || shape == AreaTriggerShapeType::FromUnit || shape >= AreaTriggerShapeType::Max)
|
||||||
{
|
{
|
||||||
TC_LOG_ERROR("sql.sql", "Table `areatrigger_create_properties` has listed AreaTriggerCreatePropertiesId (Id: {}, IsCustom: {}) with invalid shape {}.",
|
TC_LOG_ERROR("sql.sql", "Table `areatrigger_create_properties` has listed AreaTriggerCreatePropertiesId (Id: {}, IsCustom: {}) with invalid shape {}.",
|
||||||
createPropertiesId.Id, uint32(createPropertiesId.IsCustom), uint32(shape));
|
createPropertiesId.Id, uint32(createPropertiesId.IsCustom), uint32(shape));
|
||||||
@@ -277,9 +277,10 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates()
|
|||||||
case AreaTriggerShapeType::Box:
|
case AreaTriggerShapeType::Box:
|
||||||
createProperties.Shape.Data.emplace<AreaTriggerShapeInfo::Box>(shapeData);
|
createProperties.Shape.Data.emplace<AreaTriggerShapeInfo::Box>(shapeData);
|
||||||
break;
|
break;
|
||||||
|
case AreaTriggerShapeType::Quad2D:
|
||||||
case AreaTriggerShapeType::Polygon:
|
case AreaTriggerShapeType::Polygon:
|
||||||
{
|
{
|
||||||
AreaTriggerShapeInfo::Polygon& polygon = createProperties.Shape.Data.emplace<AreaTriggerShapeInfo::Polygon>(shapeData);
|
AreaTriggerShapeInfo::Polygon& polygon = createProperties.Shape.Data.emplace<AreaTriggerShapeInfo::Polygon>(shape, shapeData);
|
||||||
if (polygon.Height <= 0.0f)
|
if (polygon.Height <= 0.0f)
|
||||||
{
|
{
|
||||||
polygon.Height = 1.0f;
|
polygon.Height = 1.0f;
|
||||||
|
|||||||
Reference in New Issue
Block a user