diff --git a/resources/Schema/Entities/Player.xml b/resources/Schema/Entities/Player.xml
index 4ac1d205..8d6b16a4 100644
--- a/resources/Schema/Entities/Player.xml
+++ b/resources/Schema/Entities/Player.xml
@@ -8,9 +8,7 @@
-
- false
-
+
5
@@ -20,7 +18,7 @@
-
+
@@ -31,7 +29,6 @@
-
diff --git a/src/Engine/Core/World.cpp b/src/Engine/Core/World.cpp
index 97e3ba9f..0c4c9ce4 100644
--- a/src/Engine/Core/World.cpp
+++ b/src/Engine/Core/World.cpp
@@ -137,6 +137,11 @@ EntityID World::generateEntityID()
void World::deleteEntityRecursive(EntityID entity, bool cascaded /*= false*/)
{
+ // Don't attempt to delete entities that don't exist anyway
+ if (!ValidEntity(entity)) {
+ return;
+ }
+
if (m_EventBroker != nullptr) {
Events::EntityDeleted e;
e.DeletedEntity = entity;
diff --git a/src/Game/Systems/InterpolationSystem.cpp b/src/Game/Systems/InterpolationSystem.cpp
index 2b6e82f2..bfb6952a 100644
--- a/src/Game/Systems/InterpolationSystem.cpp
+++ b/src/Game/Systems/InterpolationSystem.cpp
@@ -12,6 +12,11 @@ InterpolationSystem::InterpolationSystem(World* world, EventBroker* eventBroker)
void InterpolationSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& transform, double dt)
{
+ // Don't interpolate entities that might already have been removed
+ if (!entity.Valid()) {
+ return;
+ }
+
if (m_NextTransform.find(transform.EntityID) != m_NextTransform.end()) { // Exists in map
m_NextTransform[transform.EntityID].interpolationTime += dt;
Transform sTransform = m_NextTransform[transform.EntityID];
@@ -31,11 +36,10 @@ void InterpolationSystem::UpdateComponent(EntityWrapper& entity, ComponentWrappe
// Position
glm::vec3 nextPosition = sTransform.Position;
glm::vec3 currentPosition = static_cast(transform["Position"]);
- // HACK: Hardcoded tolerance value for player position desync = 1
- if (isLocalPlayer && glm::length(nextPosition - currentPosition) < 1.f) {
- return;
+ // HACK: Don't force position for players
+ if (!isLocalPlayer) {
+ (glm::vec3&)transform["Position"] += vectorInterpolation(currentPosition, nextPosition, sTransform.interpolationTime);
}
- (glm::vec3&)transform["Position"] += vectorInterpolation(currentPosition, nextPosition, sTransform.interpolationTime);
// Orientation
// Don't force orientation for players
if (!isLocalPlayer) {