#pragma once
#include "EntityState.h"
extern const int ES_STATENAME_GRAVITY;
extern const int ES_STATENAME_FLY;
//通用重力组件
class EntityStateGravity :
    public EntityState
{
public:
    EntityStateGravity();
    void State() override;
    void ChangeStateMsg(int stateID) override;
    void SetPhysice(bool bInWater) override;
    void SetGravityScale(float scale);
    void SetGravity(float gravity);
    float GetGravityDefault();
    float GetMaxFallSpeed();
private:
    //物理信息
    //地面
    float ground_gravity_default = 0x48 / ts;//地面重力
    float ground_max_fall_speed = 0x4ff / ts;//地面最大的下坠速度
    //水中
    float inwater_gravity_default = ground_gravity_default / 2;//水中重力
    float inwater_max_fall_speed = ground_max_fall_speed / 2;//水中最大下坠速度
    //使用中的物理信息
    float gravity_default;//当前默认重力
    float max_fall_speed;//当前最大下落速度
    float gravity;//当前重力
    //重力比例
    float gravity_scale = 1.0f;//重力比例
};

