public void DropOrUpdateItem(Items.ID Type, Vector3 Position, Vector3 BaseMomentum, string Name) //Performs the actual drop { if (EntitiesRoot.HasNode(Name)) { DroppedItem Instance = EntitiesRoot.GetNode <DroppedItem>(Name); Instance.Translation = Position; Instance.Momentum = BaseMomentum; Instance.PhysicsEnabled = true; } else { Vector3 LevelPlayerPos = new Vector3(Game.PossessedPlayer.Translation.x, 0, Game.PossessedPlayer.Translation.z); if (GetChunkPos(Position).DistanceTo(LevelPlayerPos) <= Game.ChunkRenderDistance * (PlatformSize * 9)) { DroppedItem ToDrop = DroppedItemScene.Instance() as DroppedItem; ToDrop.Translation = Position; ToDrop.Momentum = BaseMomentum; ToDrop.Type = Type; ToDrop.Name = Name; ToDrop.GetNode <MeshInstance>("MeshInstance").Mesh = Items.Meshes[Type]; AddItemToChunk(ToDrop); ItemList.Add(ToDrop); EntitiesRoot.AddChild(ToDrop); } } }