Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
RandomJumpCamera.cs
浏览该文件的文档.
1using Engine;
2
3namespace Game {
5 public const float frequencyFactor = 0.5f;
6
7 public Random m_random = new();
8
9 public float m_frequency = 0.5f;
10
11 public override bool UsesMovementControls => false;
12
13 public override bool IsEntityControlEnabled => false;
14
15 public RandomJumpCamera(GameWidget gameWidget) : base(gameWidget) { }
16
17 public override void Activate(Camera previousCamera) {
18 SetupPerspectiveCamera(previousCamera.ViewPosition, previousCamera.ViewDirection, previousCamera.ViewUp);
19 }
20
21 public override void Update(float dt) {
22 if (m_random.Float(0f, 1f) < 0.1f * dt) {
23 m_frequency = m_random.Float(0.33f, 5f) * 0.5f;
24 }
25 if (m_random.Float(0f, 1f) < m_frequency * dt) {
26 SubsystemPlayers subsystemPlayers = GameWidget.SubsystemGameWidgets.Project.FindSubsystem<SubsystemPlayers>(true);
27 if (subsystemPlayers.PlayersData.Count > 0) {
28 Vector3 spawnPosition = subsystemPlayers.PlayersData[0].SpawnPosition;
29 spawnPosition.X += m_random.Float(-150f, 150f);
30 spawnPosition.Y = m_random.Float(70f, 120f);
31 spawnPosition.Z += m_random.Float(-150f, 150f);
32 Vector3 direction = m_random.Vector3(1f);
33 SetupPerspectiveCamera(spawnPosition, direction, Vector3.UnitY);
34 }
35 }
36 if (m_random.Float(0f, 1f) < 0.5f * m_frequency * dt) {
37 GameWidget.SubsystemGameWidgets.Project.FindSubsystem<SubsystemTimeOfDay>(true).TimeOfDayOffset = m_random.Float(0f, 1f);
38 }
39 if (m_random.Float(0f, 1f) < 1f * dt * 0.5f) {
40 GameManager.SaveProject(false, false);
41 }
42 }
43 }
44}
BasePerspectiveCamera(GameWidget gameWidget)
void SetupPerspectiveCamera(Vector3 position, Vector3 direction, Vector3 up)
Vector3 ViewPosition
GameWidget GameWidget
Vector3 ViewUp
Vector3 ViewDirection
static void SaveProject(bool waitForCompletion, bool showErrorDialog)
RandomJumpCamera(GameWidget gameWidget)
override void Activate(Camera previousCamera)
override void Update(float dt)
ReadOnlyList< PlayerData > PlayersData
static readonly Vector3 UnitY