Example #1
0
        // PUT api/<controller>/5
        public HttpResponseMessage Put(int id, TrackDTO track)
        {
            HttpResponseMessage responseMessage;

            using (var context = new ChinookEntities())
            {
                var oldTrack = context.Tracks.Find(id);
                if (oldTrack != null)
                {
                    int newGenreId = context.Genres.Where(g => g.Name == track.Genre).SingleOrDefault().GenreId;
                    oldTrack.Name         = track.Name;
                    oldTrack.GenreId      = newGenreId;
                    oldTrack.Milliseconds = track.Milliseconds;
                    oldTrack.UnitPrice    = track.UnitPrice;

                    try
                    {
                        context.SaveChanges();
                        responseMessage = Request.CreateResponse <TrackDTO>(HttpStatusCode.OK, track);
                    }
                    catch (Exception ex)
                    {
                        responseMessage = Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                                                      new HttpError("Track wasn't updated!"));
                    }
                }
                else
                {
                    responseMessage = Request.CreateErrorResponse(HttpStatusCode.BadRequest,
                                                                  new HttpError("Track wasn't found!"));
                }
            }

            return(responseMessage);
        }
Example #2
0
        public TrackDTO Read(int key)
        {
            TrackDTO track = new TrackDTO();

            using (SqlConnection conn = new SqlConnection(DBConnection._connectionString))
            {
                using (SqlCommand cmd = new SqlCommand($"SELECT Track.Id, Track.TrackNumber, Track.PreferedTramType, Track.SectorId FROM [Track] INNER JOIN dbo.Sector ON dbo.Track.Id = dbo.Sector.TrackId WHERE [Id] = @key", conn))
                {
                    cmd.Parameters.AddWithValue("@key", key);
                    conn.Open();
                    using (SqlDataReader datareader = cmd.ExecuteReader())
                    {
                        while (datareader.Read())
                        {
                            track.Id          = datareader.GetInt32(0);
                            track.TrackNumber = datareader.GetInt32(1);
                            track.TramType    = (TramType)datareader.GetInt32(2);
                            track.Sectors     = new List <SectorDTO>();
                        }
                    }
                    conn.Close();
                }
            }
            return(track);
        }
Example #3
0
 public void Create(TrackDTO obj)
 {
     using (SqlConnection conn = new SqlConnection(DBConnection._connectionString))
     {
         throw new NotImplementedException();
     }
 }
Example #4
0
        public async Task <TrackResponse> Create([FromBody] TrackRequest newTrackRequest)
        {
            TrackDTO trackDTO        = autoMapper.Map <TrackDTO>(newTrackRequest);
            TrackDTO createdTrackDTO = await trackService.CreateAsync(trackDTO);

            return(autoMapper.Map <TrackResponse>(createdTrackDTO));
        }
        public IEnumerable <TrackDTO> GetAllTracks(DepotDTO depot)
        {
            List <TrackDTO> tracks = new List <TrackDTO>();

            using (SqlConnection conn = new SqlConnection(DBConnection._connectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand("SELECT dbo.Track.TrackNumber FROM dbo.Depot INNER JOIN dbo.Track ON dbo.Depot.Id = dbo.Track.DepotId;"))
                {
                    using (SqlDataReader dataReader = cmd.ExecuteReader())
                    {
                        while (dataReader.Read())
                        {
                            int      id          = dataReader.GetInt32(0);
                            int      trackNumber = dataReader.GetInt32(1);
                            TrackDTO track       = new TrackDTO
                            {
                                Id          = id,
                                TrackNumber = trackNumber
                            };
                            tracks.Add(track);
                        }
                    }
                }
            }
            return(tracks);
        }
Example #6
0
        public ICollection <TrackDTO> MapTracks(IEnumerable <Track> tracks)
        {
            ICollection <TrackDTO> trackDTOs = new LinkedList <TrackDTO>();
            TrackDTO trackDTO = null;

            foreach (var track in tracks)
            {
                trackDTO = new TrackDTO(track.Id, track.Title, track.Duration, track.ReleaseDate);

                foreach (var album in track.Albums)
                {
                    trackDTO.Albums.Add(new AlbumDetailDTO(album.Album.Title, album.Album.RecordLabel, album.Album.ReleaseDate));
                }

                foreach (var artist in track.Artists)
                {
                    trackDTO.Artists.Add(new ArtistDetailDTO(artist.Artist.Name, artist.Artist.Description, artist.Artist.Country, artist.Artist.YearActive));
                }

                foreach (var genre in track.Genres)
                {
                    trackDTO.Genres.Add(new GenreDetailDTO(genre.Genre.Type));
                }

                trackDTOs.Add(trackDTO);
            }

            return(trackDTOs);
        }
Example #7
0
 public async Task Update(TrackDTO obj)
 {
     using (_context)
     {
         _context.Update(obj);
         await _context.SaveChangesAsync();
     }
 }
Example #8
0
 public TrackDTO Read(int key)
 {
     using (_context)
     {
         TrackDTO track     = new TrackDTO();
         var      readtrack = _context.Track.FirstOrDefault(i => i.Id == key);
         return(track = _mapper.Map <TrackDTO>(readtrack));
     }
 }
 public void StoreTram(TramDTO tram, TrackDTO track)
 {
     foreach (SectorDTO sector in track.Sectors)
     {
         if (_sectorLogic.CheckIfSectorIsEmpty(sector))
         {
             _sectorLogic.AddTram(sector, tram);
             break;
         }
     }
 }
Example #10
0
    private void InstantiateMapObjects(TrackDTO mapDTO)
    {
        track.TrackObjectsParent.transform.DestroyChildren();

        foreach (var mapObjectDTO in mapDTO.MapObjects)
        {
            GameObject gameObj = ResourcesLoader.LoadTrackObject(mapObjectDTO.ID);
            gameObj.transform.SetParent(track.TrackObjectsParent.transform);

            Mapper.Map(mapObjectDTO, gameObj.GetComponent <TrackObject>());
        }
    }
        /// <summary>
        /// Registers the track name on the server and saves the name and Id to local settings.
        /// </summary>
        /// <param name="trackName"></param>
        public async static Task <string> RegisterExistingTrackOnStartup(string secret)
        {
            TrackDTO trackDTO = new TrackDTO()
            {
                Secret = secret, Length = 0f
            };
            string returnName = string.Empty;

            using (var httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                httpClient.Timeout = new TimeSpan(0, 0, 0, 20);
                var uri = new Uri($@"{AppManager.ServerHostURL}/api/Tracks/{secret}");

                try
                {
                    var response = await Task.Run(async() => await httpClient.GetAsync(uri));

                    if (response.IsSuccessStatusCode)
                    {
                        string content = await response.Content.ReadAsStringAsync();

                        trackDTO = await Json.ToObjectAsync <TrackDTO>(content);

                        if (trackDTO != null)
                        {
                            AppManager.Track = new Track()
                            {
                                Name   = trackDTO.Name,
                                Id     = trackDTO.Id,
                                Secret = trackDTO.Secret
                                         //                Length = (float)trackCompositeValue["Length"],
                                         //                MacAddress = (string)trackCompositeValue["MacAddress"],
                            };

                            localSettings.Values["TrackName"] = trackDTO.Name;
                            localSettings.Values["TrackId"]   = trackDTO.Id;
                            localSettings.Values["Secret"]    = trackDTO.Secret;
                            // TODO: trackCompositeValue["Length"] = length;
                            // TODO: trackCompositeValue["MacAddress"] = macAddress; https://stackoverflow.com/questions/34097870/c-sharp-get-mac-address-in-universal-apps

                            returnName = trackDTO.Name;
                        }
                    }
                }
                catch (Exception e)
                {
                }
            }

            return(returnName);
        }
Example #12
0
        public HttpResponseMessage ChangeTrack(int conferenceId, int id, [FromBody] TrackDTO data)
        {
            var session = SessionRepository.Instance.GetSession(conferenceId, id);

            if (session == null)
            {
                return(ServiceError("Can't find session"));
            }
            session.TrackId = data.newTrack;
            SessionRepository.Instance.UpdateSession(session.GetSessionBase(), UserInfo.UserID);
            return(Request.CreateResponse(HttpStatusCode.OK, SessionRepository.Instance.GetSession(session.ConferenceId, session.SessionId)));
        }
        /// <summary>
        /// Registers the track name on the server and saves the name and Id to local settings.
        /// </summary>
        /// <param name="trackName"></param>
        public async static Task <string> RegisterTrackOnStartup(string trackName, string email)
        {
            TrackDTO trackDTO = new TrackDTO()
            {
                Name = trackName, OwnerEmail = email, Length = 0f
            };
            string returnSecret = string.Empty;

            try
            {
                using (var httpClient = new HttpClient())
                {
                    httpClient.BaseAddress = new Uri(ServerHostURL);
                    httpClient.DefaultRequestHeaders.Accept.Clear();
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    httpClient.Timeout = new TimeSpan(0, 0, 0, 20);
                    string endpoint = @"/api/tracks";

                    HttpResponseMessage response = httpClient.PostAsJsonAsync(endpoint, trackDTO).Result;
                    if (response.IsSuccessStatusCode)
                    {
                        string jsonResponse = await response.Content.ReadAsStringAsync();

                        trackDTO = JsonConvert.DeserializeObject <TrackDTO>(jsonResponse);
                        if (trackDTO != null)
                        {
                            AppManager.Track = new Track()
                            {
                                Name   = trackDTO.Name,
                                Id     = trackDTO.Id,
                                Secret = trackDTO.Secret
                                         //                Length = (float)trackCompositeValue["Length"],
                                         //                MacAddress = (string)trackCompositeValue["MacAddress"],
                            };

                            localSettings.Values["TrackName"] = trackDTO.Name;
                            localSettings.Values["TrackId"]   = trackDTO.Id;
                            localSettings.Values["Secret"]    = trackDTO.Secret;
                            // TODO: trackCompositeValue["Length"] = length;
                            // TODO: trackCompositeValue["MacAddress"] = macAddress; https://stackoverflow.com/questions/34097870/c-sharp-get-mac-address-in-universal-apps

                            returnSecret = trackDTO.Secret;
                        }
                    }
                }
            }
            catch (Exception)
            {
            }

            return(returnSecret);
        }
        private bool CheckTramType(TramDTO tram, TrackDTO track)
        {
            return(true);

            if (tram.Type == track.TramType || track.TramType == null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #15
0
        public async Task <IHttpActionResult> PostTrack(TrackDTO trackDTO)
        {
            Track track = Mapper.Map <Track>(trackDTO);

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            track = await repo.Insert(track);

            return(CreatedAtRoute("DefaultApi", new { id = track.Id }, Mapper.Map <TrackDTO>(track)));
        }
Example #16
0
        public void AddTrackToGenre(long id, TrackDTO trackDTO)
        {
            var genre = GenreRepository.Get(id);

            if (genre == null)
            {
                throw new ArgumentException($"Genre {id} not found.");
            }
            var track = TrackRepository.Get(trackDTO.Id);

            genre.AddTrack(track);
            GenreRepository.UnitOfWork.SecondGenUnitOfWork.Commit();
        }
Example #17
0
    private void InstantiateCheckpoints(TrackDTO mapDTO)
    {
        track.LapTracker.transform.DestroyChildren();

        foreach (var checkpointDTO in mapDTO.Checkpoints)
        {
            GameObject gameObj = ResourcesLoader.LoadRoadObject("Checkpoint");
            gameObj.transform.SetParent(track.LapTracker.transform);

            Mapper.Map(checkpointDTO, gameObj.GetComponent <Checkpoint>());
            gameObj.GetComponent <Checkpoint>().SetOrder(gameObj.GetComponent <Checkpoint>().CheckpointOrder);
        }
    }
Example #18
0
        private TrackData Convert(TrackDTO dto)
        {
            var track = new TrackData(
                dto.ISRC,
                dto.Artist,
                dto.Title,
                dto.Album,
                dto.ReleaseYear,
                dto.TrackLengthSec,
                new SolrModelReference(dto.Id));

            return(track);
        }
        public void TrackDTO_Test()
        {
            // Act
            TrackDTO trackDTO  = Mapper.Map <TrackDTO>(track);
            Track    testTrack = Mapper.Map <Track>(trackDTO);

            // Assert
            Assert.AreEqual(track.Length, trackDTO.Length);
            Assert.AreEqual(track.Name, trackDTO.Name);

            Assert.AreEqual(track.Length, testTrack.Length);
            Assert.AreEqual(track.Name, testTrack.Name);
        }
        // Et enkelt track uploades til StreamingServeren
        private async Task UploadTrack(TrackDTO track, string accessToken)
        {
            var trackFolder = _watchedFolder + "/work/tracks/" + track.Id;
            var zipFilePath = trackFolder + ".zip";

            try
            {
                // Zip track-mappen
                ZipFile.CreateFromDirectory(trackFolder, zipFilePath);
            }
            catch (Exception ex)
            {
                Log(zipFilePath + " kunne ikke oprettes", true);
                throw ex;
            }

            // Opret HTTP-klient
            var uploadClient = new HttpClient();

            // Access token sættes som authorization header
            uploadClient.SetBearerToken(accessToken);

            // Nyt HTTP-formular-dataindhold oprettes
            var form = new MultipartFormDataContent();

            // Zip-files indlæses som byte-array
            var fileContent = new ByteArrayContent(await File.ReadAllBytesAsync(zipFilePath));

            // Filheader sættes
            fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");

            // Fil tilføjes til formular-data med navnet 'file'
            form.Add(fileContent, "file", Path.GetFileName(zipFilePath));

            // Streamingserver-url hentes fra environment-variabel
            var streamingServerUrl = Environment.GetEnvironmentVariable("STREAMING_SERVER");

            // Data sendes til StreamingServer med POST
            var response = await uploadClient.PostAsync(streamingServerUrl, form);

            // Tjek om det gik godt
            if (!response.IsSuccessStatusCode)
            {
                Log(zipFilePath + " kunne ikke uploades til streamingserveren.", true);
                throw new Exception();
            }
            else
            {
                Log(track.Number + ".wav blev uploadet");
            }
        }
        public static void AllocateToRandomTrack(TramDTO tram, List <TrackDTO> tracks, Track _Tracklogic)
        {
            bool tramIsStored = false;

            do
            {
                TrackDTO randomTrack = _Tracklogic.GetRandomTrack(tracks);
                if (_Tracklogic.CheckTramCanBeStored(tram, randomTrack))
                {
                    _Tracklogic.StoreTram(tram, randomTrack);
                    tramIsStored = true;
                }
            } while (tramIsStored == false);
        }
        public void TestThatThereIsAlways1()
        {
            TrackDTO dto = new TrackDTO()
            {
                Id = 42
            };
            var mock = new Mock <ITrackRepository>();

            mock.Setup(a => a.Find(42)).ReturnsAsync(dto);
            var view = new TrackPageViewModel(mock.Object);

            view.EmptyAndAdd(42);
            Assert.True(view.Track.Count() == 1);
        }
        public void TheElementGetsAdded()
        {
            TrackDTO dto = new TrackDTO()
            {
                Id = 42
            };
            var mock = new Mock <ITrackRepository>();

            mock.Setup(a => a.Find(42)).ReturnsAsync(dto);
            var view = new TrackPageViewModel(mock.Object);

            view.EmptyAndAdd(42);
            Assert.True(view.Track.First().Id == 42);
        }
Example #24
0
        public async void getGivenExistingIDReturnsTrack()
        {
            var TrackDTO = new TrackDTO()
            {
                Id = 42
            };
            var mockRepository = new Mock <ITrackRepository>();

            mockRepository.Setup(a => a.Find(42)).ReturnsAsync(TrackDTO);
            var controller = new TracksController(mockRepository.Object);
            var response   = await controller.Get(42) as OkObjectResult;

            Assert.Equal(TrackDTO, response.Value);
        }
        // Her transkodes et enkelt track
        private void TranscodeTrack(string packageRoot, TrackDTO track)
        {
            var trackPath = packageRoot + "/data/" + track.Number + ".wav";

            Log("Transkodning af " + track.Number + ".wav" + " påbegyndt ...");

            try
            {
                // Vi opretter en specifik mappe til dette track
                var singleTrackDirectory = Directory.CreateDirectory(_watchedFolder + "/work/tracks/" + track.Id);

                // FFmpeg-kommando konstrueres
                var cmdText = "-i \"" + trackPath +
                              "\" -c:a aac -b:a:0 128k -b:a:1 256k -map 0:a -map 0:a -f hls -hls_time 15 -hls_list_size 0 -var_stream_map \"a:0 a:1\"" +
                              " -master_pl_name " + track.Id + ".m3u8 -hls_segment_filename " + singleTrackDirectory.FullName + "/" + track.Id + "_v%v/%03d.ts " +
                              singleTrackDirectory.FullName + "/" + track.Id + "_v%v/output.m3u8";

                // En ny FFmpeg-proces defineres
                var process = new Process()
                {
                    StartInfo = new ProcessStartInfo
                    {
                        FileName  = "/Users/nikolajstrands/IT/Afgangsprojekt/IngestApp/ffmpeg",
                        Arguments = cmdText,
                        RedirectStandardOutput = true,
                        RedirectStandardError  = true,
                        UseShellExecute        = false,
                        CreateNoWindow         = true,
                    }
                };

                // Processen startes
                process.Start();
                string errorOutput    = process.StandardError.ReadToEnd();
                string standardOutput = process.StandardOutput.ReadToEnd();

                process.WaitForExit();
                if (process.ExitCode != 0)
                {
                    throw new Exception();
                }

                Log("Transkodning af " + track.Number + ".wav" + " afsluttet");
            }
            catch (Exception ex)
            {
                Log("Noget gik galt under transkodning af " + trackPath, true);
                throw ex;
            }
        }
Example #26
0
        public TrackDTO GetTrackerReport()
        {
            TrackDTO trackDTO = null;

            using (var unitOfWork = new UnitOfWork(new WorkoutTrackerContext()))
            {
                trackDTO = new TrackDTO();
                var wtDs = unitOfWork.WorkoutActive.GetTotalWorkoutTimesReport();

                if (wtDs != null && wtDs.Tables.Count > 0)
                {
                    trackDTO.TotalWorkoutTimeOfDay   = wtDs.Tables[0].Rows.Count > 0 ? Convert.ToInt32(wtDs.Tables[0].Rows[0]["TotalTimeInMinutes"]) : 0;
                    trackDTO.TotalWorkoutTimeOfWeek  = wtDs.Tables[1] != null && wtDs.Tables[1].Rows.Count > 0 ? Convert.ToInt32(wtDs.Tables[1].Rows[0]["TotalTimeInMinutes"]) : 0;
                    trackDTO.TotalWorkoutTimeOfMonth = wtDs.Tables[2] != null && wtDs.Tables[2].Rows.Count > 0 ? Convert.ToInt32(wtDs.Tables[2].Rows[0]["TotalTimeInMinutes"]) : 0;
                }

                var dataSet = unitOfWork.WorkoutActive.GetTotalCaloriesReport();
                if (dataSet != null && dataSet.Tables.Count > 0)
                {
                    DataTable dt = dataSet.Tables[0];
                    trackDTO.TotalCaloriesBurntPerWeek = dt.AsEnumerable()
                                                         .Select(row => new TotalCalories()
                    {
                        Duration = Convert.ToString(row["Duration"]), TotalCaloriesBurnt = Convert.ToString(row["TotalCaloriesBurnt"])
                    });

                    if (dataSet.Tables.Count > 1)
                    {
                        dt = dataSet.Tables[1];
                        trackDTO.TotalCaloriesBurntPerMonth = dt.AsEnumerable()
                                                              .Select(row => new TotalCalories()
                        {
                            Duration = Convert.ToString(row["Duration"]), TotalCaloriesBurnt = Convert.ToString(row["TotalCaloriesBurnt"])
                        });
                    }

                    if (dataSet.Tables.Count > 2)
                    {
                        dt = dataSet.Tables[2];
                        trackDTO.TotalCaloriesBurntPerYear = dt.AsEnumerable()
                                                             .Select(row => new TotalCalories()
                        {
                            Duration = Convert.ToString(row["Duration"]), TotalCaloriesBurnt = Convert.ToString(row["TotalCaloriesBurnt"])
                        });
                    }
                }
            }

            return(trackDTO);
        }
Example #27
0
        public void lineUpThenCurveRight_producesCorrectSpline()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 3, 0)),
                new TrackNodeDTO(null, new Vector3(3, 3, 0))
            });

            BezierSpline spline = GetSplineNoSplits(trackDto, 0, 0);
            Assert.That(spline.pts.Length, Is.EqualTo(3));
            AssertSplinePt(spline.pts[0], new Vector3(0.5f, 0, 0.5f), new Vector3(0.5f, 3, 0.5f));
            AssertSplinePt(spline.pts[1], new Vector3(0.5f, 3, 0.5f), new Vector3(1, 3.5f, 0.5f));
            AssertSplinePt(spline.pts[2], new Vector3(1, 3.5f, 0.5f), new Vector3(3, 3.5f, 0.5f));
        }
Example #28
0
 public void Update(TrackDTO obj)
 {
     using (SqlConnection conn = new SqlConnection(DBConnection._connectionString))
     {
         using (SqlCommand cmd = new SqlCommand($"UPDATE Track SET [PreferedTramType] = @TramType WHERE [Id] = @Id", conn))
         {
             conn.Open();
             cmd.Parameters.AddWithValue("@Id", obj.Id);
             cmd.Parameters.AddWithValue("@TramType", obj.TramType);
             cmd.ExecuteNonQuery();
             conn.Close();
         }
     }
 }
Example #29
0
        public IActionResult AddTrackToAlbum(long id, [FromBody] TrackDTO trackDTO)
        {
            try
            {
                AlbumService.AddTrackToAlbum(id, trackDTO);
            }
            catch (ArgumentException e)
            {
                log.LogError("The album with the id :" + id + " does not exist." + e.Message);
                return(NotFound(StatusCodes.Status404NotFound));
            }

            return(Ok(StatusCodes.Status200OK));
        }
Example #30
0
    public TrackDTO LoadWorld(string name)
    {
        var trackPath = directoryHelper.GetTrackPath(name);

        XmlSerializer serializer = new XmlSerializer(typeof(TrackDTO));

        TrackFileCompressor trackCompressor          = new TrackFileCompressor();
        TrackData           decompressedTrackStreams = trackCompressor.DecompressPackage(trackPath);
        TrackDTO            mapObject = (TrackDTO)serializer.Deserialize(new MemoryStream(decompressedTrackStreams.ObjectsData));

        track.Terrain.terrainData.SetHeights(0, 0, terrainSerializer.DeserializeHeightMap(decompressedTrackStreams.HeightMapData, track.HeightMapSize));
        track.Terrain.terrainData.SetAlphamaps(0, 0, terrainSerializer.DeserializeTextureMap(decompressedTrackStreams.TextureMapData, track.TextureMapSize));

        return(mapObject);
    }
Example #31
0
    private byte[] SerializeMap(string name)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            TrackDTO      mapDTO     = Mapper.Map <Track, TrackDTO>(track);
            XmlSerializer serializer = new XmlSerializer(typeof(TrackDTO));

            using (StreamWriter writer = new StreamWriter(name + Track_File_Extension, false, Encoding.GetEncoding("UTF-8")))
            {
                serializer.Serialize(writer, mapDTO);
            }

            return(ms.GetBytes());
        }
    }
        public void oneTrackCurve_splitTwice_threeCorrectSubtracks()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 3, 0)),
                new TrackNodeDTO(null, new Vector3(3, 3, 0))
            });

            IList<SubTrack> subTracks = splitter.SplitTrack(trackDto, new Split[] {
                new Split("split_id", Vector3.up, new Vector3(), 2, new SubSplit[0]),
                new Split("split_id", Vector3.right, new Vector3(), 2, new SubSplit[0]) }).SubTracks;

            Assert.That(subTracks.Count, Is.EqualTo(3));
            AssertSubtrackContainsNodes(subTracks[0], 0, new Vector3[] { new Vector3(0, 0, 0), new Vector3(0, 2, 0) });
            AssertSubtrackContainsNodes(subTracks[1], 0, new Vector3[] { new Vector3(0, 2, 0), new Vector3(0, 3, 0), new Vector3(0, 3, 0), new Vector3(2, 3, 0) });
            AssertSubtrackContainsNodes(subTracks[2], 0, new Vector3[] { new Vector3(2, 3, 0), new Vector3(3, 3, 0) });
        }
        public void ImmediateCurveToRight()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, Vector3.up, new[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(3, 0, 0)),
            });

            IList<SubTrack> subTracks = splitter.SplitTrack(trackDto, new Split[0]).SubTracks;

            Assert.That(FirstPart(subTracks)[0].position, Is.EqualTo(new Vector3(0, 0, 0)));
            Assert.That(FirstPart(subTracks)[0].forward, Is.EqualTo(Vector3.up));

            Assert.That(FirstPart(subTracks)[1].position, Is.EqualTo(new Vector3(0, 0, 0)));
            Assert.That(FirstPart(subTracks)[1].forward, Is.EqualTo(Vector3.right));

            Assert.That(FirstPart(subTracks)[2].position, Is.EqualTo(new Vector3(3, 0, 0)));
            Assert.That(FirstPart(subTracks)[2].forward, Is.EqualTo(Vector3.right));
        }
Example #34
0
        public void curveAdjacentToSplit_doesNotAddCurveEndPosTwice()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.left, null, new[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 1, 0)),
                new TrackNodeDTO(null, new Vector3(3, 1, 0))
            });

            BezierSpline[][] splines = GetSplinesWithSplits(trackDto, new[]{
                new Split("split_id", Vector3.right, new Vector3(), 1, new SubSplit[0]),
            });

            Assert.That(splines.Length, Is.EqualTo(2));
            Assert.That(splines[0][0].pts.Length, Is.EqualTo(2));
            AssertSplinePt(splines[0][0].pts[0], new Vector3(0.5f, 0, 0.5f), new Vector3(0.5f, 1, 0.5f));
            AssertSplinePt(splines[0][0].pts[1], new Vector3(0.5f, 1, 0.5f), new Vector3(1, 1.5f, 0.5f));

            Assert.That(splines[1][0].pts.Length, Is.EqualTo(1));
            AssertSplinePt(splines[1][0].pts[0], new Vector3(1, 1.5f, 0.5f), new Vector3(3, 1.5f, 0.5f));
        }
        public void splitBetweenBothNodes_addsOneIntersectNodeBetweenBoth()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.left, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 4, 0))
            });

            IList<SubTrack> subTracks = splitter.SplitTrack(trackDto, new Split[]{
                new Split("", Vector3.up, new Vector3(), 2, new SubSplit[0])
            }).SubTracks;

            Assert.That(FirstPart(subTracks).NumTrackNodes, Is.EqualTo(2));
            Assert.That(SecondPart(subTracks).NumTrackNodes, Is.EqualTo(2));

            Assert.That(FirstPart(subTracks)[1], Is.EqualTo(SecondPart(subTracks)[0])); // assert that both intersecting NodesDto are the same
            Assert.That(FirstPart(subTracks)[0].next, Is.EqualTo(FirstPart(subTracks)[1])); // assert that first node leads to intersecting node

            Assert.That(FirstPart(subTracks)[1].next, Is.EqualTo(SecondPart(subTracks)[1])); // assert that intersecting node leads to last node
            Assert.That(FirstPart(subTracks)[1].previous, Is.EqualTo(FirstPart(subTracks)[0])); // assert that intersecting node leads to previous node

            Assert.That(SecondPart(subTracks)[1].previous, Is.EqualTo(SecondPart(subTracks)[0])); // assert that last node leads to intersecting node
        }
Example #36
0
        public void withOffset_and_twoYAlignedNodesFacingForward_movesTrackForward()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 3, 0))
            });

            config.curveOffset = 0.25f;
            BezierSpline spline = GetSplineNoSplits(trackDto, 0, 0);
            AssertSplinePt(spline.pts[0], new Vector3(0.5f, 0, 0.75f), new Vector3(0.5f, 3, 0.75f));
        }
Example #37
0
        public void withOffset_and_singleCurveRightFacingLeft_movesTrackCorrectly()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.left, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 2, 0)),
                new TrackNodeDTO(null, new Vector3(2, 2, 0))
            });

            config.curveOffset = 0.25f;
            BezierSpline spline = GetSplineNoSplits(trackDto, 0, 0);
            Assert.That(spline.pts.Length, Is.EqualTo(3));
            AssertSplinePt(spline.pts[0], new Vector3(0.25f, 0, 0.5f), new Vector3(0.25f, 2, 0.5f));
            AssertSplinePt(spline.pts[1], new Vector3(0.25f, 2, 0.5f), new Vector3(1, 2.75f, 0.5f));
            AssertSplinePt(spline.pts[2], new Vector3(1, 2.75f, 0.5f), new Vector3(2, 2.75f, 0.5f));
        }
Example #38
0
        public void twoConsecutiveCurves_producesCorrectSpline()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 2, 0)),
                new TrackNodeDTO(null, new Vector3(1, 2, 0)),
                new TrackNodeDTO(null, new Vector3(1, 3, 0))
            });

            BezierSpline spline = GetSplineNoSplits(trackDto, 0, 0);
            Assert.That(spline.pts.Length, Is.EqualTo(3));
            AssertSplinePt(spline.pts[0], new Vector3(0.5f, 0, 0.5f), new Vector3(0.5f, 2, 0.5f));
            AssertSplinePt(spline.pts[1], new Vector3(0.5f, 2, 0.5f), new Vector3(1, 2.5f, 0.5f));
            AssertSplinePt(spline.pts[2], new Vector3(1, 2.5f, 0.5f), new Vector3(1.5f, 3f, 0.5f));
        }
Example #39
0
 private BezierSpline[][] GetSplinesWithSplits(TrackDTO trackDto, Split[] splits)
 {
     SplitTrack splitTrack = splitter.SplitTrack(trackDto, splits);
     return splitTrack.SubTracks.Select(subTrack => splineGenerator.GenerateSplines(splitTrack, subTrack)).ToArray();
 }
Example #40
0
        public void twoZAlignedNodes_producesZLineBetween()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 0, 3))
            });

            BezierSpline spline = GetSplineNoSplits(trackDto, 0, 0);
            Assert.That(spline.pts.Length, Is.EqualTo(1));
            AssertSplinePt(spline.pts[0], new Vector3(0.5f, 0.5f, 0), new Vector3(0.5f, 0.5f, 3));
        }
        public void TrackCurvesRight_forwardAndBackValuesAreSetCorrectly()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.left, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 4, 0)),
                new TrackNodeDTO(null, new Vector3(4, 4, 0))
            });

            IList<SubTrack> subTracks = splitter.SplitTrack(trackDto, new Split[]{ new Split("", Vector3.up, new Vector3(), 3, new SubSplit[0])}).SubTracks;

            Assert.That(FirstPart(subTracks)[0].forward, Is.EqualTo(Vector3.up));
            Assert.That(FirstPart(subTracks)[1].forward, Is.EqualTo(Vector3.up));
            Assert.That(SecondPart(subTracks)[0].forward, Is.EqualTo(Vector3.up));
            Assert.That(SecondPart(subTracks)[1].forward, Is.EqualTo(Vector3.up));
            Assert.That(SecondPart(subTracks)[2].forward, Is.EqualTo(Vector3.right));
            Assert.That(SecondPart(subTracks)[3].forward, Is.EqualTo(Vector3.right));
        }
Example #42
0
        public void withOffset_and_twoXAlignedNodesFacingUpward_movesTrackUpward()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.up, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(3, 0, 0))
            });

            config.curveOffset = 0.25f;
            BezierSpline spline = GetSplineNoSplits(trackDto, 0, 0);
            Assert.That(spline.pts.Length, Is.EqualTo(1));
            AssertSplinePt(spline.pts[0], new Vector3(0, 0.75f, 0.5f), new Vector3(3, 0.75f, 0.5f));
        }
        public void trackDoublesBack_createsTwoSubTracks()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(4, 0, 0)),
                new TrackNodeDTO(null, new Vector3(4, 1, 0)),
                new TrackNodeDTO(null, new Vector3(0, 1, 0))
            });

            IList<SubTrack> subTracks = splitter.SplitTrack(trackDto, new Split[]{
                new Split("split_id", Vector3.right, new Vector3(), 2, new SubSplit[0])
            }).SubTracks;

            Assert.That(subTracks.Count, Is.EqualTo(2));
            AssertSubtrackContainsNodes(subTracks[0], 0, new [] { new Vector3(0, 0, 0), new Vector3(2, 0, 0) });
            AssertSubtrackContainsNodes(subTracks[1], 0, new [] { new Vector3(2, 0, 0), new Vector3(4, 0, 0), new Vector3(4, 0, 0), new Vector3(4, 1, 0), new Vector3(4, 1, 0), new Vector3(1, 1, 0) });
            AssertSubtrackContainsNodes(subTracks[0], 1, new [] { new Vector3(1, 1, 0), new Vector3(0, 1, 0) });
        }
        public void trackCurvesRight_nextAndPreviousSetCorrectlyForCurveNodes()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.left, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 4, 0)),
                new TrackNodeDTO(null, new Vector3(4, 4, 0))
            });

            IList<SubTrack> subTracks = splitter.SplitTrack(trackDto, new Split[0]).SubTracks;
            Assert.That(FirstPart(subTracks)[0].next, Is.EqualTo(FirstPart(subTracks)[1]));
            Assert.That(FirstPart(subTracks)[1].next, Is.EqualTo(FirstPart(subTracks)[2]));
            Assert.That(FirstPart(subTracks)[2].next, Is.EqualTo(FirstPart(subTracks)[3]));

            Assert.That(FirstPart(subTracks)[1].previous, Is.EqualTo(FirstPart(subTracks)[0]));
            Assert.That(FirstPart(subTracks)[2].previous, Is.EqualTo(FirstPart(subTracks)[1]));
            Assert.That(FirstPart(subTracks)[3].previous, Is.EqualTo(FirstPart(subTracks)[2]));
        }
        public void twoYAlignedNodes_splitXBetween_twoCorrectSubTracks()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(4, 0, 0))
            });

            Split[] splits = { new Split("split_1", Vector3.right, new Vector3(), 2, new SubSplit[0]) };
            IList<SubTrack> subTracks = splitter.SplitTrack(trackDto, splits).SubTracks;

            AssertSubtrackContainsNodes(subTracks[0], 0, new Vector3[] { new Vector3(0, 0, 0), new Vector3(2, 0, 0) });
            AssertSubtrackContainsNodes(subTracks[1], 0, new Vector3[] { new Vector3(2, 0, 0), new Vector3(4, 0, 0) });
        }
        public void twoXAlignedNodes_splitYAboveBoth_oneSubtrackContainingBothNodes()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, null, new TrackNodeDTO[]{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 4, 0))
            });
            IList<SubTrack> subTracks = splitter.SplitTrack(trackDto, new Split[] { new Split("split_id", Vector3.up, new Vector3(), 5, new SubSplit[0]) }).SubTracks;

            Assert.That(subTracks.Count, Is.EqualTo(1));
            AssertSubtrackContainsNodes(subTracks[0], 0, new Vector3[] { new Vector3(0, 0, 0), new Vector3(0, 4, 0) });
        }
Example #47
0
 private BezierSpline GetSplineNoSplits(TrackDTO trackDto, int subTrackIdx, int groupIdx)
 {
     SplitTrack splitTrack = splitter.SplitTrack(trackDto, new Split[0]);
     return splineGenerator.GenerateSplines(splitTrack, splitTrack.SubTracks[subTrackIdx])[groupIdx];
 }
        public void SplitsAtSamePointAsLastNode()
        {
            TrackDTO trackDto = new TrackDTO("id", Vector3.forward, Vector3.up, new []{
                new TrackNodeDTO(null, new Vector3(0, 0, 0)),
                new TrackNodeDTO(null, new Vector3(0, 3, 0)),
            });

            IList<SubTrack> subTracks = splitter.SplitTrack(trackDto, new []{
                new Split("", Vector3.up, new Vector3(), 3, new SubSplit[0])
            }).SubTracks;

            Assert.That(subTracks.Count, Is.EqualTo(1));
        }