game2006/server/gameserver/moveableentity.h
aozhiwei cbc551ef39 1
2023-03-27 16:49:12 +08:00

45 lines
1.6 KiB
C++

#pragma once
#include "gridservice.h"
#include "roomentity.h"
class MoveableEntity : public RoomEntity
{
public:
MoveableEntity();
virtual void Update(int delta_time) {};
int UpdatedTimes() { return updated_times_;}
std::set<GridCell*>& GetGridList() { return grid_list_; }
void TraverseCreatures(std::function<void (Creature*, bool&)> func);
void TraverseAllLayerEntityList(std::function<void (Entity*, bool&)> func);
void TraverseAllLayerHumanList(std::function<void (Human*, bool&)> func);
virtual void RefreshView();
virtual void OnGridListChange(std::set<GridCell*>& old_grids,
std::set<GridCell*>& inc_grids,
std::set<GridCell*>& dec_grids
);
virtual void SyncAroundPlayers(const char* file, int line, const char* func);
virtual void UpdateCharImage(const char* file, int line, const char* func);
virtual const glm::vec3& GetMoveDir() { return move_dir_; };
virtual void SetMoveDir(const glm::vec3& move_dir);
virtual const glm::vec3& GetAttackDir() { return attack_dir_; };
virtual void SetAttackDir(const glm::vec3& attack_dir);
virtual const glm::vec3& GetShotDir() { return attack_dir_; };
int GetChgMoveDirTimes() { return chg_move_dir_times_; }
int GetChgAttackDirTimes() { return chg_attack_dir_times_; }
float GetAttackDirRotate();
protected:
int updated_times_ = 0;
private:
glm::vec3 move_dir_ = GlmHelper::ZERO;
glm::vec3 attack_dir_ = GlmHelper::ZERO;
std::set<GridCell*> grid_list_;
int chg_move_dir_times_ = 0;
int chg_attack_dir_times_ = 0;
};