package org.codemonkey.papervision3d.util { import org.papervision3d.cameras.Camera3D; import org.papervision3d.objects.DisplayObject3D; /** * Updatable DisplayObject3D with some time management. You can specify the update frequency * in milliseconds and a phase value per second that is scaled accordingly. * * @author Benny Bottema */ public class RealtimeDisplayObject3D extends DisplayObject3D { private var frequency:Number; private var lastUpdate:Number; private var phasePerSecond:Number; public function RealtimeDisplayObject3D(frequency:Number, phasePerSecond:Number) { this.frequency = frequency; this.phasePerSecond = phasePerSecond; lastUpdate = new Date().getTime(); } public function update(camera:Camera3D):void { var currentTime:Number = new Date().getTime(); if ((currentTime - lastUpdate) > frequency) { realtimeUpdate(camera, phasePerSecond / (1000 / frequency)); lastUpdate = currentTime; } } protected function realtimeUpdate(camera:Camera3D, stepsize:Number):void { // abstract } } }