示例#1
0
        public void _Update(double delta)
        {
            var sound = game.GetService<SoundManager>();
            if (Running)
            {
                var pos = camera.Transform.Position;
                var forward = Vector3.TransformNormal(-Vector3.UnitZ, camera.Transform.Orientation);
                var up = Vector3.TransformNormal(Vector3.UnitY, camera.Transform.Orientation);
                sound.UpdateListener(delta, pos, forward, up);
            }
			currentTime += delta;
            foreach (var obj in sceneObjects.Values) obj.UpdateIfMain();
            if (text != null)
            {
                if (currentTime > text.Start)
                {
                    game.GetService<Interface.Typewriter>().PlayString(gameData.GetString(text.TextIDS));
                    text = null;
                }
            }
            //
            foreach (var instance in instances)
            {
                instance.Update(delta);
            }
            //
            foreach (var obj in sceneObjects.Values) obj.Update();
            camera.Update();
            if(Renderer != null)
			    World.Update(delta);
		}
示例#2
0
        public void _Update(TimeSpan delta)
        {
            var sound = game.GetService <SoundManager>();

            if (Running)
            {
                var pos     = camera.Transform.Position;
                var forward = Vector3.TransformNormal(-Vector3.UnitZ, camera.Transform.Orientation);
                var up      = Vector3.TransformNormal(Vector3.UnitY, camera.Transform.Orientation);
                sound.UpdateListener(delta, pos, forward, up);
            }
            currentTime += delta.TotalSeconds;
            if (text != null)
            {
                if (currentTime > text.Start)
                {
                    game.GetService <Interface.Typewriter>().PlayString(gameData.GetString(text.TextIDS));
                    text = null;
                }
            }

            for (int i = (Coroutines.Count - 1); i >= 0; i--)
            {
                if (!Coroutines[i].Run(this, delta.TotalSeconds))
                {
                    Coroutines.RemoveAt(i);
                    i--;
                }
            }
            while (events.Count > 0 && events.Peek().Time <= currentTime)
            {
                var ev = events.Dequeue();
                ProcessEvent(ev);
            }
            foreach (var obj in Objects.Values)
            {
                obj.Update();
            }
            camera.Update();
            if (Renderer != null)
            {
                World.Update(delta);
            }
        }