summaryrefslogtreecommitdiff
path: root/Runtime/Animation/AnimationClipSettings.h
blob: c866b9f2a2cf365ee6c976d495069a27acbcdffb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#pragma once

#include "Runtime/Misc/BuildSettings.h"

struct AnimationClipSettings
{
	float	m_StartTime;
	float	m_StopTime;
	float	m_OrientationOffsetY;
	float	m_Level;
	float	m_CycleOffset;

	bool	m_LoopTime;
	bool	m_LoopBlend;
	bool	m_LoopBlendOrientation;
	bool	m_LoopBlendPositionY;
	bool	m_LoopBlendPositionXZ;
	bool	m_KeepOriginalOrientation;
	bool	m_KeepOriginalPositionY;
	bool	m_KeepOriginalPositionXZ;
	bool	m_HeightFromFeet;
	bool	m_Mirror;

	DEFINE_GET_TYPESTRING (MuscleClipInfo)

	AnimationClipSettings()
	{
		m_StartTime = 0;
		m_StopTime = 1;
		m_OrientationOffsetY = 0;
		m_Level = 0;
		m_CycleOffset = 0;

		m_LoopTime = false;
		m_LoopBlend = false;
		m_LoopBlendOrientation = false;
		m_LoopBlendPositionY = false;
		m_LoopBlendPositionXZ = false;
		m_KeepOriginalOrientation = false;
		m_KeepOriginalPositionY = true;
		m_KeepOriginalPositionXZ = false;
		m_HeightFromFeet = false;
		m_Mirror = false;
	}

	template<class TransferFunction>
	void Transfer (TransferFunction& transfer)
	{
		transfer.SetVersion(2);

		TRANSFER(m_StartTime);
		TRANSFER(m_StopTime);
		TRANSFER(m_OrientationOffsetY);
		TRANSFER(m_Level);
		TRANSFER(m_CycleOffset);

		TRANSFER(m_LoopTime);
		TRANSFER(m_LoopBlend);
		
		TRANSFER(m_LoopBlendOrientation);
		TRANSFER(m_LoopBlendPositionY);
		TRANSFER(m_LoopBlendPositionXZ);
		TRANSFER(m_KeepOriginalOrientation);
		TRANSFER(m_KeepOriginalPositionY);
		TRANSFER(m_KeepOriginalPositionXZ);
		TRANSFER(m_HeightFromFeet);
		TRANSFER(m_Mirror);
		transfer.Align();
		
		// Backwards compatibility (4.3 introduced seperate loopTime / loopBlend)
		if (transfer.IsVersionSmallerOrEqual(1))
			m_LoopTime = m_LoopBlend;
	}
};