Core/AreaTriggers: Refactor (#29500)

* Moved IsServerside to custom flags
* Flags moved from areatrigger_template to areatrigger_create_properties
* New field to create custom CreateProperties (IsCustom)
* New field to reference custom areatriggers (IsAreatriggerCustom)
* Moved fields for shape data to areatrigger_create_properties
This commit is contained in:
Meji
2023-12-30 17:14:09 +01:00
committed by GitHub
parent dbe54dc877
commit 37eb2e64a6
15 changed files with 512 additions and 363 deletions
+12 -13
View File
@@ -441,20 +441,19 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
{
AreaTrigger const* areaTrigger = ToAreaTrigger();
AreaTriggerCreateProperties const* createProperties = areaTrigger->GetCreateProperties();
AreaTriggerTemplate const* areaTriggerTemplate = areaTrigger->GetTemplate();
AreaTriggerShapeInfo const& shape = areaTrigger->GetShape();
*data << uint32(areaTrigger->GetTimeSinceCreated());
*data << areaTrigger->GetRollPitchYaw().PositionXYZStream();
bool hasAbsoluteOrientation = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ABSOLUTE_ORIENTATION);
bool hasDynamicShape = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_DYNAMIC_SHAPE);
bool hasAttached = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED);
bool hasFaceMovementDir = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_FACE_MOVEMENT_DIR);
bool hasFollowsTerrain = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_FOLLOWS_TERRAIN);
bool hasUnk1 = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_UNK1);
bool hasTargetRollPitchYaw = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_TARGET_ROLL_PITCH_YAW);
bool hasAbsoluteOrientation = createProperties && createProperties->Flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasAbsoluteOrientation);
bool hasDynamicShape = createProperties && createProperties->Flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasDynamicShape);
bool hasAttached = createProperties && createProperties->Flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasAttached);
bool hasFaceMovementDir = createProperties && createProperties->Flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasFaceMovementDir);
bool hasFollowsTerrain = createProperties && createProperties->Flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasFollowsTerrain);
bool hasUnk1 = createProperties && createProperties->Flags.HasFlag(AreaTriggerCreatePropertiesFlag::Unk1);
bool hasTargetRollPitchYaw = createProperties && createProperties->Flags.HasFlag(AreaTriggerCreatePropertiesFlag::HasTargetRollPitchYaw);
bool hasScaleCurveID = createProperties && createProperties->ScaleCurveId != 0;
bool hasMorphCurveID = createProperties && createProperties->MorphCurveId != 0;
bool hasFacingCurveID = createProperties && createProperties->FacingCurveId != 0;
@@ -464,7 +463,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
bool hasAreaTriggerPolygon = createProperties && shape.IsPolygon();
bool hasAreaTriggerCylinder = shape.IsCylinder();
bool hasDisk = shape.IsDisk();
bool hasBoundedPlane = shape.IsBoudedPlane();
bool hasBoundedPlane = shape.IsBoundedPlane();
bool hasAreaTriggerSpline = areaTrigger->HasSplines();
bool hasOrbit = areaTrigger->HasOrbit();
bool hasMovementScript = false;
@@ -533,15 +532,15 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
if (hasAreaTriggerPolygon)
{
*data << int32(createProperties->PolygonVertices.size());
*data << int32(createProperties->PolygonVerticesTarget.size());
*data << int32(shape.PolygonVertices.size());
*data << int32(shape.PolygonVerticesTarget.size());
*data << float(shape.PolygonDatas.Height);
*data << float(shape.PolygonDatas.HeightTarget);
for (TaggedPosition<Position::XY> const& vertice : createProperties->PolygonVertices)
for (TaggedPosition<Position::XY> const& vertice : shape.PolygonVertices)
*data << vertice;
for (TaggedPosition<Position::XY> const& vertice : createProperties->PolygonVerticesTarget)
for (TaggedPosition<Position::XY> const& vertice : shape.PolygonVerticesTarget)
*data << vertice;
}