Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
FlyCamera.cs
浏览该文件的文档.
1using Engine;
2using Engine.Input;
3
4namespace Game {
7
9
11
12 public float m_rollSpeed;
13
14 public float m_pitchSpeed;
15
16 public float m_rollAngle;
17
18 public override bool UsesMovementControls => true;
19
20 public override bool IsEntityControlEnabled => false;
21
22 public FlyCamera(GameWidget gameWidget) : base(gameWidget) { }
23
24 public override void Activate(Camera previousCamera) {
25 m_position = previousCamera.ViewPosition;
26 m_direction = previousCamera.ViewDirection;
28 }
29
30 public override void Update(float dt) {
31 Vector3 vector = Vector3.Zero;
32 Vector2 vector2 = Vector2.Zero;
33 ComponentInput componentInput = GameWidget.PlayerData.ComponentPlayer?.ComponentInput;
34 if (componentInput != null) {
35 vector = componentInput.PlayerInput.CameraMove * new Vector3(1f, 0f, 1f);
36 vector2 = componentInput.PlayerInput.CameraLook;
37 }
38 bool num = Keyboard.IsKeyDown(Key.Shift);
39 bool flag = Keyboard.IsKeyDown(Key.Control);
40 Vector3 direction = m_direction;
41 Vector3 unitY = Vector3.UnitY;
42 Vector3 vector3 = Vector3.Normalize(Vector3.Cross(direction, unitY));
43 float num2 = 10f;
44 if (num) {
45 num2 *= 5f;
46 }
47 if (flag) {
48 num2 /= 5f;
49 }
50 Vector3 zero = Vector3.Zero;
51 zero += num2 * vector.X * vector3;
52 zero += num2 * vector.Y * unitY;
53 zero += num2 * vector.Z * direction;
54 m_rollSpeed = MathUtils.Lerp(m_rollSpeed, -1.5f * vector2.X, 3f * dt);
56 m_rollAngle *= MathF.Pow(0.33f, dt);
57 m_pitchSpeed = MathUtils.Lerp(m_pitchSpeed, -0.2f * vector2.Y, 3f * dt);
58 m_pitchSpeed *= MathF.Pow(0.33f, dt);
59 m_velocity += 1.5f * (zero - m_velocity) * dt;
60 m_position += m_velocity * dt;
65 }
66 }
67}
Engine.Vector3 Vector3
static bool IsKeyDown(Key key)
static float Lerp(float x1, float x2, float f)
BasePerspectiveCamera(GameWidget gameWidget)
void SetupPerspectiveCamera(Vector3 position, Vector3 direction, Vector3 up)
Vector3 ViewPosition
GameWidget GameWidget
Vector3 ViewDirection
override void Activate(Camera previousCamera)
FlyCamera(GameWidget gameWidget)
override bool IsEntityControlEnabled
override void Update(float dt)
override bool UsesMovementControls
static Matrix CreateFromAxisAngle(Vector3 axis, float angle)
static readonly Vector2 Zero
static Vector3 TransformNormal(Vector3 v, Matrix m)
static Vector3 Transform(Vector3 v, Matrix m)
static Vector3 Cross(Vector3 v1, Vector3 v2)
static Vector3 Normalize(Vector3 v)
static readonly Vector3 Zero
static readonly Vector3 UnitY