Skip to content

MORE::Animation

MORE::Animation structure

Name Type Condition
name BasicString version < 0xF
duration float32
isDelta bool version >= 0xC
tracks Array<Track>
instants Array<Instant> version >= 0x9

Track structure

Name Type Condition Description
type uint32 Never observed to be type >= 0x0D.
name BasicString
data TrackSimple<uint16, uint16, TimeF16> type == 0x00
data TrackSimple<float32, float32, float32> type == 0x01
data TrackSimple<Vector3, Vector3, float32> type == 0x02
data TrackSimple<Quaternion, Quaternion, float32> type == 0x03
data TrackLinear<float32, float32, float32> type == 0x04
data TrackLinear<Vector3, Vector3, float32> type == 0x05
data TrackLinear<Quaternion, Quaternion, float32> type == 0x06
data TrackBezier<float32, float32, float32> type == 0x07
data TrackBezier<Vector3, Vector3, float32> type == 0x08
data TrackBezier<Quaternion, Quaternion, float32> type == 0x09
data TrackTCB<float32> type == 0x0A
data TrackTCB<Vector3> type == 0x0B
data TrackTCB<Quaternion> type == 0x0C
data TrackDisplacement type == 0x0D
data TrackEvent type == 0x0E
data TrackUser<uint16> type == 0x0F
data TrackUser<float32> type == 0x10
data TrackUser<Vector3> type == 0x11
data TrackUser<Quaternion> type == 0x12
data TrackSimple<Quaternion, CompressedQuaternionU32, float32> type == 0x13
data TrackLinear<Quaternion, CompressedQuaternionU32, float32> type == 0x14
data TrackBezier<Quaternion, CompressedQuaternionU32, float32> type == 0x15
data TrackSimple<Quaternion, CompressedQuaternion3U16, TimeF16> type == 0x18
data TrackLinear<Quaternion, CompressedQuaternion3U16, TimeF16> type == 0x19
data TrackBezier<Quaternion, CompressedQuaternion3U16, TimeF16> type == 0x1A
data TrackSimple<Vector3, EulerAngleRad, TimeF16> type == 0x1D
data TrackLinear<Vector3, EulerAngleRad, TimeF16> type == 0x1E
data TrackBezier<Vector3, EulerAngleRad, TimeF16> type == 0x1F

Note

If type is not any of the values listed above, Revelation will crash.

TimeF16 type

  • Type: uint16

Compression/decompression:

uint16 TimeF16::Compress(float32 src) {
    return (uint16)((*src + 300.0) * (1.0/600.0) * 65534.0);
}

float32 TimeF16::Decompress(uint16 src) {
    return (float32)src * (1.0/65534.0) * 600.0 - 300.0;
}

EulerAngleRad type

  • Type: uint16

Compression/decompression:

uint16 EulerAngleRad::Compress(float32 src) {
    return (uint16)((src + M_PI*10) * (M_PI*20) * 65534.0);
}

float32 EulerAngleRad::Decompress(uint16 src) {
    return (float32)src * (1.0/65534.0) * (1.0/(M_PI*20) - M_PI*10);
}

TrackSimple<Value, ValueComp, Time> structure

Name Type Description
terminate bool Revelation's code appears to ignore this field. Never observed to be anything other than true.
keys Array<KeySimple<Value, ValueComp, Time>>
KeySimple<Value, ValueComp, Time> structure
Name Type Condition
time float32 version < 0x10
time Time version >= 0x10
value ValueComp

TrackLinear<Value, ValueComp, Time> structure

Name Type Description
terminate bool Revelation's code appears to ignore this field. Never observed to be anything other than true.
keys Array<KeyLinear<Value, ValueComp, Time>>
KeyLinear<Value, ValueComp, Time> structure
Name Type
time Time
value ValueComp

TrackBezier<Value, ValueComp, Time> structure

Name Type Description
terminate bool Revelation's code appears to ignore this field. Never observed to be anything other than true.
keys Array<KeyBezier<Value, ValueComp, Time>>
KeyBezier<Value, ValueComp, Time> structure
Name Type Condition Description
time Time
value ValueComp
derSrc Value version < 0x11
derDst Value version < 0x11 Ignored if Value == Quaternion.
derSrc ValueComp version >= 0x11
derDst ValueComp version >= 0x11 && Value != Quaternion
flatOut bool

TrackTCB<Value> structure

Name Type Description
terminate bool Revelation's code appears to ignore this field. Never observed to be anything other than true.
keys Array<KeyTCB<Value>>
KeyTCB<Value> structure
Name Type Condition
time float32
value Value
tens float32
cont float32
bias float32
easeTo float32
easeFrom float32
derSrc Value
derDst Value
angle float32 Value == Quaternion
axis Vector3 Value == Quaternion

TrackDisplacement structure

Name Type
position Track
rotation Track

TrackEvent structure

Name Type
keys Array<KeyEvent>
KeyEvent structure
Name Type Condition
time float32
value uint32
userData BasicString version >= 0x2

TrackUser<Value> structure

Name Type Description
terminate bool Revelation's code appears to ignore this field.

Instant structure

Name Type
time float32
id uint16