public void Init()
        {
            carMaterial = new MaterialBuilder()
                          .Build()
                          .SetName("Car Material")
                          .Attach(new Shader("Shaders\\Cars\\vert.glsl", ShaderType.VertexShader))
                          .Attach(new Shader("Shaders\\Cars\\Frag.glsl", ShaderType.FragmentShader))
                          .Link()
                          .GetMaterial();
            testMesh                 = MeshLoader.LoadAsset("Content\\Cars\\" + car + "\\model.obj");
            wheelMesh                = MeshLoader.LoadAsset("Content\\Cars\\wheel01.obj");
            testTexture              = TextureLoader.LoadAsset("Content\\Cars\\" + car + "\\texture.png");
            decalTexture             = TextureLoader.LoadAsset("Content\\Cars\\" + car + "\\decal.png");
            decalTexture.textureUnit = TextureUnit.Texture1;
            using (var streamReader = new StreamReader("Content\\Cars\\" + car + "\\data.json"))
                data = Newtonsoft.Json.JsonConvert.DeserializeObject <VehicleData>(streamReader.ReadToEnd());

            engineSound = TrackLoader.LoadAsset("Content\\Cars\\" + car + "\\engine.wav");
            engineSound.OnPlaybackStop += (s, e) =>
            {
                engineSound.PlayBeginning();
            };
            engineSound.Play();
            // Rolling resistance is always (max speed) * drag, with max speed in metres per second
            data.rollingResistance = (data.maxSpeed / MPH_CONST) * data.drag;
        }
Example #2
0
        //public void RenderMultipleCars(ref Vector3 wheelPositions)
        //{
        //    // draw cars in V formation
        //    for (int i = 0; i < 5; ++i)
        //    {
        //        Vector3 offset = Vector3.Zero;
        //        if (i < 2) offset = new Vector3(i - 3, 0, i - 2);
        //        else if (i > 2) offset = new Vector3(-i, 0, i - 2);
        //        else if (i == 2) offset = new Vector3(0, 0, i - 2);

        //        offset += new Vector3(0, 0, 1) * (float)Math.Sin(offset.X * offset.Z * Time.currentTime);

        //        offset *= 4.0f;
        //        for (int w = 0; w < wheelPositions.Length; ++w)
        //            Render3D.DrawMesh(wheelMesh,
        //                (wheelPositions[w] + position + offset + new Vector3(0, -0.35f, 0)) * -1.0f,
        //                new Vector3(0.19f, 0.19f, 0.19f) * ((w % 2 == 1) ? -1 : 1),
        //                wheelRenderRotation,
        //                Quaternion.FromEulerAngles(new Vector3(-currentAccel * Time.currentTime * 10.0f, 0, 0)) * Quaternion.FromEulerAngles(new Vector3(0, ((w < 2) ? -turningWeight / 180.0f : 0) * (float)Math.Sin(offset.X * offset.Z * Time.currentTime), 0)),
        //                testTexture);
        //        Render3D.DrawMesh(testMesh, (position + offset) * -1.0f, new Vector3(0.2f, 0.2f, 0.2f), renderRotation, Quaternion.FromEulerAngles(new Vector3(-currentAccel / 100.0f, 0, turningWeight / 1080.0f)), testTexture, carMaterial);
        //    }
        //}

        public void Init()
        {
            netClient   = new NetClient();
            carMaterial = new MaterialBuilder()
                          .Build()
                          .SetName("Car Material")
                          .Attach(new Shader("Shaders\\Cars\\vert.glsl", ShaderType.VertexShader))
                          .Attach(new Shader("Shaders\\Cars\\Frag.glsl", ShaderType.FragmentShader))
                          .Link()
                          .GetMaterial();
            testMesh                 = MeshLoader.LoadAsset("Content\\Cars\\" + car + "\\model.obj");
            wheelMesh                = MeshLoader.LoadAsset("Content\\Cars\\wheel01.obj");
            testTexture              = TextureLoader.LoadAsset("Content\\Cars\\" + car + "\\texture.png");
            decalTexture             = TextureLoader.LoadAsset("Content\\Cars\\" + car + "\\decal.png");
            decalTexture.textureUnit = TextureUnit.Texture1;
            using (var streamReader = new StreamReader("Content\\Cars\\" + car + "\\data.json"))
                data = Newtonsoft.Json.JsonConvert.DeserializeObject <VehicleData>(streamReader.ReadToEnd());
        }
Example #3
0
        public override void Init()
        {
            carController = new CarController();
            carController.Init();
            sceneProperties = new SceneProperties();
            Dictionary <string, string> texturesToLoad = new Dictionary <string, string>()
            {
                { "floor", @"Content\Tracks\grid.png" },
                { "building", @"Content\Tracks\buildinguv.png" },
                { "building2", @"Content\Tracks\buildinguv.png" },
                { "sky", @"Content\vpsky.png" },
                { "reflection", @"Content\Cars\reflection2.png" },
                { "test", @"Content\advisorbg.png" },
                { "road", @"Content\Tracks\road.png" },
            };
            Dictionary <string, string> meshesToLoad = new Dictionary <string, string>()
            {
                { "floor", @"Content\Tracks\circuit01.obj" },
                { "sky", @"Content\vpsky.obj" },
                { "building", @"Content\Tracks\building2.obj" },
                { "road", @"Content\Tracks\road01.obj" },
                { "cube", @"Content\sky.obj" },
            };

            foreach (var texture in texturesToLoad)
            {
                textures.Add(texture.Key, TextureLoader.LoadAsset(texture.Value));
            }
            foreach (var mesh in meshesToLoad)
            {
                meshes.Add(mesh.Key, MeshLoader.LoadAsset(mesh.Value));
            }

            //reflectionTexture.textureUnit = TextureUnit.Texture2;
            standardMat = new MaterialBuilder()
                          .Build()
                          .SetName("Standard Object Material")
                          .Attach(new Shader("Shaders\\Standard\\vert.glsl", ShaderType.VertexShader))
                          .Attach(new Shader("Shaders\\Standard\\frag.glsl", ShaderType.FragmentShader))
                          .Link()
                          .GetMaterial();
            unlitMat = new MaterialBuilder()
                       .Build()
                       .SetName("Standard Object Material")
                       .Attach(new Shader("Shaders\\Unlit\\vert.glsl", ShaderType.VertexShader))
                       .Attach(new Shader("Shaders\\Unlit\\frag.glsl", ShaderType.FragmentShader))
                       .Link()
                       .GetMaterial();
            materials.Add(standardMat);
            materials.Add(unlitMat);
            materials.Add(Render3D.defaultMaterial);
            materials.Add(Render2D.defaultSpriteMaterial);
            materials.Add(carController.carMaterial);
            RenderShared.renderResolution = new Vector2(320, 240);


            for (int x = -10; x < 10; ++x)
            {
                for (int y = -10; y < 10; ++y)
                {
                    if (x != 0 && y != 0)
                    {
                        sceneObjects.Add(new SceneObject("Building", meshes["building"], new Vector3(40 * y, 0, 40 * x), new Vector3(-2, 2, 2) * Math.Max((((float)Math.Sin(x * y) + 2.0f) / 2.0f), 1.0f), Quaternion.Identity, Quaternion.FromEulerAngles(new Vector3(0, 90 * ((x * y) % 4), 0)), (x * y % 2 == 0) ? textures["building"] : textures["building2"], standardMat));
                    }
                }
            }


            sceneObjects.Add(new SceneObject("Floor", meshes["floor"], new Vector3(0, -0.2f, 0), new Vector3(10, 1, 10), Quaternion.Identity, Quaternion.Identity, textures["floor"], standardMat));

            for (int i = -10; i < 10; ++i)
            {
                sceneObjects.Add(new SceneObject("Road " + (i + 11), meshes["road"], new Vector3(-i * 32, -0.18f, 0), new Vector3(1, 1, 1), Quaternion.Identity, Quaternion.Identity, textures["road"], standardMat));
            }
        }