예제 #1
0
        public override void Prepare()
        {
            KWEngine.LoadModelFromFile("ConvexHull", @".\models\convexhull.glb");
            KWEngine.LoadModelFromFile("Paddle", @".\models\paddle.obj");

            FOV = 90;

            SetAmbientLight(1, 1, 1, 0.2f);

            SetCameraPosition(0, 0, 25);
            SetCameraTarget(0, 0, 0);

            SetTextureSkybox(@".\textures\skybox1.dds");
            SetTextureBackgroundBrightnessMultiplier(4);


            LightObject sun = new LightObject(LightType.Sun, false);

            sun.SetPosition(30, 30, 30);
            sun.SetColor(1, 1, 1, 0.8f);
            AddLightObject(sun);

            DebugShowPerformanceInTitle   = PerformanceUnit.FramesPerSecond;
            DebugShowCoordinateSystemGrid = GridType.GridXY;
            //DebugShowHitboxes = true;

            CreateTestScene();
        }
예제 #2
0
        public override void Prepare()
        {
            //KWEngine.BuildTerrainModel("TerrainTest", @".\textures\heightmap256.png", @".\textures\sand_diffuse.dds", 10, 1, 10, 10, 10);
            KWEngine.BuildTerrainModel("TerrainTest", @".\textures\heightmapterraintest2x2.png", @".\textures\sand_diffuse.dds", 15, 5, 15, 10, 10);
            KWEngine.LoadModelFromFile("UBot", @".\models\jumpandrun\ubot.fbx");

            FOV = 90;
            SetAmbientLight(1, 1, 1, 0.25f);
            SetTextureSkybox(@".\textures\skybox_mipmaptest.jpg");
            SetTextureBackgroundBrightnessMultiplier(4);



            Immovable t = new Immovable();

            t.SetModel("TerrainTest");
            t.IsCollisionObject = true;
            t.SetPosition(5, 0, 0);
            //t.SetPositionY(1);
            AddGameObject(t);

            //CreateFreeFloatPlayer();
            CreateUBotPlayer();

            LightObject sun = new LightObject(LightType.Sun, false);

            sun.SetPosition(100, 100, 100);
            sun.SetColor(1, 1, 1, 1);
            AddLightObject(sun);

            DebugShowPerformanceInTitle = PerformanceUnit.FramesPerSecond;

            //DebugShowCoordinateSystemGrid = GridType.GridXZ;
        }
예제 #3
0
        public override void Prepare()
        {
            FOV = 90;
            SetAmbientLight(1, 1, 1, 0.25f);
            SetTextureSkybox(@".\textures\skybox_mipmaptest.jpg");
            SetTextureBackgroundBrightnessMultiplier(4);


            t.SetModel("KWCube");
            t.IsCollisionObject = true;
            t.SetPosition(0, 1, 0);
            t.SetScale(2);
            AddGameObject(t);

            _sphere.SetModel("KWSphere");
            _sphere.SetPosition(0, 0, 0);
            _sphere.SetColor(1, 0, 0);
            AddGameObject(_sphere);

            //CreateFreeFloatPlayer();
            //CreateUBotPlayer();

            LightObject sun = new LightObject(LightType.Sun, false);

            sun.SetPosition(100, 100, 100);
            sun.SetColor(1, 1, 1, 1);
            AddLightObject(sun);

            SetCameraPosition(0, 10, 20);
            SetCameraTarget(0, 0, 0);

            DebugShowCoordinateSystemGrid = GridType.GridXZ;
        }
예제 #4
0
        public override void Prepare()
        {
            FOV = 30;

            SetAmbientLight(1, 1, 1, 0.3f);
            SetCameraPosition(0, 50, 0);
            SetCameraTarget(0, 0, 0);


            LightObject sun = new LightObject(LightType.Sun, true);

            sun.SetPosition(30, 30, 30);
            sun.SetColor(1, 1, 1, 0.75f);
            //DebugShadowLight = sun;
            AddLightObject(sun);

            DebugShowPerformanceInTitle   = PerformanceUnit.FramesPerSecond;
            DebugShowCoordinateSystemGrid = GridType.GridXZ;
            //DebugShowHitboxes = true;

            //KWEngine.Projection = ProjectionType.Orthographic;

            CreateTestScene();
            //CreateFreeFloatPlayer();
        }
예제 #5
0
        public override void Act(KeyboardState ks, MouseState ms)
        {
            if (ks[Key.Escape])
            {
                CurrentWindow.SetWorld(new GameWorldStart());
                return;
            }

            if (_player != null)
            {
                SetCameraPosition(_player.Position.X, 0, 50);
                SetCameraTarget(_player.Position.X, 0, 0);
                UpdateSunPosition();
            }

            if (ks[Key.O] && GetCurrentTimeInMilliseconds() - _lastspawn > 500)
            {
                LightObject newLight = new LightObject(LightType.Point, true);
                newLight.SetPosition(0, 5, 5);
                newLight.SetNearAndFarBounds(1, 20);
                AddLightObject(newLight);
                _testlights.Add(newLight);
                _lastspawn = GetCurrentTimeInMilliseconds();
            }

            if (ks[Key.P] && GetCurrentTimeInMilliseconds() - _lastspawn > 300)
            {
                if (_testlights.Count > 0)
                {
                    RemoveLightObject(_testlights[_testlights.Count - 1]);
                    _testlights.Remove(_testlights[_testlights.Count - 1]);
                }
                _lastspawn = GetCurrentTimeInMilliseconds();
            }
        }
예제 #6
0
        public override void Prepare()
        {
            KWEngine.LoadModelFromFile("AK47", @".\models\ak47.obj");

            DebugShowPerformanceInTitle = PerformanceUnit.FramesPerSecond;
            FOV = 90;
            SetAmbientLight(1, 1, 1, 0.5f);

            Player p = new Player();

            p.SetModel("KWCube");
            p.SetScale(1, 2, 1);
            p.SetPosition(0, 1, 0);
            p.IsCollisionObject = true;
            p.FPSEyeOffset      = 0;
            AddGameObject(p);
            SetFirstPersonObject(p);

            Immovable floor = new Immovable();

            floor.SetModel("KWCube");
            floor.SetScale(50, 2, 50);
            floor.SetPosition(0, -1, 0);
            floor.IsCollisionObject = true;
            floor.IsShadowCaster    = true;
            floor.SetTexture(@".\textures\sand_diffuse.dds");
            floor.SetTextureRepeat(10, 10);
            AddGameObject(floor);

            Immovable shadowCaster = new Immovable();

            shadowCaster.SetModel("KWCube");
            shadowCaster.IsShadowCaster = true;
            shadowCaster.SetPosition(0, 3, 2);
            shadowCaster.SetScale(2);
            shadowCaster.SetTexture(@".\textures\mpanel_diffuse.dds");
            AddGameObject(shadowCaster);

            SetFirstPersonObjectItemModel("AK47", true, true);
            SetFirstPersonObjectItemModelViewOffset(0.5f, -1, 0f);
            SetFirstPersonObjectItemModelRotation(0, 0, 0);
            SetFirstPersonObjectItemModelScale(1.25f);

            SetTextureSkybox(@".\textures\skybox3.dds");

            LightObject l1 = new LightObject(LightType.Sun, true);

            l1.SetPosition(50, 100, 50);
            l1.SetColor(1, 0, 0, 5);
            //l1.SetDistanceMultiplier(10);
            AddLightObject(l1);

            //DebugShadowLight = l1;
        }
예제 #7
0
        public override void Prepare()
        {
            //KWEngine.LoadModelFromFile("ddstest", @".\models\placeholdertest.gltf");
            //KWEngine.LoadModelFromFile("MatTest", @".\models\gltftestcube.glb");
            //KWEngine.LoadModelFromFile("MatTest255", @".\models\gltftestcube255.glb");
            //KWEngine.LoadModelFromFile("EmissionTest", @".\models\emission_gltf_test.glb");

            FOV = 90;
            SetAmbientLight(1, 1, 1, 0.25f);
            SetCameraPosition(0, 10, 5f);
            SetCameraTarget(0, 0, 0);

            //SetTextureSkybox(@".\textures\skybox1.dds");
            //SetTextureBackground(@".\textures\bg_greenmountains.png");
            //SetTextureBackgroundBrightnessMultiplier(4);

            /*
             * _sun = new LightObject(LightType.Sun, true);
             * _sun.SetPosition(15, 15, 15);
             * _sun.SetTarget(0, 0, 0);
             * _sun.SetColor(1, 1, 1, 2);
             * AddLightObject(_sun);
             */


            _point = new LightObject(LightType.Point, false);
            _point.SetPosition(5, 1, 0);
            _point.SetColor(1, 1, 1, 1);
            _point.SetNearAndFarBounds(1, _multi);
            AddLightObject(_point);

            _spot = new LightObject(LightType.Directional, false);
            _spot.SetPosition(-5, 1, 0);
            _spot.SetTarget(0, 0, 0);
            _spot.SetNearAndFarBounds(1, _multi);
            _spot.SetColor(1, 1, 1, 1);
            AddLightObject(_spot);

            Immovable floor = new Immovable();

            floor.SetModel("KWCube");
            floor.SetPosition(0, -1, 0);
            floor.SetScale(20, 2, 20);
            floor.IsShadowCaster = false;
            AddGameObject(floor);

            //CreateSpheres();

            // DebugShadowLight = _sun;
            DebugShowPerformanceInTitle   = PerformanceUnit.FramesPerSecond;
            DebugShowCoordinateSystemGrid = GridType.GridXZ;
        }
        private void CreateRoomForLightTest()
        {
            SetAmbientLight(1, 1, 1, 0.25f);

            Cube e1 = new Cube();

            e1.SetModel("KWCube");
            e1.SetPosition(0, -1, 0);
            e1.SetScale(500, 2, 500);
            e1.IsShadowCaster = true;
            AddGameObject(e1);

            Cube c1 = new Cube();

            c1.Name = "House1";
            c1.SetModel("KWCube");
            c1.SetScale(25, 50, 25);
            c1.SetPosition(0, 25, 0);
            c1.IsShadowCaster = true;
            AddGameObject(c1);

            _sunlightWithShadow = new LightObject(LightType.Sun, true);
            _sunlightWithShadow.SetPosition(250, 250, 250);
            _sunlightWithShadow.SetTarget(25, 25, 25);
            _sunlightWithShadow.SetFOV(200);
            _sunlightWithShadow.SetNearAndFarBounds(_zNear, _zFar);
            _sunlightWithShadow.SetColor(1, 1, 1, 1.3f);
            //_sunlightWithShadow.SetFOVBiasCoefficient(_alpha, _hardness);
            AddLightObject(_sunlightWithShadow);
            //DebugShadowLight = _sunlightWithShadow;

            /*
             * LightObject sun = new LightObject(LightType.Sun, false);
             * sun.SetPosition(250, 250, 250);
             * sun.SetColor(1, 1, 1, 1.3f);
             * sun.SetTarget(25, 25, 25);
             * sun.SetNearAndFarBounds(50, 500);
             * sun.SetFOV(200);
             * //sun.SetNearAndFarBounds()
             * //sun.SetFOVBiasCoefficient(0.0001f);
             * AddLightObject(sun);
             */

            //DebugShadowLight = _sunlightWithShadow;

            zNearFar.SetText("near: " + Math.Round(_zNear, 1) + " | far: " + Math.Round(_zFar, 1));
            AddHUDObject(zNearFar);

            WorldDistance = 10000;
        }
        public override void Prepare()
        {
            KWEngine.LoadModelFromFile("GLTFHULL", @".\models\gltfclippingtest.fbx");
            FOV = 90;

            SetAmbientLight(1, 1, 1, 0.3f);
            SetCameraPosition(0, 5, 10);
            SetCameraTarget(0, 2.5f, 0);

            LightObject sun = new LightObject(LightType.Sun, false);

            sun.SetPosition(30, 30, 30);
            sun.SetColor(1, 1, 1, 0.75f);
            AddLightObject(sun);

            DebugShowPerformanceInTitle   = PerformanceUnit.FramesPerSecond;
            DebugShowCoordinateSystemGrid = GridType.GridXZ;
            //DebugShowHitboxes = true;

            CreateTestScene();
        }
예제 #10
0
        public override void Prepare()
        {
            //KWEngine.LoadModelFromFile("ddstest", @".\models\placeholdertest.gltf");
            KWEngine.LoadModelFromFile("MatTest", @".\models\gltftestcube.glb");
            KWEngine.LoadModelFromFile("MatTest255", @".\models\gltftestcube255.glb");
            KWEngine.LoadModelFromFile("EmissionTest", @".\models\emission_gltf_test.glb");

            FOV = 45;

            SetAmbientLight(1, 1, 1, 0.2f);

            SetCameraPosition(0, 10, 0);
            SetCameraTarget(0, 0, 0);

            SetTextureSkybox(@".\textures\skybox1.dds");
            //SetTextureBackground(@".\textures\bg_greenmountains.png");
            SetTextureBackgroundBrightnessMultiplier(5f);

            CreateMetalSphereTestObject();
            CreateCubeTestObject();
            CreateGLBTestObject();
            CreateTerrainTestObject();

            //CreateRoomForLightTest();


            CreateFreeFloatPlayer();

            LightObject sun = new LightObject(LightType.Sun, true);

            sun.SetPosition(30, 30, 30);
            sun.SetFOVBiasCoefficient(0.02f);
            sun.SetColor(1, 1, 1, 3);
            AddLightObject(sun);

            DebugShowPerformanceInTitle = PerformanceUnit.FramesPerSecond;
            //DebugShadowLight = sun;
            DebugShowCoordinateSystemGrid = GridType.GridXZ;
        }
예제 #11
0
        public override void Prepare()
        {
            SetAmbientLight(1, 1, 1, 0.25f);
            SetCameraPosition(0, 0, 10);
            ZFar = 50;
            SetCameraTarget(0, 0, 0);
            SetTextureBackground(@".\textures\bg_greenmountains.dds");

            Obstacle backwall = new Obstacle();

            backwall.SetModel("KWCube");
            backwall.SetPosition(0, 0, -5);
            backwall.IsCollisionObject = false;
            backwall.IsShadowCaster    = true;
            backwall.SetScale(50, 50, 1);
            AddGameObject(backwall);

            Obstacle o2 = new Obstacle();

            o2.Name = "O2";
            o2.SetModel("KWQuad");
            o2.SetPosition(2, -2, 0);
            o2.SetScale(2);
            o2.IsCollisionObject = true;
            o2.IsShadowCaster    = true;
            o2.SetColor(0, 1, 0);
            AddGameObject(o2);

            Obstacle o1 = new Obstacle();

            o1.Name = "O1";
            o1.SetModel("KWCube");
            o1.SetPosition(2, 0, 0);
            o1.IsCollisionObject = true;
            o1.IsShadowCaster    = true;
            o1.SetColor(1, 1, 0);
            AddGameObject(o1);



            Player p = new Player();

            p.SetModel("KWQuad");
            p.SetPosition(-2, 0, 0);
            p.SetTexture(@".\textures\7.png");
            p.IsCollisionObject = true;
            p.IsShadowCaster    = true;
            //p.SetHitboxScale(0.5f);
            AddGameObject(p);


            LightObject sun = new LightObject(LightType.Sun, false);

            //LightObject sun = new LightObject(LightType.Point, true);
            sun.SetPosition(5, 1, 10);
            sun.SetNearAndFarBounds(1, 25);
            sun.SetColor(1, 1, 1, 2);
            sun.SetFOV(5);
            AddLightObject(sun);
            //DebugShadowLight = sun;
        }
예제 #12
0
 private void UpdateSunPosition()
 {
     _sun.SetPosition(_player.Position.X + 25, 25, 25);
 }
예제 #13
0
        public override void Prepare()
        {
            KWEngine.LoadModelFromFile("Robot", @".\models\UBot\ubot.fbx");
            KWEngine.LoadModelFromFile("Lab", @".\models\labyrinth\walls.obj");
            KWEngine.LoadModelFromFile("Panel", @".\models\spacepanel\scifipanel.obj");
            KWEngine.LoadModelFromFile("Spaceship", @".\models\spaceship\spaceship4.obj");

            KWEngine.BuildTerrainModel("Terrain", @".\textures\heightmap.png", @".\textures\sand_diffuse.dds", 100, 2, 100, 5, 5);

            SetAmbientLight(0, 0.25f, 1f, 0.25f);
            SetCameraPosition(100, 100, 100);
            WorldDistance = 1000;

            Immovable ship = new Immovable();

            ship.SetModel("Spaceship");
            ship.IsCollisionObject = true;
            ship.IsShadowCaster    = true;
            ship.SetPosition(-35, 3.5f, -25);
            ship.SetScale(15);
            ship.AddRotationZ(25, true);
            ship.AddRotationX(40, true);
            AddGameObject(ship);

            Immovable floor = new Immovable();

            floor.SetModel("Terrain");
            floor.IsCollisionObject = true;
            floor.IsShadowCaster    = true;
            floor.SetTexture(@".\textures\sand_normal.dds", TextureType.Normal);
            AddGameObject(floor);

            Immovable wallLeft1 = new Immovable();

            wallLeft1.Name = "WallLeft";
            wallLeft1.SetModel("KWCube");
            wallLeft1.IsCollisionObject = true;
            wallLeft1.IsShadowCaster    = true;
            wallLeft1.SetScale(2, 10, 100);
            wallLeft1.SetPosition(-49, 5, 0);
            AddGameObject(wallLeft1);

            Immovable wallRight = new Immovable();

            wallRight.Name = "WallRight";
            wallRight.SetModel("KWCube");
            wallRight.IsCollisionObject = true;
            wallRight.IsShadowCaster    = true;
            wallRight.SetScale(2, 10, 100);
            wallRight.SetPosition(49, 5, 0);
            AddGameObject(wallRight);

            Immovable wallFront = new Immovable();

            wallFront.Name = "WallFront";
            wallFront.SetModel("KWCube");
            wallFront.IsCollisionObject = true;
            wallFront.IsShadowCaster    = true;
            wallFront.SetScale(100, 10, 2);
            wallFront.SetPosition(0, 5, 49);
            AddGameObject(wallFront);

            Immovable wallBack = new Immovable();

            wallBack.Name = "WallBack";
            wallBack.SetModel("KWCube");
            wallBack.IsCollisionObject = true;
            wallBack.IsShadowCaster    = true;
            wallBack.SetScale(100, 10, 2);
            wallBack.SetPosition(0, 5, -49);
            AddGameObject(wallBack);

            p = new Player();
            p.SetModel("Robot");
            p.Name = "Player";
            p.SetPosition(-5, 0f, -5);
            p.SetScale(4);
            p.AnimationID         = 0;
            p.AnimationPercentage = 0;
            p.IsShadowCaster      = true;
            p.IsCollisionObject   = true;
            p.IsPickable          = true;
            p.TurnTowardsXZ(new Vector3(0, 0, 0));
            //p.SetSpecularOverride(true, 8, 32);
            AddGameObject(p);
            //SetFirstPersonObject(p);

            p._flashlight = new LightObject(LightType.Directional, true);
            p._flashlight.SetColor(1, 0.75f, 0, 5f);
            p._flashlight.SetNearAndFarBounds(1f, 10);
            p._flashlight.SetFOV(150);
            //p._flashlight.SetFOVBiasCoefficient(0.025f);
            AddLightObject(p._flashlight);


            Immovable lab = new Immovable();

            lab.Name = "Labyrinth";
            lab.SetModel("Lab");
            lab.IsCollisionObject = true;
            lab.IsShadowCaster    = true;
            //lab.SetSpecularOverride(true, 0, 2048);
            AddGameObject(lab);

            Panel panel = new Panel();

            panel.Name = "Panel";
            panel.SetModel("Panel");
            panel.SetPosition(10, 0.25f, -5);
            panel.SetScale(3);
            //panel.SetSpecularOverride(true, 2, 1024);
            //panel.SetTextureForMesh(0, @".\models\spacepanel\scifipanel2.png");
            panel.IsShadowCaster    = true;
            panel.IsPickable        = true;
            panel.IsCollisionObject = true;
            AddGameObject(panel);

            /*
             * PanelLight pLight = new PanelLight();
             * pLight.Type = LightType.Directional;
             * pLight.SetColor(1, 1, 1, 1);
             * pLight.SetPosition(10, 5, -5);
             * pLight.SetTarget(10, 0, -5);
             * pLight.SetDistanceMultiplier(5f);
             * AddLightObject(pLight);
             */

            LightObject sun = new LightObject(LightType.Sun, true);

            sun.SetPosition(125, 200, -125);
            sun.SetTarget(0, 0, 0);
            sun.SetFOV(140);
            sun.SetNearAndFarBounds(100, 400);
            sun.SetColor(0, 0.5f, 1.0f, 0.5f);
            AddLightObject(sun);

            HUDObject ho = new HUDObject(HUDObjectType.Text, 24, 24);

            ho.SetText("kwengine.de");
            ho.SetGlow(1, 0, 0, 1);
            ho.SetRotation(0, 0);
            AddHUDObject(ho);

            //DebugShadowLight = sun;

            DebugShowHitboxes           = false;
            DebugShowPerformanceInTitle = PerformanceUnit.FramesPerSecond;
            if (IsFirstPersonMode)
            {
                FOV = 90;
            }
            else
            {
                FOV = 45;
            }
        }
예제 #14
0
        private void CreateRoomForLightTest()
        {
            SetAmbientLight(1, 1, 1, 0.25f);

            KWEngine.BuildTerrainModel("Terrain", @".\textures\heightmap2.png", @".\textures\sand_diffuse.dds", 20, 2, 20, 5, 5);

            Cube e1 = new Cube();

            e1.SetModel("KWCube");
            e1.SetPosition(0, 2, 0);
            e1.IsShadowCaster = true;
            AddGameObject(e1);

            Cube c1 = new Cube();

            c1.SetModel("KWCube");
            c1.SetScale(20, 10, 2);
            c1.SetPosition(0, 5, -11);
            c1.IsShadowCaster = true;
            c1.SetTexture(@".\textures\pavement01.jpg");
            AddGameObject(c1);

            /*
             * Cube c2 = new Cube();
             * c2.SetModel("KWCube");
             * c2.SetScale(20, 2, 20);
             * c2.SetPosition(0, -1, 0);
             * c2.SetTexture(@".\textures\pavement01.jpg");
             * c2.IsShadowCaster = true;
             * AddGameObject(c2);
             */
            Cube c2 = new Cube();

            c2.SetModel("Terrain");
            c2.SetPosition(0, 0, 0);
            c2.IsShadowCaster = true;
            AddGameObject(c2);

            Cube c3 = new Cube();

            c3.SetModel("KWCube");
            c3.SetScale(2, 10, 20);
            c3.SetPosition(-11, 5, 0);
            c3.SetTexture(@".\textures\pavement01.jpg");
            c3.IsShadowCaster = true;
            AddGameObject(c3);

            Cube c4 = new Cube();

            c4.SetModel("KWCube");
            c4.SetScale(2, 10, 20);
            c4.SetPosition(+11, 5, 0);
            c4.IsShadowCaster = true;
            c4.SetTexture(@".\textures\pavement01.jpg");
            AddGameObject(c4);

            // Testing Cubes and Spheres
            Cube box1 = new Cube();

            box1.SetModel("KWCube");
            box1.SetPosition(-5, 1, 0);
            box1.SetScale(2);
            box1.IsShadowCaster = true;
            AddGameObject(box1);

            Cube box2 = new Cube();

            box2.SetModel("KWCube");
            box2.SetPosition(0, 0.5f, -3);
            box2.SetScale(1);
            box2.IsShadowCaster = true;
            //box2.SetMetalness(0.9f);
            box2.Opacity = 1;
            AddGameObject(box2);

            Cube box3 = new Cube();

            box3.SetModel("KWCube");
            box3.SetPosition(0, 3, -7.5f);
            box3.SetScale(3);
            box3.IsShadowCaster = true;
            AddGameObject(box3);

            _pointlightWithShadow = new LightObject(LightType.Point, true);
            _pointlightWithShadow.SetPosition(0, 5, 0);
            _pointlightWithShadow.SetNearAndFarBounds(1, 15);
            _pointlightWithShadow.SetColor(1, 0, 0, 2);
            _pointlightWithShadow.SetFOVBiasCoefficient(_momentBias, _depthBias);
            AddLightObject(_pointlightWithShadow);
        }
예제 #15
0
        public override void Prepare()
        {
            FOV = 90;



            KWEngine.LoadModelFromFile("ArenaOuter", @".\Models\ArenaOuter\ArenaOuter.fbx");
            KWEngine.LoadModelFromFile("ArenaPlatform", @".\Models\ArenaOuter\ArenaPlatform.obj");
            KWEngine.LoadModelFromFile("ArenaPlatforms", @".\Models\ArenaOuter\ArenaPlatforms.fbx");
            KWEngine.LoadModelFromFile("AK47", @".\models\ak47.obj");

            KWEngine.BuildTerrainModel("Arena", @".\textures\heightmapArena.png", @".\textures\sand_diffuse.dds", 150, 10, 150, 7.5f, 7.5f);
            Immovable terra = new Immovable();

            terra.SetModel("Arena");
            terra.SetPosition(0, -0.5f, 0);
            terra.IsShadowCaster = true;
            terra.SetTexture(@".\textures\sand_normal.dds", TextureType.Normal);
            AddGameObject(terra);


            Immovable floor = new Immovable();

            floor.SetModel("KWCube");
            floor.SetScale(80, 5, 80);
            floor.SetPosition(0, -2.5f, 0);
            floor.SetTextureRepeat(5, 5);
            floor.IsCollisionObject = true;
            floor.IsShadowCaster    = true;
            floor.SetTexture(@".\textures\sand_diffuse.dds");
            floor.SetTexture(@".\textures\sand_normal.dds", TextureType.Normal);
            AddGameObject(floor);

            Immovable arenaOuter = new Immovable();

            arenaOuter.SetModel("ArenaOuter");
            arenaOuter.IsCollisionObject = true;
            arenaOuter.IsShadowCaster    = true;
            AddGameObject(arenaOuter);


            Immovable arenaPlatforms = new Immovable();

            arenaPlatforms.SetModel("ArenaPlatforms");
            arenaPlatforms.IsCollisionObject = true;
            arenaPlatforms.IsShadowCaster    = true;
            AddGameObject(arenaPlatforms);

            PlatformUpDown testPlatform = new PlatformUpDown();

            testPlatform.SetModel("ArenaPlatform");
            testPlatform.SetScale(1.5f);
            testPlatform.SetMetalness(1);
            testPlatform.SetRoughness(0.5f);
            testPlatform.SetPosition(15, 1.5f, 0);
            testPlatform.IsCollisionObject = true;
            testPlatform.IsShadowCaster    = true;
            AddGameObject(testPlatform);


            _player = new Player();
            _player.SetModel("KWCube");
            _player.SetScale(1, 2, 1);
            _player.IsShadowCaster    = false;
            _player.IsCollisionObject = true;
            _player.SetPosition(25, 1f, 25);
            _player.FPSEyeOffset = 0.75f;
            _player.UpdateLast   = true;
            AddGameObject(_player);
            SetFirstPersonObject(_player, 230);

            SetFirstPersonObjectItemModel("AK47", true, true);
            SetFirstPersonObjectItemModelViewOffset(0.5f, -1, 0);

            SetTextureSkybox(@".\textures\skybox1.dds");
            DebugShowPerformanceInTitle = PerformanceUnit.FramesPerSecond;

            _sunLightWithShadow = new LightObject(LightType.Sun, true);
            _sunLightWithShadow.SetPosition(200, 200, 50);
            _sunLightWithShadow.SetTarget(25, 25, 0);
            _sunLightWithShadow.SetColor(1, 0.75f, 0.5f, 2.5f);
            _sunLightWithShadow.SetNearAndFarBounds(100, 400);
            _sunLightWithShadow.SetFOV(125);
            _sunLightWithShadow.SetFOVBiasCoefficient(_alpha, _hardness);
            AddLightObject(_sunLightWithShadow);
            //DebugShadowLight = _sunLightWithShadow;

            SetAmbientLight(1, 0.75f, 0.5f, 0.3f);
            SetTextureBackgroundBrightnessMultiplier(4);
        }
        public override void Act(KeyboardState ks, MouseState ms)
        {
            if (ks[Key.Escape])
            {
                CurrentWindow.SetWorld(new GameWorldStart());
                return;
            }

            if (ks[Key.Left])
            {
                _alpha = HelperGeneral.Clamp(_alpha - 0.000001f * KWEngine.DeltaTimeFactor, 0.0000001f, 1f);
                Console.WriteLine("Alpha: " + _alpha);
                _sunlightWithShadow.SetFOVBiasCoefficient(_alpha, _hardness);
            }
            if (ks[Key.Right])
            {
                _alpha = HelperGeneral.Clamp(_alpha + 0.000001f * KWEngine.DeltaTimeFactor, 0.0000001f, 1f);
                Console.WriteLine("Alpha: " + _alpha);
                _sunlightWithShadow.SetFOVBiasCoefficient(_alpha, _hardness);
            }

            if (ks[Key.Up])
            {
                _hardness = HelperGeneral.Clamp(_hardness + 0.001f * KWEngine.DeltaTimeFactor, -0.5f, 0.5f);
                Console.WriteLine("Hardness: " + _hardness);
                _sunlightWithShadow.SetFOVBiasCoefficient(_alpha, _hardness);
            }
            if (ks[Key.Down])
            {
                _hardness = HelperGeneral.Clamp(_hardness - 0.001f * KWEngine.DeltaTimeFactor, -0.5f, 0.5f);
                Console.WriteLine("Hardness: " + _hardness);
                _sunlightWithShadow.SetFOVBiasCoefficient(_alpha, _hardness);
            }

            if (ks[Key.H])
            {
                _zNear = HelperGeneral.Clamp(_zNear + 0.5f * KWEngine.DeltaTimeFactor, 0.01f, 1000);
                Console.WriteLine("z-Near: " + _zNear);
                _sunlightWithShadow.SetNearAndFarBounds(_zNear, _zFar);
                zNearFar.SetText("near: " + Math.Round(_zNear, 1) + " | far: " + Math.Round(_zFar, 1));
            }
            if (ks[Key.G])
            {
                _zNear = HelperGeneral.Clamp(_zNear - 0.5f * KWEngine.DeltaTimeFactor, 0.01f, 1000);
                Console.WriteLine("z-Near: " + _zNear);
                _sunlightWithShadow.SetNearAndFarBounds(_zNear, _zFar);
                zNearFar.SetText("near: " + Math.Round(_zNear, 1) + " | far: " + Math.Round(_zFar, 1));
            }
            if (ks[Key.N])
            {
                _zFar = HelperGeneral.Clamp(_zFar + 0.5f * KWEngine.DeltaTimeFactor, 0.01f, 1000);
                Console.WriteLine("z-Far: " + _zFar);
                _sunlightWithShadow.SetNearAndFarBounds(_zNear, _zFar);
                zNearFar.SetText("near: " + Math.Round(_zNear, 1) + " | far: " + Math.Round(_zFar, 1));
            }
            if (ks[Key.B])
            {
                _zFar = HelperGeneral.Clamp(_zFar - 0.5f * KWEngine.DeltaTimeFactor, 0.01f, 1000);
                Console.WriteLine("z-Far: " + _zFar);
                _sunlightWithShadow.SetNearAndFarBounds(_zNear, _zFar);
                zNearFar.SetText("near: " + Math.Round(_zNear, 1) + " | far: " + Math.Round(_zFar, 1));
            }

            long currentTimeStamp = GetCurrentTimeInMilliseconds();

            if (ks[Key.Number1] && (currentTimeStamp - _timestampLast) > COOLDOWN)
            {
                RemoveLightObject(_sunlightWithShadow);

                _zNear = 0.01f;
                _zFar  = 50.0f;

                _sunlightWithShadow = new LightObject(LightType.Sun, true);
                _sunlightWithShadow.SetPosition(sunX, 10, 15f);
                _sunlightWithShadow.SetTarget(0, 5, 0);
                _sunlightWithShadow.SetFOV(35);
                _sunlightWithShadow.SetNearAndFarBounds(_zNear, _zFar);
                _sunlightWithShadow.SetColor(1, 1, 1, 2);
                AddLightObject(_sunlightWithShadow);

                _timestampLast = currentTimeStamp;
                zNearFar.SetText("near: " + Math.Round(_zNear, 1) + " | far: " + Math.Round(_zFar, 1));
            }

            if (ks[Key.Number2] && (currentTimeStamp - _timestampLast) > COOLDOWN)
            {
                RemoveLightObject(_sunlightWithShadow);

                _zNear = 0.01f;
                _zFar  = 50f;

                _sunlightWithShadow = new LightObject(LightType.Directional, true);
                _sunlightWithShadow.SetPosition(sunX, 10f, 15f);
                _sunlightWithShadow.SetTarget(0, 5, 0);
                _sunlightWithShadow.SetFOV(180);
                _sunlightWithShadow.SetNearAndFarBounds(_zNear, _zFar);
                _sunlightWithShadow.SetColor(1, 1, 1, 2);
                AddLightObject(_sunlightWithShadow);

                _timestampLast = currentTimeStamp;
                zNearFar.SetText("near: " + Math.Round(_zNear, 1) + " | far: " + Math.Round(_zFar, 1));
            }
        }
        private void CreateRoomForLightTest()
        {
            SetAmbientLight(1, 1, 1, 0.25f);

            Cube e1 = new Cube();

            e1.SetModel("KWCube");
            e1.SetPosition(0, 2, 0);
            e1.IsShadowCaster = true;
            AddGameObject(e1);

            Cube c1 = new Cube();

            c1.Name = "BACK WALL";
            c1.SetModel("KWCube");
            c1.SetScale(20, 10, 2);
            c1.SetPosition(0, 5, -11);
            c1.IsShadowCaster = true;
            c1.SetTexture(@".\textures\pavement01.jpg");
            AddGameObject(c1);

            Cube c2 = new Cube();

            c2.Name = "FLOOR";
            c2.SetModel("KWCube");
            c2.SetScale(20, 2, 20);
            c2.SetPosition(0, -1, 0);
            c2.SetTexture(@".\textures\pavement01.jpg");
            c2.IsShadowCaster = true;
            AddGameObject(c2);

            Cube c3 = new Cube();

            c3.SetModel("KWCube");
            c3.SetScale(2, 10, 20);
            c3.SetPosition(-11, 5, 0);
            c3.SetTexture(@".\textures\pavement01.jpg");
            c3.IsShadowCaster = true;
            AddGameObject(c3);

            Cube c4 = new Cube();

            c4.SetModel("KWCube");
            c4.SetScale(2, 10, 20);
            c4.SetPosition(+11, 5, 0);
            c4.IsShadowCaster = true;
            c4.SetTexture(@".\textures\pavement01.jpg");
            AddGameObject(c4);

            // Testing Cubes and Spheres
            Cube box1 = new Cube();

            box1.SetModel("KWCube");
            box1.SetPosition(-5, 0.5f, 2f);
            box1.SetScale(1);
            box1.IsShadowCaster = true;
            AddGameObject(box1);

            Cube box2 = new Cube();

            box2.SetModel("KWCube");
            box2.SetPosition(0, 0.5f, -5.5f);
            box2.SetScale(1);
            box2.SetColor(1, 0, 0);
            box2.IsShadowCaster = true;
            //box2.SetMetalness(0.9f);
            box2.Opacity = 1;
            AddGameObject(box2);

            Cube box3 = new Cube();

            box3.SetModel("KWCube");
            box3.SetPosition(5, 0.5f, -8f);
            box3.SetScale(1);
            box3.SetColor(0, 1, 0);
            box3.IsShadowCaster = true;
            AddGameObject(box3);

            _sunlightWithShadow = new LightObject(LightType.Directional, true);
            _sunlightWithShadow.SetPosition(sunX, 10, 15f);
            _sunlightWithShadow.SetTarget(0, 5, 0);
            //_sunlightWithShadow.SetFOV(35);
            _sunlightWithShadow.SetFOV(180);
            _sunlightWithShadow.SetNearAndFarBounds(_zNear, _zFar);
            _sunlightWithShadow.SetColor(1, 1, 1, 2);
            _sunlightWithShadow.SetFOVBiasCoefficient(_alpha, _hardness);
            AddLightObject(_sunlightWithShadow);

            DebugShowPerformanceInTitle = PerformanceUnit.FramesPerSecond;
            //DebugShadowLight = _sunlightWithShadow;

            zNearFar.SetText("near: " + Math.Round(_zNear, 1) + " | far: " + Math.Round(_zFar, 1));
            AddHUDObject(zNearFar);
        }
예제 #18
0
        public override void Prepare()
        {
            KWEngine.LoadModelFromFile("UBot", @".\Models\JumpAndRun\UBot.fbx");

            SetTextureSkybox(@".\Textures\skybox3.dds");
            SetTextureBackgroundBrightnessMultiplier(4);
            SetAmbientLight(1, 1, 1, 0.25f);
            WorldDistance = 50;

            // Player object:
            _player = new Player();
            _player.SetModel("UBot");
            _player.SetScale(1.8f);
            _player.SetRotation(0, 180, 0);
            _player.SetMetalness(0.25f);
            _player.Name = "Player";
            //_player.SetRoughness(1);
            _player.SetPosition(0, 0, 0);
            _player.IsCollisionObject = true;
            _player.IsShadowCaster    = true;
            _player.UpdateLast        = true;
            AddGameObject(_player);

            Platform floor = new Platform();

            floor.SetModel("KWCube");
            floor.SetTexture(@".\textures\mpanel_diffuse.dds");
            floor.SetTexture(@".\textures\mpanel_normal.dds", TextureType.Normal);
            //floor.SetTexture(@".\textures\mpanel_roughness.dds", TextureType.Roughness);
            //floor.SetTexture(@".\textures\mpanel_metalness.dds", TextureType.Metalness);
            floor.SetRoughness(0.25f);
            floor.SetMetalness(0.1f);
            floor.SetTextureRepeat(5, 5);
            floor.IsCollisionObject = true;
            floor.SetPosition(0, -1f, 0);
            floor.SetScale(50, 2, 50);
            floor.Name           = "Floor";
            floor.IsShadowCaster = true;
            AddGameObject(floor);

            _sun = new LightObject(LightType.Sun, true);
            _sun.SetPosition(-200, 100, 50);
            _sun.SetTarget(0, 0, 0);
            _sun.SetFOV(45);
            _sun.SetNearAndFarBounds(200, 350);
            _sun.SetColor(1, 1, 1, 4);
            _sun.SetFOVBiasCoefficient(0.00003f, 0f);
            AddLightObject(_sun);
            //DebugShadowLight = _sun;

            SetCameraPosition(0, 0, 10);
            SetCameraTarget(0, 0, 0);
            FOV = 90;

            CurrentWindow.CursorVisible = false;
            CurrentWindow.CursorGrabbed = true;

            // Place some obstacles:
            Immovable i1 = new Immovable();

            i1.SetModel("KWCube");
            i1.SetPosition(2.5f, 1f, -5);
            i1.SetScale(2);
            i1.IsPickable = true;
            i1.Name       = "Obstacle Box #1";
            i1.SetRoughness(0.5f);
            i1.SetColor(1, 0.25f, 0.25f);
            i1.SetTexture(@".\textures\MetalPlates006_1K_ColorBright.jpg");
            //i1.SetSpecularReflectionEnabled(true);
            i1.IsShadowCaster    = true;
            i1.IsCollisionObject = true;
            AddGameObject(i1);

            // Place HUD crosshair:
            _crosshair = new HUDObject(HUDObjectType.Image, CurrentWindow.Width / 2, CurrentWindow.Height / 2);
            _crosshair.SetTexture(@".\textures\crosshair.dds");
            _crosshair.SetScale(64, 64);
            AddHUDObject(_crosshair);

            DebugShowPerformanceInTitle = PerformanceUnit.FramesPerSecond;
        }