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