From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Components/ActionStates/XFallComponent.cs | 109 +++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/Components/ActionStates/XFallComponent.cs (limited to 'Client/Assets/Scripts/XMainClient/Components/ActionStates/XFallComponent.cs') diff --git a/Client/Assets/Scripts/XMainClient/Components/ActionStates/XFallComponent.cs b/Client/Assets/Scripts/XMainClient/Components/ActionStates/XFallComponent.cs new file mode 100644 index 00000000..18c13f3c --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/Components/ActionStates/XFallComponent.cs @@ -0,0 +1,109 @@ +using System; +using UnityEngine; +using XUtliPoolLib; + +namespace XMainClient +{ + internal sealed class XFallComponent : XActionStateComponent + { + public override uint ID + { + get + { + return XFallComponent.uuID; + } + } + + public override bool IsUsingCurve + { + get + { + return false; + } + } + + public override bool ShouldBePresent + { + get + { + bool isDead = this._entity.IsDead; + return !isDead && base.ShouldBePresent; + } + } + + public override string PresentCommand + { + get + { + return "ToFall"; + } + } + + public override string PresentName + { + get + { + return "Fall"; + } + } + + public new static readonly uint uuID = XSingleton.singleton.XHash("Basic_Fall"); + + private float _hvelocity = 0f; + + private float _gravity = -9.8f; + + private float _elapsed = 0f; + + protected override void EventSubscribe() + { + base.RegisterEvent(XEventDefine.XEvent_Fall, new XComponent.XEventHandler(base.OnActionEvent)); + } + + public override void OnAttachToHost(XObject host) + { + base.OnAttachToHost(host); + this._selfState = XStateDefine.XState_Fall; + } + + protected override void Cancel(XStateDefine next) + { + } + + protected override bool OnGetEvent(XFallEventArgs e, XStateDefine last) + { + this._hvelocity = e.HVelocity; + this._gravity = e.Gravity; + return true; + } + + protected override void Begin() + { + this._elapsed = 0f; + } + + protected override void ActionUpdate(float deltaTime) + { + bool flag = !this._entity.StandOn; + if (flag) + { + Vector3 vector = Vector3.zero; + this._elapsed += deltaTime; + this._hvelocity += (0f - this._hvelocity) * Mathf.Min(1f, deltaTime * 4f); + float num = this._gravity * this._elapsed; + vector.y += num * deltaTime; + Vector3 vector2 = XSingleton.singleton.Horizontal(this._entity.EngineObject.Forward); + vector += deltaTime * this._hvelocity * vector2; + this._entity.ApplyMove(vector); + } + else + { + base.Finish(); + } + } + + public override void OnRejected(XStateDefine current) + { + } + } +} -- cgit v1.1-26-g67d0