Exemple #1
0
        public override void Load()
        {
            CollisionManager.Instance().WallCollideReset();

            entityManager = EntityManager.Instance();
            systemManager = SystemManager.Instance();
            inputManager  = InputManager.Instance();

            audioManager = AudioManager.Instance();
            audioManager.AddAudio("Death", "Audio/WilhelmScream.wav", false);
            audioManager.AddAudio("Collect", "Audio/CollectCoin.wav", false);
            audioManager.AddAudio("Powerup", "Audio/ElevatorMusic.wav", true);
            audioManager.AddAudio("KillGhost", "Audio/ko.wav", false);

            coinsCollected = 0;

            // Set the title of the window
            sceneManager.Title = "Game";
            // Set the Render and Update delegates to the Update and Render methods of this class
            sceneManager.renderer = Render;
            sceneManager.updater  = Update;
            // Set Keyboard events to go to a method in this class
            sceneManager.Keyboard.KeyDown += Keyboard_KeyDown;

            GL.ClearColor(0.0f, 0.0f, 0.0f, 1.0f);

            map = new MapLoader();
            map.LoadMap("Maps/Level1.txt");

            mapCamera    = new MiniMapCamera(map.GetWidth(), map.GetHeight(), sceneManager.Width, sceneManager.Height);
            entityCamera = new EntityCamera(sceneManager.Width, sceneManager.Height);

            mapCamera.Position  = new Vector3(0, 0, 0);
            mapCamera.Direction = new Vector3(0, -1, 0);
            mapCamera.Up        = new Vector3(0, 0, -1);

            CollisionManager.Instance().SetMap(map);
            CollisionManager.Instance().SetLevel(this);
            Entity player = map.GetPlayer();

            entityCamera.SetEntity(player);
            audioManager.SetCamera(entityCamera);

            CreateSystems();

            CubeMapTexture cubeMap = ResourceManager.LoadCubeMap("Textures/darkskies_up.png", "Textures/darkskies_dn.png", "Textures/darkskies_lf.png",
                                                                 "Textures/darkskies_rt.png", "Textures/darkskies_ft.png", "Textures/darkskies_bk.png");

            Shader   shader   = ResourceManager.LoadShader("Shaders/cubemapVS.glsl", "Shaders/cubemapFS.glsl");
            Geometry geometry = ResourceManager.LoadGeometry("Geometry/SkyBox.obj");

            cubemapRender = new CubeMapRender(entityCamera, cubeMap, shader, geometry);
            customRender  = new MiniMapRender(entityCamera, mapCamera);
        }
Exemple #2
0
    public void InitializeController()
    {
        EntityMovement[] movementControllers = GetComponentsInChildren <EntityMovement>();

        for (int i = 0; i < movementControllers.Length; i++)
        {
            movement.Add(movementControllers[i]);
        }

        entityCamera = Camera.main.GetComponent <EntityCamera>();

        trailRenderers = GetComponentsInChildren <TrailRenderer>();
    }
        /// <summary>
        /// PERFORM GATHER
        /// </summary>
        /// <param name="camera"></param>
        /// <returns></returns>
        public GatherResult PerformGather(EntityCamera camera)
        {
            var task = Task.Run(() =>
            {
                Thread.Sleep(camera.DemoWaitMs);
            });
            bool isCompletedSuccessfully = task.Wait(TimeSpan.FromMilliseconds(camera.GatherTimeoutMs));

            if (isCompletedSuccessfully)
            {
                //return task.Result;
                return(new GatherResult {
                    RawImageName = camera.Name, Camera = camera, ThreadNumber = Thread.CurrentThread.ManagedThreadId
                });
            }
            else
            {
                throw new TimeoutException("PerformGather Timeout: " + camera.Name + " (thread " + Thread.CurrentThread.ManagedThreadId.ToString() + ")");
            }
        }
Exemple #4
0
        public World(IServiceProvider serviceProvider, GraphicsDevice graphics, AlexOptions options,
                     NetworkProvider networkProvider)
        {
            Graphics = graphics;
            Options  = options;

            PhysicsEngine = new PhysicsManager(this);
            ChunkManager  = new ChunkManager(serviceProvider, graphics, this);
            EntityManager = new EntityManager(graphics, this, networkProvider);
            Ticker        = new TickManager();
            PlayerList    = new PlayerList();

            Ticker.RegisterTicked(this);
            Ticker.RegisterTicked(EntityManager);
            //Ticker.RegisterTicked(PhysicsEngine);
            Ticker.RegisterTicked(ChunkManager);

            ChunkManager.Start();
            var profileService = serviceProvider.GetRequiredService <IPlayerProfileService>();
            var resources      = serviceProvider.GetRequiredService <ResourceManager>();

            EventDispatcher = serviceProvider.GetRequiredService <IEventDispatcher>();

            string          username = string.Empty;
            PooledTexture2D texture;

            if (Alex.PlayerTexture != null)
            {
                texture = TextureUtils.BitmapToTexture2D(graphics, Alex.PlayerTexture);
            }
            else
            {
                resources.ResourcePack.TryGetBitmap("entity/alex", out var rawTexture);
                texture = TextureUtils.BitmapToTexture2D(graphics, rawTexture);
            }

            Skin skin = profileService?.CurrentProfile?.Skin;

            if (skin == null)
            {
                skin = new Skin()
                {
                    Texture = texture,
                    Slim    = true
                };
            }

            if (!string.IsNullOrWhiteSpace(profileService?.CurrentProfile?.Username))
            {
                username = profileService.CurrentProfile.Username;
            }

            Player = new Player(graphics, serviceProvider.GetRequiredService <Alex>().InputManager, username, this, skin, networkProvider, PlayerIndex.One);
            Camera = new EntityCamera(Player);

            if (Alex.PlayerModel != null)
            {
                EntityModelRenderer modelRenderer = new EntityModelRenderer(Alex.PlayerModel, texture);

                if (modelRenderer.Valid)
                {
                    Player.ModelRenderer = modelRenderer;
                }
            }

            Player.KnownPosition = new PlayerLocation(GetSpawnPoint());

            Options.FieldOfVision.ValueChanged += FieldOfVisionOnValueChanged;
            Camera.FOV = Options.FieldOfVision.Value;

            PhysicsEngine.AddTickable(Player);

            EventDispatcher.RegisterEvents(this);

            var guiManager = serviceProvider.GetRequiredService <GuiManager>();

            InventoryManager = new InventoryManager(guiManager);

            SkyRenderer = new SkyBox(serviceProvider, graphics, this);

            options.VideoOptions.RenderDistance.Bind(
                (old, newValue) =>
            {
                Camera.SetRenderDistance(newValue);
            });
            Camera.SetRenderDistance(options.VideoOptions.RenderDistance);
        }
Exemple #5
0
        public World(IServiceProvider serviceProvider, GraphicsDevice graphics, AlexOptions options,
                     NetworkProvider networkProvider)
        {
            Graphics = graphics;
            Options  = options;

            PhysicsEngine = new PhysicsManager(this);
            ChunkManager  = new ChunkManager(serviceProvider, graphics, this);
            EntityManager = new EntityManager(graphics, this, networkProvider);
            Ticker        = new TickManager();
            PlayerList    = new PlayerList();

            ChunkManager.Start();
            //	var alex = serviceProvider.GetRequiredService<Alex>();
            var settings       = serviceProvider.GetRequiredService <IOptionsProvider>();
            var profileService = serviceProvider.GetRequiredService <IPlayerProfileService>();
            var resources      = serviceProvider.GetRequiredService <ResourceManager>();

            EventDispatcher = serviceProvider.GetRequiredService <IEventDispatcher>();

            string          username = string.Empty;
            PooledTexture2D texture;

            if (Alex.PlayerTexture != null)
            {
                texture = TextureUtils.BitmapToTexture2D(graphics, Alex.PlayerTexture);
            }
            else
            {
                resources.ResourcePack.TryGetBitmap("entity/alex", out var rawTexture);
                texture = TextureUtils.BitmapToTexture2D(graphics, rawTexture);
            }

            Skin skin = profileService?.CurrentProfile?.Skin;

            if (skin == null)
            {
                skin = new Skin()
                {
                    Texture = texture,
                    Slim    = true
                };
            }

            if (!string.IsNullOrWhiteSpace(profileService?.CurrentProfile?.Username))
            {
                username = profileService.CurrentProfile.Username;
            }

            Player = new Player(graphics, serviceProvider.GetRequiredService <Alex>().InputManager, username, this, skin, networkProvider, PlayerIndex.One);
            Camera = new EntityCamera(Player);

            if (Alex.PlayerModel != null)
            {
                EntityModelRenderer modelRenderer = new EntityModelRenderer(Alex.PlayerModel, texture);

                if (modelRenderer.Valid)
                {
                    Player.ModelRenderer = modelRenderer;
                }
            }

            Player.KnownPosition = new PlayerLocation(GetSpawnPoint());
            Camera.MoveTo(Player.KnownPosition, Vector3.Zero);

            Options.FieldOfVision.ValueChanged += FieldOfVisionOnValueChanged;
            Camera.FOV = Options.FieldOfVision.Value;

            PhysicsEngine.AddTickable(Player);

            /*if (networkProvider is BedrockClient)
             * {
             *      Player.SetInventory(new BedrockInventory(46));
             * }
             * else
             * {
             *      Player.SetInventory(new Utils.Inventory(46));
             * }*/
            //	Player.Inventory.IsPeInventory = true;

            /*if (ItemFactory.TryGetItem("minecraft:diamond_sword", out var sword))
             * {
             *      Player.Inventory[Player.Inventory.SelectedSlot] = sword;
             *      Player.Inventory.MainHand = sword;
             * }
             * else
             * {
             *      Log.Warn($"Could not get diamond sword!");
             * }*/

            EventDispatcher.RegisterEvents(this);

            var guiManager = serviceProvider.GetRequiredService <GuiManager>();

            InventoryManager = new InventoryManager(guiManager);

            SkyRenderer = new SkyBox(serviceProvider, graphics, this);
            //SkyLightCalculations = new SkyLightCalculations();

            UseDepthMap = options.VideoOptions.Depthmap;
            options.VideoOptions.Depthmap.Bind((old, newValue) => { UseDepthMap = newValue; });

            options.VideoOptions.RenderDistance.Bind(
                (old, newValue) =>
            {
                Camera.SetRenderDistance(newValue);
            });
            Camera.SetRenderDistance(options.VideoOptions.RenderDistance);
            //ServerType = (networkProvider is BedrockClient) ? ServerType.Bedrock : ServerType.Java;
        }