refactor and cleanup player controller
This commit is contained in:
parent
487ba84517
commit
3cd0261f3b
@ -1,3 +1,3 @@
|
||||
{
|
||||
"hitbox": [0.4, 0.9, 0.4]
|
||||
"hitbox": [0.3, 0.9, 0.3]
|
||||
}
|
||||
|
||||
@ -40,10 +40,11 @@ void LevelController::update(float delta, bool input, bool pause) {
|
||||
}
|
||||
}
|
||||
blocks->update(delta);
|
||||
player->update(delta, input, pause);
|
||||
level->entities->updatePhysics(delta);
|
||||
level->entities->update();
|
||||
}
|
||||
player->update(delta, input, pause);
|
||||
player->postUpdate(delta, input, pause);
|
||||
|
||||
// erease null pointers
|
||||
level->objects.erase(
|
||||
|
||||
@ -239,11 +239,16 @@ void PlayerController::update(float delta, bool input, bool pause) {
|
||||
} else {
|
||||
resetKeyboard();
|
||||
}
|
||||
updatePlayer(delta);
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerController::postUpdate(float delta, bool input, bool pause) {
|
||||
if (!pause) {
|
||||
updateFootsteps(delta);
|
||||
updateCamera(delta, input);
|
||||
updatePlayer(delta);
|
||||
|
||||
}
|
||||
player->postUpdate(this->input, delta);
|
||||
camControl.refresh();
|
||||
if (input) {
|
||||
updateInteraction();
|
||||
|
||||
@ -89,7 +89,7 @@ public:
|
||||
BlocksController* blocksController
|
||||
);
|
||||
void update(float delta, bool input, bool pause);
|
||||
|
||||
void postUpdate(float delta, bool input, bool pause);
|
||||
Player* getPlayer();
|
||||
|
||||
void listenBlockInteraction(const on_block_interaction& callback);
|
||||
|
||||
@ -286,11 +286,10 @@ void scripting::on_entity_spawn(
|
||||
lua::call(L, 1);
|
||||
}
|
||||
if (components.size() > 1) {
|
||||
for (int i = 0; i < components.size()-1; i++) {
|
||||
for (size_t i = 0; i < components.size()-1; i++) {
|
||||
lua::pushvalue(L, -1);
|
||||
}
|
||||
}
|
||||
std::cout << "entity duplicated " << (components.size()-1) << " times" << std::endl;
|
||||
for (auto& component : components) {
|
||||
auto compenv = create_component_environment(get_root_environment(), -1,
|
||||
component->name);
|
||||
|
||||
@ -66,7 +66,6 @@ entityid_t Entities::spawn(
|
||||
dynamic::Map_sptr saved,
|
||||
entityid_t uid)
|
||||
{
|
||||
std::cout << "spawn entity " << def.name << std::endl;
|
||||
auto rig = level->content->getRig(def.rigName);
|
||||
if (rig == nullptr) {
|
||||
throw std::runtime_error("rig "+def.rigName+" not found");
|
||||
@ -109,10 +108,8 @@ entityid_t Entities::spawn(
|
||||
componentName, entity_funcs_set {}, nullptr);
|
||||
scripting.components.emplace_back(std::move(component));
|
||||
}
|
||||
std::cout << "on_entity_spawn" << std::endl;
|
||||
scripting::on_entity_spawn(
|
||||
def, id, scripting.components, std::move(args), std::move(saved));
|
||||
std::cout << "done" << std::endl;
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
@ -96,9 +96,15 @@ void Player::updateInput(PlayerInput& input, float delta) {
|
||||
dir = glm::normalize(dir);
|
||||
hitbox->velocity += dir * speed * delta * 9.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void Player::postUpdate(PlayerInput& input, float delta) {
|
||||
auto hitbox = getHitbox();
|
||||
if (hitbox == nullptr) {
|
||||
return;
|
||||
}
|
||||
position = hitbox->position;
|
||||
|
||||
// physics calculation was here
|
||||
|
||||
if (flight && hitbox->grounded) {
|
||||
flight = false;
|
||||
}
|
||||
@ -272,7 +278,6 @@ void Player::deserialize(dynamic::Map *src) {
|
||||
if (auto invmap = src->map("inventory")) {
|
||||
getInventory()->deserialize(invmap.get());
|
||||
}
|
||||
std::cout << "Player::DESERIALIZE " << eid << std::endl;
|
||||
}
|
||||
|
||||
void Player::convert(dynamic::Map* data, const ContentLUT* lut) {
|
||||
|
||||
@ -65,6 +65,7 @@ public:
|
||||
void teleport(glm::vec3 position);
|
||||
void updateEntity();
|
||||
void updateInput(PlayerInput& input, float delta);
|
||||
void postUpdate(PlayerInput& input, float delta);
|
||||
|
||||
void attemptToFindSpawnpoint();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user