Tick entities on Level, show correct timing reports

This commit is contained in:
Shoghi Cervantes 2014-09-01 01:56:13 +02:00
parent 9b7a94b5ee
commit 705e4da789
4 changed files with 29 additions and 26 deletions

View File

@ -1950,32 +1950,6 @@ class Server{
private function checkTickUpdates($currentTick){
//TODO: move this to each Level
//Update entities that need update
if(count(Entity::$needUpdate) > 0){
Timings::$tickEntityTimer->startTiming();
foreach(Entity::$needUpdate as $id => $entity){
if($entity->onUpdate() === false){
unset(Entity::$needUpdate[$id]);
}
}
Timings::$tickEntityTimer->stopTiming();
}
//Update tiles that need update
if(count(Tile::$needUpdate) > 0){
Timings::$tickTileEntityTimer->startTiming();
foreach(Tile::$needUpdate as $id => $tile){
if($tile->onUpdate() === false){
unset(Tile::$needUpdate[$id]);
}
}
Timings::$tickTileEntityTimer->stopTiming();
}
//TODO: Add level blocks
//Do level ticks
foreach($this->getLevels() as $level){
$level->doTick($currentTick);

View File

@ -584,6 +584,7 @@ abstract class Entity extends Position implements Metadatable{
}
public final function scheduleUpdate(){
//TODO!
Entity::$needUpdate[$this->id] = $this;
}

View File

@ -56,6 +56,7 @@ use pocketmine\event\level\LevelUnloadEvent;
use pocketmine\event\level\SpawnChangeEvent;
use pocketmine\event\LevelTimings;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\event\Timings;
use pocketmine\inventory\InventoryHolder;
use pocketmine\item\Item;
use pocketmine\level\format\Chunk;
@ -502,6 +503,32 @@ class Level implements ChunkManager, Metadatable{
}
$this->timings->doTickPending->stopTiming();
$this->timings->entityTick->startTiming();
//Update entities that need update
if(count(Entity::$needUpdate) > 0){
//Timings::$tickEntityTimer->startTiming();
foreach($this->entities as $id => $entity){
if($entity->onUpdate() === false){
//unset(Entity::$needUpdate[$id]);
}
}
//Timings::$tickEntityTimer->stopTiming();
}
$this->timings->entityTick->stopTiming();
$this->timings->tileEntityTick->startTiming();
//Update tiles that need update
if(count(Tile::$needUpdate) > 0){
//Timings::$tickTileEntityTimer->startTiming();
foreach($this->tiles as $id => $tile){
if($tile->onUpdate() === false){
//unset(Tile::$needUpdate[$id]);
}
}
//Timings::$tickTileEntityTimer->stopTiming();
}
$this->timings->tileEntityTick->stopTiming();
$this->timings->doTickTiles->startTiming();
$this->tickChunks();
$this->timings->doTickTiles->stopTiming();

View File

@ -100,6 +100,7 @@ abstract class Tile extends Position{
}
public final function scheduleUpdate(){
//TODO!
Tile::$needUpdate[$this->id] = $this;
}