Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
ComponentIntroShip.cs
浏览该文件的文档.
1using Engine;
4
5namespace Game {
8
10
12
14
16
18
19 public double m_creationTime;
20
21 public float Heading { get; set; }
22
24
25 public virtual void Update(float dt) {
26 float s = 3.5f * MathUtils.Saturate(0.07f * ((float)m_subsystemGameInfo.TotalElapsedGameTime - 6f));
27 Matrix matrix = m_componentFrame.Matrix;
29 vector.X = Heading;
30 vector.Y = 0.05f * MathF.Sin((float)MathUtils.NormalizeAngle(0.77 * m_subsystemTime.GameTime + 1.0));
31 vector.Z = 0.12f * MathF.Sin((float)MathUtils.NormalizeAngle(1.12 * m_subsystemTime.GameTime + 2.0));
32 matrix = Matrix.CreateFromYawPitchRoll(vector.X, vector.Y, vector.Z) * Matrix.CreateTranslation(matrix.Translation);
33 matrix.Translation += s * matrix.Forward * new Vector3(1f, 0f, 1f) * dt;
34 m_componentFrame.Position = matrix.Translation;
35 m_componentFrame.Rotation = Quaternion.CreateFromRotationMatrix(matrix);
36 m_componentModel.SetBoneTransform(m_componentModel.Model.RootBone.Index, matrix);
37 if (m_subsystemTime.GameTime - m_creationTime > 10.0
38 && m_subsystemViews.CalculateDistanceFromNearestView(matrix.Translation) > m_subsystemSky.VisibilityRange + 30f) {
39 Project.RemoveEntity(Entity, true);
40 }
41 }
42
43 public override void Load(ValuesDictionary valuesDictionary, IdToEntityMap idToEntityMap) {
44 m_subsystemTime = Project.FindSubsystem<SubsystemTime>(true);
45 m_subsystemViews = Project.FindSubsystem<SubsystemGameWidgets>(true);
46 m_subsystemGameInfo = Project.FindSubsystem<SubsystemGameInfo>(true);
47 m_subsystemSky = Project.FindSubsystem<SubsystemSky>(true);
48 m_componentFrame = Entity.FindComponent<ComponentFrame>(true);
49 m_componentModel = Entity.FindComponent<ComponentModel>(true);
51 Heading = valuesDictionary.GetValue<float>("Heading");
52 }
53
54 public override void Save(ValuesDictionary valuesDictionary, EntityToIdMap entityToIdMap) {
55 valuesDictionary.SetValue("Heading", Heading);
56 }
57 }
58}
Engine.Vector3 Vector3
static float NormalizeAngle(float angle)
static float Saturate(float x)
SubsystemGameWidgets m_subsystemViews
override void Load(ValuesDictionary valuesDictionary, IdToEntityMap idToEntityMap)
override void Save(ValuesDictionary valuesDictionary, EntityToIdMap entityToIdMap)
virtual void Update(float dt)
ValuesDictionary ValuesDictionary
static Matrix CreateTranslation(float x, float y, float z)
static Matrix CreateFromYawPitchRoll(float yaw, float pitch, float roll)
Vector3 Translation
static Quaternion CreateFromRotationMatrix(Matrix m)