Exemple #1
0
        private void LoadLevel(string level)
        {
            _loadingEntity = _registry.CreateAbstractEntity();
            var component = new LoadingScreenComponent();

            component.Texture    = Texture.LoadTextureUnsafe(_loadingScreen);
            component.Transform *= Matrix4.CreateScale(1f, 1f, 1);
            component.Transform *= Matrix4.CreateFromAxisAngle(new Vector3(1), 0);
            component.Transform *= Matrix4.CreateTranslation(Application.Width * 3f / 10f, -Application.Height * 3f / 10f, 0);
            _ = _registry.AddSingletonComponent(_loadingEntity, component);
            _registry.AddSystem <LoadingScreenSystem>(World.System.UpdateFlags.Update | World.System.UpdateFlags.Render);

            _loadingScreenCamera = _registry.CreateAbstractEntity();
            _ = _registry.AddSingletonComponent(_loadingScreenCamera, new OrthoCameraComponent(_registry.CachedTransform != Matrix4.Identity ? _registry.CachedTransform : Matrix4.Identity));

            _loadingTask = Scene.LoadSceneAsync(level);

            _registry.ActivateSystems();
        }