mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 09:17:36 +01:00
Core/AreaTriggers: Document scale curve fields
This commit is contained in:
@@ -125,8 +125,8 @@ bool AreaTrigger::Create(uint32 spellMiscId, Unit* caster, Unit* target, SpellIn
|
||||
SetUInt32Value(AREATRIGGER_DECAL_PROPERTIES_ID, GetMiscTemplate()->DecalPropertiesId);
|
||||
|
||||
for (uint8 scaleCurveIndex = 0; scaleCurveIndex < MAX_AREATRIGGER_SCALE; ++scaleCurveIndex)
|
||||
if (GetMiscTemplate()->ScaleInfo.ExtraScale[scaleCurveIndex].AsInt32)
|
||||
SetUInt32Value(AREATRIGGER_EXTRA_SCALE_CURVE + scaleCurveIndex, GetMiscTemplate()->ScaleInfo.ExtraScale[scaleCurveIndex].AsInt32);
|
||||
if (GetMiscTemplate()->ExtraScale.Data.Raw[scaleCurveIndex])
|
||||
SetUInt32Value(AREATRIGGER_EXTRA_SCALE_CURVE + scaleCurveIndex, GetMiscTemplate()->ExtraScale.Data.Raw[scaleCurveIndex]);
|
||||
|
||||
PhasingHandler::InheritPhaseShift(this, caster);
|
||||
|
||||
|
||||
@@ -23,11 +23,7 @@
|
||||
|
||||
AreaTriggerScaleInfo::AreaTriggerScaleInfo()
|
||||
{
|
||||
memset(OverrideScale, 0, sizeof(OverrideScale));
|
||||
memset(ExtraScale, 0, sizeof(ExtraScale));
|
||||
|
||||
ExtraScale[5].AsFloat = 1.0000001f;
|
||||
ExtraScale[6].AsInt32 = 1;
|
||||
memset(Data.Raw, 0, sizeof(Data.Raw));
|
||||
}
|
||||
|
||||
AreaTriggerTemplate::AreaTriggerTemplate()
|
||||
@@ -104,6 +100,13 @@ AreaTriggerMiscTemplate::AreaTriggerMiscTemplate()
|
||||
TimeToTarget = 0;
|
||||
TimeToTargetScale = 0;
|
||||
|
||||
// legacy code from before it was known what each curve field does
|
||||
// wtf? thats not how you pack curve data
|
||||
float tmp = 1.0000001f;
|
||||
memcpy(&ExtraScale.Data.Raw[5], &tmp, sizeof(tmp));
|
||||
// also OverrideActive does nothing on ExtraScale
|
||||
ExtraScale.Data.Structured.OverrideActive = 1;
|
||||
|
||||
Template = nullptr;
|
||||
}
|
||||
|
||||
|
||||
@@ -78,21 +78,34 @@ struct AreaTriggerAction
|
||||
AreaTriggerActionUserTypes TargetType;
|
||||
};
|
||||
|
||||
// Scale array definition
|
||||
// 0 - time offset from creation for starting of scaling
|
||||
// 1+2,3+4 are values for curve points Vector2[2]
|
||||
// 5 is packed curve information (has_no_data & 1) | ((interpolation_mode & 0x7) << 1) | ((first_point_offset & 0x7FFFFF) << 4) | ((point_count & 0x1F) << 27)
|
||||
// 6 bool is_override, only valid for AREATRIGGER_OVERRIDE_SCALE_CURVE, if true then use data from AREATRIGGER_OVERRIDE_SCALE_CURVE instead of ScaleCurveId from CreateObject
|
||||
|
||||
struct AreaTriggerScaleInfo
|
||||
{
|
||||
AreaTriggerScaleInfo();
|
||||
|
||||
union
|
||||
{
|
||||
int32 AsInt32;
|
||||
float AsFloat;
|
||||
} OverrideScale[MAX_AREATRIGGER_SCALE];
|
||||
struct
|
||||
{
|
||||
uint32 StartTimeOffset;
|
||||
float Points[4];
|
||||
struct
|
||||
{
|
||||
uint32 NoData : 1;
|
||||
uint32 InterpolationMode : 3;
|
||||
uint32 FirstPointOffset : 23;
|
||||
uint32 PointCount : 5;
|
||||
} CurveParameters;
|
||||
uint32 OverrideActive;
|
||||
} Structured;
|
||||
|
||||
union
|
||||
{
|
||||
int32 AsInt32;
|
||||
float AsFloat;
|
||||
} ExtraScale[MAX_AREATRIGGER_SCALE];
|
||||
uint32 Raw[MAX_AREATRIGGER_SCALE];
|
||||
} Data;
|
||||
};
|
||||
|
||||
struct AreaTriggerCircularMovementInfo
|
||||
@@ -199,7 +212,8 @@ public:
|
||||
uint32 TimeToTarget;
|
||||
uint32 TimeToTargetScale;
|
||||
|
||||
AreaTriggerScaleInfo ScaleInfo;
|
||||
AreaTriggerScaleInfo OverrideScale;
|
||||
AreaTriggerScaleInfo ExtraScale;
|
||||
AreaTriggerCircularMovementInfo CircularMovementInfo;
|
||||
|
||||
AreaTriggerTemplate const* Template;
|
||||
|
||||
Reference in New Issue
Block a user