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;
        }
示例#2
0
        public async Task loadAndPlay(string query, IGuild guild)
        {
            List <AudioTrack> tracks;

            // If query is Url
            if (Uri.IsWellFormedUriString(query, UriKind.Absolute))
            {
                Console.WriteLine(query + " is url");
                tracks = await TrackLoader.LoadAudioTrack(query, fromUrl : true);
            }
            else
            {
                Console.WriteLine(query + " is not url");
                tracks = await TrackLoader.LoadAudioTrack(query, fromUrl : false);
            }

            if (tracks.Count == 0)
            {
                return;
            }

            Console.WriteLine("Loaded " + tracks.Count + " entri(es)");

            GuildVoiceState voiceState = MusicManager.GetGuildVoiceState(guild);

            foreach (AudioTrack track in tracks)
            {
                //await voiceState.Scheduler.EnqueueAsync(track);
                voiceState.Scheduler.Enqueue(track);
                Console.WriteLine("Enqueued " + track.TrackInfo.Title);
            }
        }
示例#3
0
        private void beginAudioLoad()
        {
            if (trackLoader != null)
            {
                Preview = trackLoader.Preview;
                Playing.TriggerChange();
                return;
            }

            loading = true;

            LoadComponentAsync(trackLoader = new TrackLoader($"https://b.ppy.sh/preview/{BeatmapSet.OnlineBeatmapSetID}.mp3"),
                               d =>
            {
                // We may have been replaced by another loader
                if (trackLoader != d)
                {
                    return;
                }

                Preview = d?.Preview;
                updatePreviewTrack(Playing);
                loading = false;

                Add(trackLoader);
            });
        }
示例#4
0
        private void beginAudioLoad()
        {
            if (trackLoader != null)
            {
                return;
            }

            loading = true;

            Add(new AsyncLoadWrapper(trackLoader = new TrackLoader($"https://b.ppy.sh/preview/{BeatmapSet.OnlineBeatmapSetID}.mp3")
            {
                OnLoadComplete = d =>
                {
                    // we may have been replaced by another loader
                    if (trackLoader != d)
                    {
                        return;
                    }

                    Preview = (d as TrackLoader)?.Preview;
                    Playing.TriggerChange();
                    loading = false;
                },
            }));
        }
示例#5
0
        public async Task <AudioTrack> LoadAndPlay(string query, IGuild guild)
        {
            List <AudioTrack> tracks;

            // If query is Url
            bool wellFormedUri = Uri.IsWellFormedUriString(query, UriKind.Absolute);

            tracks = await TrackLoader.LoadAudioTrack(query, fromUrl : wellFormedUri).ConfigureAwait(false);

            if (tracks.Count == 0)
            {
                return(null);
            }

            Console.WriteLine("Loaded " + tracks.Count + " entri(es)");

            GuildVoiceState voiceState = GetVoiceState(guild);

            foreach (AudioTrack track in tracks)
            {
                Console.WriteLine("Enqueue " + track.Info.Title);
                await voiceState.Scheduler.Enqueue(track);

                return(track);
            }

            return(null);
        }
示例#6
0
        /// <summary>
        /// Creates the looping stream using earlier set looping values.
        /// </summary>
        /// <returns>The looping music stream.</returns>
        public WaveStream CreateStream()
        {
            var stream = new LoopStream(TrackLoader.LoadStream(Track.GetFullPath()));

            stream.SetStreamPoints(
                TrackStart,
                StreamLoopStart != -1 ? StreamLoopStart : TrackStart,
                StreamLoopEnd != -1 ? StreamLoopEnd : TrackEnd,
                TrackEnd
                );
            stream.TotalLoops = Loops;
            return(stream);
        }
示例#7
0
    public bool FeasibilityCheck()
    {
        // check feasibility
        foreach (TrackChromosome c in pop)
        {
            c.SetFeasable(TrackLoader.Check(c));
        }

        for (int i = 0; i < pop_size; i++)
        {
            if (pop[i].IsFeasable())
            {
                feasable.Add(pop[i]);
            }
            else
            {
                unfeasable.Add(pop[i]);
            }
        }
        return(feasable.Count > 0);
    }