Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
ComponentFrame.cs
浏览该文件的文档.
1using Engine;
4
5namespace Game {
6 public class ComponentFrame : Component {
8
10
12
14
16 get => m_position;
17 set {
18 if (value != m_position) {
19 m_cachedMatrixValid = false;
20 m_position = value;
21 PositionChanged?.Invoke(this);
22 }
23 }
24 }
25
27 get => m_rotation;
28 set {
29 value = Quaternion.Normalize(value);
30 if (value != m_rotation) {
31 m_cachedMatrixValid = false;
32 m_rotation = value;
33 RotationChanged?.Invoke(this);
34 }
35 }
36 }
37
38 public Matrix Matrix {
39 get {
41 m_cachedMatrix = Matrix.CreateFromQuaternion(Rotation);
42 m_cachedMatrix.Translation = Position;
43 }
44 return m_cachedMatrix;
45 }
46 }
47
48 public virtual Action<ComponentFrame> PositionChanged { get; set; }
49 public virtual Action<ComponentFrame> RotationChanged { get; set; }
50
51 public override void Load(ValuesDictionary valuesDictionary, IdToEntityMap idToEntityMap) {
52 Position = valuesDictionary.GetValue<Vector3>("Position").FixNaN();
53 Rotation = valuesDictionary.GetValue<Quaternion>("Rotation").FixNaN();
54 }
55
56 public override void Save(ValuesDictionary valuesDictionary, EntityToIdMap entityToIdMap) {
57 valuesDictionary.SetValue("Position", Position.FixNaN());
58 valuesDictionary.SetValue("Rotation", Rotation.FixNaN());
59 }
60 }
61}
override void Save(ValuesDictionary valuesDictionary, EntityToIdMap entityToIdMap)
virtual Action< ComponentFrame > RotationChanged
virtual Action< ComponentFrame > PositionChanged
override void Load(ValuesDictionary valuesDictionary, IdToEntityMap idToEntityMap)
ValuesDictionary ValuesDictionary
static Quaternion Normalize(Quaternion q)