Common Types: Difference between revisions
(Adding C3iVector) |
Barncastle (talk | contribs) mNo edit summary |
||
(8 intermediate revisions by 4 users not shown) | |||
Line 11: | Line 11: | ||
using stringref = uint32_t; | using stringref = uint32_t; | ||
==langstringref== | ==langstringref== | ||
A field for localized strings, consisting of an array of stringrefs followed by a field of flags. The amount of language entries depends on the version, with Cataclysm dropping all but the client's language. See [[Localization]] for details. | A field for localized strings, consisting of an array of stringrefs followed by a field of flags. The amount of language entries depends on the version, with Cataclysm dropping all but the client's language. See [[Localization]] for details. | ||
struct langstringref | struct langstringref | ||
{ | { | ||
#if {{Template:Sandbox/VersionRange|max_expansionlevel=4|max_exclusive=1}} | #if {{Template:Sandbox/VersionRange|max_expansionlevel=4|max_exclusive=1}} | ||
stringref enUS; // also enGB | stringref enUS; // also enGB | ||
Line 24: | Line 23: | ||
stringref esES; | stringref esES; | ||
stringref esMX; | stringref esMX; | ||
#if {{Template:Sandbox/VersionRange|min_expansionlevel=3}} | //! \todo verify that pre->8 locales hadn't changed | ||
#if {{Template:Sandbox/VersionRange|min_expansionlevel=2|min_build=2.?.?.????}} // {{Template:Unverified|At least in 2.4.3, but probably after 2.0}} | |||
stringref ruRU; | stringref ruRU; | ||
stringref unknown_9; | stringref unknown_9; | ||
Line 46: | Line 46: | ||
float x; | float x; | ||
float y; | float y; | ||
}; | |||
=C2iVector= | |||
A two component int vector. | |||
struct C2iVector | |||
{ | |||
int x; | |||
int y; | |||
}; | }; | ||
=C3Vector= | =C3Vector= | ||
Line 76: | Line 83: | ||
float w; | float w; | ||
}; | }; | ||
=C4iVector= | |||
A four component int vector. | |||
struct C4iVector | |||
{ | |||
int x; | |||
int y; | |||
int z; | |||
int w; | |||
}; | |||
=C33Matrix= | =C33Matrix= | ||
A three by three matrix. | A three by three matrix. | ||
Line 81: | Line 99: | ||
{ | { | ||
{{Template:Type|C3Vector}} columns[3]; | {{Template:Type|C3Vector}} columns[3]; | ||
}; | |||
=C34Matrix= | |||
A three by four matrix. | |||
struct C34Matrix // todo: row or column? | |||
{ | |||
{{Template:Type|C3Vector}} columns[4]; | |||
}; | }; | ||
=C44Matrix= | =C44Matrix= | ||
Line 109: | Line 133: | ||
=CRange= | =CRange= | ||
A one dimensional range defined by the bounds. | A one dimensional float range defined by the bounds. | ||
struct Range | struct Range | ||
{ | { | ||
float min; | float min; | ||
float max; | float max; | ||
}; | |||
=CiRange= | |||
A one dimensional int range defined by the bounds. | |||
struct Range | |||
{ | |||
int min; | |||
int max; | |||
}; | }; | ||
=CAaBox= | =CAaBox= | ||
Line 158: | Line 189: | ||
int16_t z; | int16_t z; | ||
}; | }; | ||
=C3Segment= | |||
struct C3Segment | |||
{ | |||
C3Vector start; | |||
C3Vector end; | |||
}; | |||
=CFacet= | |||
struct CFacet | |||
{ | |||
C4Plane plane; | |||
C3Vector vertices[3]; | |||
}; | |||
=C3Ray= | |||
A ray defined by an origin and direction. | |||
struct C3Ray | |||
{ | |||
C3Vector origin; | |||
C3Vector dir; | |||
}; | |||
=CRect= | |||
struct CRect | |||
{ | |||
float top; | |||
float miny; | |||
float left; | |||
float minx; | |||
float bottom; | |||
float maxy; | |||
float right; | |||
float maxx; | |||
}; | |||
=CiRect= | |||
struct CiRect | |||
{ | |||
int top; | |||
int miny; | |||
int left; | |||
int minx; | |||
int bottom; | |||
int maxy; | |||
int right; | |||
int maxx; | |||
}; | |||
=fixed_point= | =fixed_point= | ||
A fixed point real number, opposed to a floating point. | A fixed point real number, opposed to a floating point. |
Revision as of 22:04, 8 October 2017
This page lists types commonly used in WoW, but not specific to a file format.
foreign_key
A reference into a DBC or DB2 database file. E.g.
foreign_keyⁱ<uint16_t, &LiquidTypeRec::m_spellID> liquid_spell_id; ^ type of reference ^ table referenced ^ variable referenced
stringref
A reference into the string block of a DBC or DB2 database file. See DBC#String_Block.
using stringref = uint32_t;
langstringref
A field for localized strings, consisting of an array of stringrefs followed by a field of flags. The amount of language entries depends on the version, with Cataclysm dropping all but the client's language. See Localization for details.
struct langstringref { #if < stringref enUS; // also enGB stringref koKR; stringref frFR; stringref deDE; stringref enCN; // also zhCN stringref enTW; // also zhTW stringref esES; stringref esMX; //! \todo verify that pre->8 locales hadn't changed #if ≥ (2.?.?.????) // At least in 2.4.3, but probably after 2.0ᵘ stringref ruRU; stringref unknown_9; stringref ptPT; // also ptBR stringref itIT; stringref unknown_12; stringref unknown_13; stringref unknown_14; stringref unknown_15; #endif uint32_t flags; #else stringref client_locale; #endif };
C2Vector
A two component float vector.
struct C2Vector { float x; float y; };
C2iVector
A two component int vector.
struct C2iVector { int x; int y; };
C3Vector
A three component float vector.
struct C3Vector { float x; float y; float z; };
C3iVector
A three component int vector.
struct C3iVector { int x; int y; int z; };
C4Vector
A four component float vector.
struct C4Vector { float x; float y; float z; float w; };
C4iVector
A four component int vector.
struct C4iVector { int x; int y; int z; int w; };
C33Matrix
A three by three matrix.
struct C33Matrix // todo: row or column? { C3Vectorⁱ columns[3]; };
C34Matrix
A three by four matrix.
struct C34Matrix // todo: row or column? { C3Vectorⁱ columns[4]; };
C44Matrix
A four by four matrix.
struct C44Matrix // todo: row or column? { C4Vectorⁱ columns[4]; };
C4Plane
A 3D plane defined by four floats.
struct C4Plane // todo: verify { C3Vectorⁱ normal; float distance; };
Those 4 floats are a, b, c, d variables from General form of the equation of a plane
C4Quaternion
A quaternion.
struct C4Quaternion { float x; float y; float z; float w; // Unlike Quaternions elsewhere, the scalar part ('w') is the last element in the struct instead of the first };
CRange
A one dimensional float range defined by the bounds.
struct Range { float min; float max; };
CiRange
A one dimensional int range defined by the bounds.
struct Range { int min; int max; };
CAaBox
An axis aligned box described by the minimum and maximum point.
struct CAaBox { C3Vectorⁱ min; C3Vectorⁱ max; };
CAaSphere
An axis aligned sphere described by position and radius.
struct CAaSphere { C3Vectorⁱ position; float radius; };
CArgb
A color given in values of red, green, blue and alpha. Either
using CArgb = uint32_t;
or
struct CArgb // todo: verify, add CRgba, ..? { unsigned char r; unsigned char g; unsigned char b; unsigned char a; };
CImVector
A color given in values of blue, green, red and alpha
struct CImVector { unsigned char b; unsigned char g; unsigned char r; unsigned char a; };
C3sVector
A three component vector of shorts.
struct C3sVector { int16_t x; int16_t y; int16_t z; };
C3Segment
struct C3Segment { C3Vector start; C3Vector end; };
CFacet
struct CFacet { C4Plane plane; C3Vector vertices[3]; };
C3Ray
A ray defined by an origin and direction.
struct C3Ray { C3Vector origin; C3Vector dir; };
CRect
struct CRect { float top; float miny; float left; float minx; float bottom; float maxy; float right; float maxx; };
CiRect
struct CiRect { int top; int miny; int left; int minx; int bottom; int maxy; int right; int maxx; };
fixed_point
A fixed point real number, opposed to a floating point.
template<typename Base, size_t integer_bits, size_t decimal_bits> struct fixed_point { Base decimal : decimal_bits; Base integer : integer_bits; Base sign : 1; float to_float() const { return (sign ? -1.0f : 1.0f) * (integer + decimal / float (1 << decimal_bits)); } };
fixed16
A fixed point number without integer part.
using fixed16 = short; // divide by 0x7fff to get float value
or semantically (0 is not a valid bit size in bitfields) equivalent to
using fixed16 = fixed_pointⁱ<uint16_t, 0, 15>;