示例#1
0
        public void CreateMarker()
        {
            try
            {
                GameObject prefab = Resources.Load($"Prefabs/Marker") as GameObject;
                CurrentMarker = Instantiate(prefab);

                var newMarker = new Marker()
                {
                    Previous = (MarkerList != null && MarkerList.Count > 0) ? MarkerList.Last() : null,
                    Position = CurrentMarker.transform.position,
                };

                MarkerList.Add(newMarker);
                shouldUpdateMovingSegmentLine = true;

                if (MarkerList.Count > 1)
                {
                    BuildSegmentLine(PreviousMarker.transform.position, CurrentMarker.transform.position);
                }

                shouldUpdateMetrics = true;
            }
            catch (Exception ex)
            {
                debugText.text = $"{ex.Message}";
            }
        }
示例#2
0
        public void FinishAddingMarkers()
        {
            try
            {
                shouldUpdateMetrics           = false;
                shouldUpdateMovingSegmentLine = false;

                var lastMarker = new Marker()
                {
                    Previous = MarkerList.Last(),
                    Position = MarkerList.First().Position,
                };

                Vector3 initialPos = MarkerList.Last().Position;
                Vector3 finalPos   = MarkerList.First().Position;

                perimeterDistance += Vector3.Distance(finalPos, initialPos);
                debugText.text     = perimeterDistance > 1 ? $"\n TOTAL: {Math.Round(perimeterDistance, 2)} mts." : $"\n TOTAL: {Math.Round(perimeterDistance, 2) * 100} cms.";

                BuildSegmentLine(initialPos, finalPos);
                movingSegmentLine.SetActive(false);

                MarkerList.Add(lastMarker);
                CreateMesh();
            }
            catch (Exception ex)
            {
                debugText.text = ex.Message;
            }
        }
示例#3
0
 public void TestTranslateCaption01()
 {
     using (MarkerList markerList = MarkerListFactory.CreateMarkerList01())
     {
         markerList.TranslateCaption();
     }
 }
示例#4
0
 public void TestInitializeDataMarkerListDataGridView01()
 {
     using (MarkerList markerList = MarkerListFactory.CreateMarkerList01())
     {
         Accessor markerListAccessor = ReflectionAccessor.Wrap(markerList);
         markerListAccessor.Call("InitializeDataMarkerListDataGridView");
     }
 }
示例#5
0
 public void TestPopulateDataMarkerListDataGridView01()
 {
     using (MarkerList markerList = MarkerListFactory.CreateMarkerList01())
     {
         int mode = 1;
         markerList.PopulateDataMarkerListDataGridView(mode);
     }
 }
示例#6
0
 public void TestInitializeComponent01()
 {
     using (MarkerList markerList = MarkerListFactory.CreateMarkerList01())
     {
         Accessor markerListAccessor = ReflectionAccessor.Wrap(markerList);
         markerListAccessor.Call("InitializeComponent");
     }
 }
示例#7
0
 public void TestDispose01()
 {
     using (MarkerList markerList = MarkerListFactory.CreateMarkerList01())
     {
         bool     disposing          = false;
         Accessor markerListAccessor = ReflectionAccessor.Wrap(markerList);
         markerListAccessor.Call("Dispose", disposing);
     }
 }
示例#8
0
        private static string GenerateMarkerId(MarkerList markers, string markerId)
        {
            int    c  = 1;
            string id = markerId;

            while (markers.Any(i => i.Id == id))
            {
                id = markerId + c;
                c++;
            }
            return(id);
        }
示例#9
0
        public void FixtureSetUp()
        {
            markerList = new MarkerList();
            MarkerListController ctl = new MarkerListController();

            ctl.initMarkerTable();

            List <EtyMarker> list = new List <EtyMarker>();

            ctl.SetMarkerTable(list);
            ctl.SetGrpName("Test_GrpName");

            markerList.AttachController(ctl);
            ctl.AttachCallBack(null, markerList);
        }
示例#10
0
        private async Task SetMarkerListeners()
        {
            if (_listeningLoneMarkerKeys == null)
            {
                _listeningLoneMarkerKeys = new List <string>();
            }

            //use GetMappedValue<T> to map and extract the array of guid keys of unclustered markers
            GoogleMapsComponents.JsObjectRef jsRef = new GoogleMapsComponents.JsObjectRef(JsObjectRef, _markerClustering.Guid);
            var guidStrings = (await jsRef.GetMappedValue <List <string> >("clusters", "marker", "guidString"))
                              .Where((x) => { return(x != null); });

            if (!guidStrings.Any())
            {
                return;
            }

            // Among markers not in clusters, find those which don't yet have a listener
            MarkerList deafLoneMarkersList = await MarkerList.CreateAsync(JsObjectRef, new Dictionary <string, MarkerOptions>());

            foreach (var key in guidStrings)
            {
                var markr = markers.First(x => key == x.Guid.ToString());
                if (_listeningLoneMarkerKeys.Contains(key))
                {
                    continue;
                }
                deafLoneMarkersList.BaseListableEntities.Add(key, markr);
                _listeningLoneMarkerKeys.Add(key);
            }

            if (!deafLoneMarkersList.BaseListableEntities.Any())
            {
                return;
            }

            await deafLoneMarkersList.AddListeners <MouseEvent>(deafLoneMarkersList.Markers.Keys.ToList(), "click", async (o, e) =>
            {
                //await JsObjectRef.InvokeVoidAsync("loneMarkerClickEvent", e);
            });

            // if all points set, clean up idle listener.
            if (_listeningLoneMarkerKeys.Count == markers.Count)
            {
                _listeningLoneMarkerKeys = null;
                await _markerClustering.ClearListeners("clusteringend");
            }
        }
示例#11
0
        private void ShiftTimeMarker(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedItems.Count == 1 &&
                GetDataGrid().SelectedItems[0].Tag is Game.Marker)
            {
                var mi    = (ToolStripMenuItem)sender;
                var shift = Convert.ToInt32(mi.Tag);

                foreach (ListViewItem row in GetDataGrid().SelectedItems)
                {
                    var mki = (Game.Marker)row.Tag;
                    Log.Write("MANUAL SHIFT TIME BEFORE " + mki.ToString());
                    mki.TimeVideo += shift;
                    mki.FlagUpdate = true;
                    mki.row        = null;
                    Log.Write("MANUAL SHIFT TIME AFTER " + mki.ToString());
                }

                /*Marker mk = (Game.Marker)GetDataGrid().SelectedItems[0].Tag;
                 * List<Marker> sibl = new List<Marker>();
                 * if (mk.ActionId == 14)
                 *  sibl.Add(mk);
                 * else
                 *  sibl = game.GetSiblings(mk);
                 *
                 * int shift = Convert.ToInt32(mi.Tag);
                 *
                 * foreach (Game.Marker mki in sibl)
                 * {
                 *  Log.Write("MANUAL SHIFT TIME BEFORE " + mki.ToString());
                 *  mki.TimeVideo += shift;
                 *  mki.FlagUpdate = true;
                 *  mki.row = null;
                 *  Log.Write("MANUAL SHIFT TIME AFTER " + mk.ToString());
                 * }*/

                lock (game.Markers)
                {
                    MarkerList.SaveToFile(game.Match.Id, game.Markers);
                }

                lock (game.Markers)
                    game.RecalcActualTime(game.Markers, game.Half);

                ReloadDataGridView(true);
            }
        }
示例#12
0
        private async Task AddMarkersGroup(IEnumerable <LatLngLiteral> coordinates)
        {
            if (_markerList == null)
            {
                _markerList = await MarkerList.CreateAsync(
                    map1.JsRuntime,
                    coordinates.ToDictionary(s => Guid.NewGuid().ToString(), y => new MarkerOptions()
                {
                    Position = new LatLngLiteral()
                    {
                        Lng = y.Lng, Lat = y.Lat
                    },
                    Map = map1.InteropObject,
                    //Icon = new Icon() { Url = s.MarkerIconPath, ScaledSize = iconSize, Anchor = iconAnchor },
                    Clickable = true,
                    Title     = Guid.NewGuid().ToString(),
                    Visible   = true
                })
                    );
            }
            else
            {
                var cordDic = coordinates.ToDictionary(s => Guid.NewGuid().ToString(), y => new MarkerOptions()
                {
                    Position = new LatLngLiteral()
                    {
                        Lng = y.Lng, Lat = y.Lat
                    },
                    Map = map1.InteropObject,
                    //Icon = new Icon() { Url = s.MarkerIconPath, ScaledSize = iconSize, Anchor = iconAnchor },
                    Clickable = true,
                    Title     = Guid.NewGuid().ToString(),
                    Visible   = true
                });

                await _markerList.AddMultipleAsync(cordDic);
            }


            foreach (var latLngLiteral in coordinates)
            {
                await bounds.Extend(latLngLiteral);
            }


            await FitBounds();
        }
示例#13
0
        IEnumerator UpdateMovingSegmentLine()
        {
            // segment line
            var finalPos   = planeFinder.GetComponent <PlaneFinderBehaviour>().PlaneIndicator.transform.localPosition;
            var initialPos = MarkerList.Last().Position;

            Vector3 between  = finalPos - initialPos;
            float   distance = between.magnitude;

            movingSegmentLine.transform.localScale = new Vector3(0.01f, 0.01f, distance);
            var pos = initialPos + (between / 2);

            movingSegmentLine.transform.position = pos;
            movingSegmentLine.transform.LookAt(finalPos);

            yield return(new WaitForSeconds(.1f));
        }
示例#14
0
        private void ChangeToPickUp2(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedItems.Count == 1 &&
                GetDataGrid().SelectedItems[0].Tag is Game.Marker)
            {
                var    mi = (ToolStripMenuItem)sender;
                Marker mk = (Game.Marker)GetDataGrid().SelectedItems[0].Tag;
                mk.ActionId   = 2;
                mk.ActionType = 4;
                mk.FlagUpdate = true;

                lock (game.Markers)
                {
                    MarkerList.SaveToFile(game.Match.Id, game.Markers);
                }

                UpdateGridView((Game.Marker)mk);
            }
        }
示例#15
0
        private void InsertPickUp(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedItems.Count == 1 &&
                GetDataGrid().SelectedItems[0].Tag is Game.Marker)
            {
                var    mi = (ToolStripMenuItem)sender;
                Marker mk = (Game.Marker)GetDataGrid().SelectedItems[0].Tag;
                game.Insert(new Game.Marker(game, 2, 5, mk.Half, mk.TimeVideo)
                {
                    Player1 = mk.Player1
                });

                lock (game.Markers)
                {
                    MarkerList.SaveToFile(game.Match.Id, game.Markers);
                }

                ReloadDataGridView(true);
            }
        }
示例#16
0
 private DeleteMarker(MarkerList list, Marker marker)
 {
     List   = list;
     Marker = marker;
 }
示例#17
0
        public ActionResult GetMarkers()
        {
            MarkerList markers = GetMarkersObjects();

            return(Json(markers, JsonRequestBehavior.AllowGet));
        }
示例#18
0
        private void CorrectMarkerChangedPlayers(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedItems.Count == 1 &&
                GetDataGrid().SelectedItems[0].Tag is Game.Marker &&
                ((Game.Marker)GetDataGrid().SelectedItems[0].Tag).ActionId == 14 &&
                ((Game.Marker)GetDataGrid().SelectedItems[0].Tag).Player1 != null &&
                ((Game.Marker)GetDataGrid().SelectedItems[0].Tag).Player2 != null)
            {
                Marker mk  = (Game.Marker)GetDataGrid().SelectedItems[0].Tag;
                Marker mki = new Game.Marker(game);
                mki.Assign(mk);

                Marker mk1 = null;
                if (mk.player2_id > 0 && game.Markers.Any(o =>
                                                          !o.FlagDel && o.Half.Index == mk.Half.Index && o.TimeVideo < mk.TimeVideo &&
                                                          o.ActionId == 14 && o.player1_id == mk.player2_id))
                {
                    mk1 = game.Markers.Where(o =>
                                             !o.FlagDel && o.Half.Index == mk.Half.Index && o.TimeVideo < mk.TimeVideo &&
                                             o.ActionId == 14 && o.player1_id == mk.player2_id)
                          .OrderByDescending(o => o.TimeVideo).First();
                }

                Marker mk2 = null;
                if (mk.player1_id > 0 && game.Markers.Any(o =>
                                                          !o.FlagDel && o.Half.Index == mk.Half.Index && o.TimeVideo > mk.TimeVideo &&
                                                          o.ActionId == 14 && o.player2_id == mk.player1_id))
                {
                    mk2 = game.Markers.Where(o =>
                                             !o.FlagDel && o.Half.Index == mk.Half.Index && o.TimeVideo > mk.TimeVideo &&
                                             o.ActionId == 14 && o.player2_id == mk.player1_id)
                          .OrderBy(o => o.TimeVideo).First();
                }

                var form = new CorrectChangedPlayersMarkerForm(game, mki, mk1, mk2);
                if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    Log.Write("MANUAL CORRECT BEFORE " + mk.ToString());

                    var time_up = mki.TimeVideo != mk.TimeVideo;

                    var team = mk.Player1 != null
                        ? mk.Team1 : mk.Team2;;

                    if (mk1 != null)
                    {
                        if (mk1.Player1 != mki.Player2)
                        {
                            mk1.Player1       = mki.Player2;
                            mk1.FlagUpdate    = true;
                            mk1.FlagGuiUpdate = true;
                            UpdateGridView((Game.Marker)mk1);
                        }
                    }

                    if (mk2 != null)
                    {
                        if (mk2.Player2 != mki.Player1)
                        {
                            mk2.Player2       = mki.Player1;
                            mk2.FlagUpdate    = true;
                            mk2.FlagGuiUpdate = true;
                            UpdateGridView((Game.Marker)mk2);
                        }
                    }

                    mk.Assign(mki);
                    mk.FlagUpdate    = true;
                    mk.FlagGuiUpdate = true;
                    UpdateGridView((Game.Marker)mk);

                    Log.Write("MANUAL CORRECT AFTER " + mk.ToString());

                    if (time_up)
                    {
                        ReloadDataGridView(true);
                    }

                    lock (game.Markers)
                        MarkerList.SaveToFile(game.Match.Id, game.Markers);
                }
            }
        }
示例#19
0
        private void DisplayLegend(MarkerList markerList)
        {
            var mapLegend = mapRepository.GetMapLegends(markerList);

            MessageSender.Send(new SendLegendListMessage(mapLegend));
        }
示例#20
0
        private static void HandleDataFromServer(object client)
        {
            TcpClient serverConnection = (TcpClient)client;
            //NetworkStream serverStream = serverConnection.GetStream();

            Marker          receivedMarker = new Marker();
            OptiTrackCamera receivedCamera = new OptiTrackCamera();

            BinaryReader binaryReader = new BinaryReader(new BufferedStream(serverConnection.GetStream()));

            int bytesRead;

            while (true)
            {
                bytesRead = 0;
                bool readTimestamp = false;
                try
                {
                    //blocks until a client sends a message

                    char messageType = binaryReader.ReadChar();
                    bytesRead = 1;

                    switch (messageType)
                    {
                    case 'M':
                        receivedMarker.MarkerId = binaryReader.ReadInt32();

                        //if have been sent End of Frame indication
                        //TimeStamp field of End of Frame Indicator contains number of markers in the frame
                        //ie. receivedMarker.TimeStamp = number of markers in list
                        if (receivedMarker.MarkerId == -2147483648)
                        {
                            receivedMarker.TimeStamp = binaryReader.ReadInt32();
                            readTimestamp            = true;
                            MarkerList.RemoveExcessMarkersFromList(receivedMarker.TimeStamp);

                            //MarkerList.MarkerBinList();

                            if (WholeFrameReceivedEvent != null)
                            {
                                WholeFrameReceivedEvent();
                            }
                        }

                        if (readTimestamp == false)
                        {
                            receivedMarker.TimeStamp = binaryReader.ReadInt32();
                        }

                        receivedMarker.xCoordinate = binaryReader.ReadDouble();
                        receivedMarker.yCoordinate = binaryReader.ReadDouble();
                        receivedMarker.zCoordinate = binaryReader.ReadDouble();

                        bytesRead = 36;

                        if (receivedMarker.MarkerId != -2147483648)
                        {
                            MarkerList.AddMarker(receivedMarker);
                        }

                        break;

                    case 'C':
                        receivedCamera.CameraNumber = binaryReader.ReadInt32();
                        receivedCamera.xCoordinate  = binaryReader.ReadDouble();
                        receivedCamera.yCoordinate  = binaryReader.ReadDouble();
                        receivedCamera.zCoordinate  = binaryReader.ReadDouble();

                        double[] rotationMatrixBuffer = new double[9];

                        for (int i = 0; i < 9; i++)
                        {
                            rotationMatrixBuffer[i] = binaryReader.ReadDouble();
                        }
                        receivedCamera.RotationMatrix = rotationMatrixBuffer;

                        bytesRead = 108;

                        OptitrackCameraList.AddCamera(receivedCamera);

                        break;

                    case 'T':
                        if (AvatarSpeedChangedEvent != null)
                        {
                            AvatarSpeedChangedEvent((float)binaryReader.ReadDouble());
                            bytesRead = 8;
                        }
                        else
                        {
                            binaryReader.ReadDouble();
                            bytesRead = 8;
                        }
                        break;

                    default:
                        System.Diagnostics.Debug.WriteLine("A transmit error has occured. " + messageType.ToString() + " recieved");
                        bytesRead = 5;
                        break;
                    }
                }
                catch (System.IO.IOException)
                {
                    // a socket error has occured
                    System.Diagnostics.Debug.WriteLine("Socket error has occured in TCPServer.HandleClientComm");
                    break;
                }
                if (bytesRead == 0)
                {
                    // the client has disconnected from the server
                    System.Diagnostics.Debug.WriteLine("The client has disconnected from the server");
                    break;
                }

                //else message has been successfully recieved

                //OptitrackCommandParser commandParser = new OptitrackCommandParser();

                //commandParser.handleCommand(recievedCommand[0]);
            }
        }
示例#21
0
        public static MarkerList CreateMarkerList01()
        {
            MarkerList markerList = new MarkerList();

            return(markerList);
        }
示例#22
0
 public static void Perform(MarkerList list, Marker marker)
 {
     Document.Current.History.Perform(new DeleteMarker(list, marker));
 }
示例#23
0
                void UpdateMap(bool result)
                {
                    if (GroupEntries.Count > 0)
                    {
                        // update our list and display
                        SearchResultPrefix.Text = ConnectStrings.GroupFinder_Neighborhood;

                        (ListView.Adapter as GroupArrayAdapter).SetSelectedRow(0);

                        // for the map, ensure it's valid, because Google Play can fail
                        if (Map != null)
                        {
                            Map.Clear( );
                            MarkerList.Clear( );

                            Android.Gms.Maps.Model.LatLngBounds.Builder builder = new Android.Gms.Maps.Model.LatLngBounds.Builder();

                            // add the source position
                            Android.Gms.Maps.Model.MarkerOptions markerOptions = new Android.Gms.Maps.Model.MarkerOptions();
                            Android.Gms.Maps.Model.LatLng        pos           = new Android.Gms.Maps.Model.LatLng(SourceLocation.Latitude, SourceLocation.Longitude);
                            markerOptions.SetPosition(pos);
                            markerOptions.InvokeIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueGreen));
                            builder.Include(pos);

                            Android.Gms.Maps.Model.Marker marker = Map.AddMarker(markerOptions);
                            MarkerList.Add(marker);

                            for (int i = 0; i < GroupEntries.Count; i++)
                            {
                                // add the positions to the map
                                markerOptions = new Android.Gms.Maps.Model.MarkerOptions();
                                pos           = new Android.Gms.Maps.Model.LatLng(GroupEntries[i].Latitude, GroupEntries[i].Longitude);
                                markerOptions.SetPosition(pos);
                                markerOptions.SetTitle(GroupEntries[i].Name);
                                markerOptions.SetSnippet(string.Format("{0:##.0} {1}", GroupEntries[i].DistanceFromSource, ConnectStrings.GroupFinder_MilesSuffix));

                                builder.Include(pos);

                                marker = Map.AddMarker(markerOptions);
                                MarkerList.Add(marker);
                            }

                            Android.Gms.Maps.Model.LatLngBounds bounds = builder.Build( );

                            int paddingInPixels = Math.Min(View.Width, (int)(View.Height * .1f));

                            CameraUpdate camPos = CameraUpdateFactory.NewLatLngBounds(bounds, paddingInPixels);
                            Map.AnimateCamera(camPos);

                            // show the info window for the first (closest) group
                            MarkerList[1].ShowInfoWindow( );
                        }
                    }
                    else
                    {
                        if (result == true)
                        {
                            // send the analytic and update our list
                            SearchResultPrefix.Text       = ConnectStrings.GroupFinder_NoGroupsFound;
                            SearchResultNeighborhood.Text = string.Empty;

                            (ListView.Adapter as GroupArrayAdapter).SetSelectedRow(-1);

                            // validate the map before using. Google Play can error
                            if (Map != null)
                            {
                                // no groups found, so move the camera to the default position
                                Android.Gms.Maps.Model.LatLng defaultPos = new Android.Gms.Maps.Model.LatLng(ConnectConfig.GroupFinder_DefaultLatitude, ConnectConfig.GroupFinder_DefaultLongitude);
                                CameraUpdate camPos = CameraUpdateFactory.NewLatLngZoom(defaultPos, ConnectConfig.GroupFinder_DefaultScale_Android);
                                Map.AnimateCamera(camPos);
                            }
                        }
                        else
                        {
                            // there was actually an error. Let them know.
                            SearchResultPrefix.Text       = ConnectStrings.GroupFinder_NetworkError;
                            SearchResultNeighborhood.Text = string.Empty;
                        }
                    }
                }
示例#24
0
        private void DoLoadMatchData(object ids)
        {
            try
            {
                sync.Execute(() => pictureBox1.Visible = true);
                ShowStatus("Загрузка данных матча...", 0);

                Web.GetTeamColorsKind();

                var   idm = Int32.Parse(ids.ToString());
                SizeF sizef;
                game = Web.GetMatchInfo(idm, out sizef);

                if (game == null)
                {
                    throw new Exception("Нет матча или выбран неверный тип игры!");
                }

                if (game.Match.Team1 == null || game.Match.Team1.Id == 0)
                {
                    throw new Exception("Нет команды 1");
                }
                if (game.Match.Team2 == null || game.Match.Team2.Id == 0)
                {
                    throw new Exception("Нет команды 2");
                }

                if (!sizef.IsEmpty)
                {
                    game.FieldSize = sizef;
                }

                ShowStatus("Загрузка игроков команды " + game.Match.Team2.ToString() + "...", 0);
                Web.GetPlayers(game.Match.Team2);

                if (game.Match.Team2.Players.Count == 0)
                {
                    throw new Exception("Нет состава команды " + game.Match.Team2);
                }

                ShowStatus("Загрузка игроков команды " + game.Match.Team1.ToString() + "...", 0);
                Web.GetPlayers(game.Match.Team1);

                if (game.Match.Team1.Players.Count == 0)
                {
                    throw new Exception("Нет состава команды " + game.Match.Team1);
                }

                ShowStatus("Загрузка параметров матча...", 0);

                game.Match.Team1.FinePlaces.Clear();
                game.Match.Team1.FinePlayers.Clear();

                game.Match.Team2.FinePlaces.Clear();
                game.Match.Team2.FinePlayers.Clear();

                Web.GetTeamColors(game.Match.Team1);
                Web.GetTeamColors(game.Match.Team2);

                var txt = game.Match.Team1.Name + " - " + game.Match.Team2.Name;

                game.Markers.Clear();

                sync.Execute(() =>
                {
                    label1.Text = game.Match.Tournament + " " +
                                  game.Match.Date.ToShortDateString() + " " +
                                  game.Match.Date.ToLongTimeString();

                    textBox4.Text = txt;
                });

                ShowStatus("Загрузка маркеров...", 0);

                var           lstSrv = Web.GetMarkers(game, game.Match.Id);
                List <Marker> lstLoc = MarkerList.LoadFromFile(game, game.Match.Id);

                foreach (Game.Marker mk in lstLoc)
                {
                    mk.game = game;
                }

                foreach (var mk in lstLoc.Where(o => !o.FlagDel).OrderBy(o => o.Half.Index).ThenBy(o => o.TimeVideo))
                {
                    var period = mk.Half.Index;
                    var half   = game.HalfList.FirstOrDefault(o => o.Index == period);
                    mk.Half = half;
                }

                game.Union(lstLoc, lstSrv);

                foreach (Game.Marker mk in game.Markers)
                {
                    mk.row = null;
                }

                ShowStatus("Синхронизация...", 0);
                var pl = game.Match.Team1.Players.Concat(game.Match.Team2.Players).ToList <Player>();

                //Восстановление и контроль составов
                foreach (var mk in game.Markers.Where(o => o.ActionId == 16))
                {
                    Team tm = null;
                    try
                    {
                        tm       = GetTeam(mk.team1_id, mk);
                        mk.Team1 = tm;
                    }
                    catch (TeamMarkerException ex)
                    {
                        mk.FlagDel = true;
                        ShowStatus(ex.Message, FormShowStatusCode.Error);
                        Thread.Sleep(100);
                        continue;
                    }

                    if (pl.Exists(o => o.Id == mk.player1_id))
                    {
                        var p = pl.First(o => o.Id == mk.player1_id);

                        if (mk is Game.Marker)
                        {
                            var mkg = (Game.Marker)mk;
                            if (mkg.Num > 0)
                            {
                                p.Number = mkg.Num;
                            }
                        }

                        var tm2 = game.Match.Team1 == tm ? game.Match.Team2 : game.Match.Team1;
                        if (tm2.Players.Exists(o => o.Id == p.Id))
                        {
                            throw new Exception(String.Format((string)"Ошибка в маркере расстановки {0}. Игрок {1} был в составе {2}, а теперь указан в команде соперника", (object)mk.Id, (object)p, tm2));
                        }

                        p.Team     = tm;
                        mk.Player1 = p;

                        if (!tm.Players.Exists(o => o.Id == p.Id))
                        {
                            tm.Players.Add(p);
                        }
                    }
                    else
                    {
                        if (mk.player1_id <= 0)
                        {
                            continue;
                        }

                        var p = Web.GetPlayer(mk.player1_id);
                        if (p != null)
                        {
                            p.Team     = tm;
                            mk.Player1 = p;

                            if (!tm.Players.Exists(o => o.Id == p.Id))
                            {
                                tm.Players.Add(p);
                            }
                            if (!pl.Exists(o => o.Id == p.Id))
                            {
                                pl.Add(p);
                            }
                        }
                        else
                        {
                            throw new Exception("Критическая ошибка: не могу загрузить игрока ID=" + mk.player1_id + " из состава команды " + tm.Name);
                        }
                    }
                }

                game.Match.Team1.Players.AddRange(
                    pl.Where(o
                             => o.Team != null &&
                             o.Team.Id == game.Match.Team1.Id &&
                             !game.Match.Team1.Players.Exists(o1 => o1.Id == o.Id)));

                game.Match.Team2.Players.AddRange(
                    pl.Where(o
                             => o.Team != null &&
                             o.Team.Id == game.Match.Team2.Id &&
                             !game.Match.Team2.Players.Exists(o1 => o1.Id == o.Id)));

                var errmklist = new List <Marker>();
                foreach (var mk in game.Markers.Where(o => o.ActionId != 16))
                {
                    if (mk.player1_id > 0)
                    {
                        var pla = pl.FirstOrDefault(o => o.Id == mk.player1_id);

                        if (pla == null)
                        {
                            try
                            {
                                mk.Player1 = Web.GetPlayer(mk.player1_id);
                            }
                            catch
                            {
                                mk.FlagDel = true;
                                errmklist.Add(mk);
                            }
                        }
                        else
                        {
                            mk.Player1 = pla;
                        }
                    }
                    else
                    if (mk.team1_id > 0)
                    {
                        try
                        {
                            mk.Team1 = GetTeam(mk.team1_id, mk);
                        }
                        catch (Exception ex)
                        { }
                    }

                    if (mk.player2_id > 0)
                    {
                        var opp = pl.FirstOrDefault(o => o.Id == mk.player2_id);

                        if (opp == null)
                        {
                            try
                            {
                                mk.Player2 = Web.GetPlayer(mk.player2_id);;
                            }
                            catch
                            {
                                mk.FlagDel = true;
                                errmklist.Add(mk);
                            }
                        }
                        else
                        {
                            mk.Player2 = opp;
                        }
                    }
                    else
                    if (mk.team2_id > 0)
                    {
                        try
                        {
                            mk.Team2 = GetTeam(mk.team2_id, mk);
                        }
                        catch (Exception ex)
                        { }
                    }
                }

                game.RefreshOvertimes();

                sync.Execute(() =>
                {
                    label1.Text   = game.Match.Tournament + " " + game.Match.Date.ToShortDateString() + " " + game.Match.Date.ToLongTimeString();
                    textBox4.Text = txt;
                });

                TeamDataRestore(game.Match.Team1);
                TeamDataRestore(game.Match.Team2);

                PlayerConverter.RefreshData(game.Match);
                TeamConverter.RefreshData(game.Match);

                sync.Execute(() =>
                {
                    checkBox1.Checked = !game.Match.Team1.Tactics[1].IsValid;
                    checkBox2.Checked = !game.Match.Team1.Tactics[1].IsValid;

                    comboBox1.Items.Clear();
                    foreach (var tc in game.Match.Team1.TeamColorsKind.Values)
                    {
                        comboBox1.Items.Add(tc);
                        if (tc.Kind == game.Match.Team1.Color.Kind)
                        {
                            comboBox1.SelectedItem = tc;
                        }
                    }

                    comboBox2.Items.Clear();
                    foreach (var tc in game.Match.Team2.TeamColorsKind.Values)
                    {
                        comboBox2.Items.Add(tc);
                        if (tc.Kind == game.Match.Team2.Color.Kind)
                        {
                            comboBox2.SelectedItem = tc;
                        }
                    }

                    changed_colors = false;
                });

                if (errmklist.Count > 0)
                {
                    var errmks = String.Empty;
                    for (var i = 0; i < errmklist.Count; i++)
                    {
                        if (i <= 2)
                        {
                            if (i > 0)
                            {
                                errmks += ",";
                            }
                            errmks += errmklist[i].Id;
                            if (i == 2)
                            {
                                errmks += "...";
                            }
                        }
                    }

                    ShowStatus(String.Format("Ошибочно указаны некоторые игроки. Эти маркеры {0} помечены на удаление.", errmks), FormShowStatusCode.Error);
                }
                else
                {
                }

                game.RecalcActualTime(game.Markers, null);

                sync.Execute(() => hockeyField1.Game = game);
                ShowStatus("Готово", 0);
            }
            catch (Exception ex)
            {
                game = null;
                ShowStatus(ex.Message, FormShowStatusCode.Error);
                HockeyGui.InvalidateRect();
            }
            finally
            {
                sync.Execute(() =>
                {
                    HockeyGui.InvalidateRect();
                    pictureBox1.Visible = false;
                });
                loading = false;
                UpdateUI();
            }
        }
示例#25
0
 public void TestCreateMarkerList01()
 {
     using (MarkerList markerList = CreateMarkerList01())
     {
         Assert.IsNotNull(markerList);
         #region Record State
         ValueRecorder recorder = new ValueRecorder();
         recorder.Record((string)markerList.AccessibleDefaultActionDescription);
         recorder.Record((string)markerList.AccessibleDescription);
         recorder.Record((string)markerList.AccessibleName);
         recorder.Record((AccessibleRole)markerList.AccessibleRole);
         recorder.Record((bool)markerList.AllowDrop);
         recorder.Record((bool)markerList.AllowTransparency);
         recorder.Record((AnchorStyles)markerList.Anchor);
         recorder.Record((AutoScaleMode)markerList.AutoScaleMode);
         recorder.Record((bool)markerList.AutoScroll);
         recorder.Record((bool)markerList.AutoSize);
         recorder.Record((AutoSizeMode)markerList.AutoSizeMode);
         recorder.Record((AutoValidate)markerList.AutoValidate);
         recorder.Record((ImageLayout)markerList.BackgroundImageLayout);
         recorder.Record((int)markerList.Bottom);
         recorder.Record((bool)markerList.CanFocus);
         recorder.Record((bool)markerList.CanSelect);
         recorder.Record((bool)markerList.Capture);
         recorder.Record((bool)markerList.CausesValidation);
         recorder.Record((string)markerList.CompanyName);
         recorder.Record((bool)markerList.ContainsFocus);
         recorder.Record((bool)markerList.ControlBox);
         recorder.Record((bool)markerList.Created);
         recorder.Record((DialogResult)markerList.DialogResult);
         recorder.Record((bool)markerList.Disposing);
         recorder.Record((DockStyle)markerList.Dock);
         recorder.Record((bool)markerList.Enabled);
         recorder.Record((bool)markerList.Focused);
         recorder.Record((FormBorderStyle)markerList.FormBorderStyle);
         recorder.Record((bool)markerList.HasChildren);
         recorder.Record((int)markerList.Height);
         recorder.Record((bool)markerList.HelpButton);
         recorder.Record((ImeMode)markerList.ImeMode);
         recorder.Record((bool)markerList.InvokeRequired);
         recorder.Record((bool)markerList.IsAccessible);
         recorder.Record((bool)markerList.IsDisposed);
         recorder.Record((bool)markerList.IsHandleCreated);
         recorder.Record((bool)markerList.IsMdiChild);
         recorder.Record((bool)markerList.IsMdiContainer);
         recorder.Record((bool)markerList.IsMirrored);
         recorder.Record((bool)markerList.IsRestrictedWindow);
         recorder.Record((bool)markerList.KeyPreview);
         recorder.Record((int)markerList.Left);
         recorder.Record((bool)markerList.MaximizeBox);
         recorder.Record((bool)markerList.MinimizeBox);
         recorder.Record((bool)markerList.Modal);
         recorder.Record((string)markerList.Name);
         recorder.Record((double)markerList.Opacity);
         recorder.Record((string)markerList.ProductName);
         recorder.Record((string)markerList.ProductVersion);
         recorder.Record((bool)markerList.RecreatingHandle);
         recorder.Record((int)markerList.Right);
         recorder.Record((RightToLeft)markerList.RightToLeft);
         recorder.Record((bool)markerList.RightToLeftLayout);
         recorder.Record((bool)markerList.ShowIcon);
         recorder.Record((bool)markerList.ShowInTaskbar);
         recorder.Record((SizeGripStyle)markerList.SizeGripStyle);
         recorder.Record((FormStartPosition)markerList.StartPosition);
         recorder.Record((bool)ReflectionAccessor.Wrap(markerList).GetProperty("System.Windows.Forms.Layout.IArrangedElement.ParticipatesInLayout"));
         recorder.Record((int)markerList.TabIndex);
         recorder.Record((bool)markerList.TabStop);
         recorder.Record((string)markerList.Text);
         recorder.Record((int)markerList.Top);
         recorder.Record((bool)markerList.TopLevel);
         recorder.Record((bool)markerList.TopMost);
         recorder.Record((bool)markerList.UseWaitCursor);
         recorder.Record((string)markerList.ViewID);
         recorder.Record((string)markerList.ViewType);
         recorder.Record((bool)markerList.Visible);
         recorder.Record((int)markerList.Width);
         recorder.Record((FormWindowState)markerList.WindowState);
         recorder.FinishRecording();
         #endregion
         #region Assertions
         Assert.IsNull((string)markerList.AccessibleDefaultActionDescription);
         Assert.IsFalse((bool)markerList.AllowDrop);
         Assert.AreEqual(global::System.Windows.Forms.AutoScaleMode.Font, (AutoScaleMode)markerList.AutoScaleMode);
         Assert.AreEqual(global::System.Windows.Forms.AutoValidate.EnablePreventFocusChange, (AutoValidate)markerList.AutoValidate);
         Assert.IsFalse((bool)markerList.CanFocus);
         Assert.AreEqual("ST Electronics Ltd", (string)markerList.CompanyName);
         Assert.IsFalse((bool)markerList.Created);
         Assert.IsTrue((bool)markerList.Enabled);
         Assert.IsTrue((bool)markerList.HasChildren);
         Assert.IsFalse((bool)markerList.InvokeRequired);
         Assert.IsFalse((bool)markerList.IsHandleCreated);
         Assert.IsFalse((bool)markerList.IsRestrictedWindow);
         Assert.IsFalse((bool)markerList.MaximizeBox);
         Assert.AreEqual(1.0, (double)markerList.Opacity, 1E-7);
         Assert.IsFalse((bool)markerList.RecreatingHandle);
         Assert.IsTrue((bool)markerList.ShowIcon);
         Assert.AreEqual(global::System.Windows.Forms.FormStartPosition.CenterScreen, (FormStartPosition)markerList.StartPosition);
         Assert.AreEqual("Data Marker Viewer", (string)markerList.Text);
         Assert.IsFalse((bool)markerList.TopMost);
         Assert.IsFalse((bool)markerList.Visible);
         #endregion
     }
 }
示例#26
0
 private SetMarker(MarkerList list, Marker marker)
 {
     List   = list;
     Marker = marker;
 }
示例#27
0
        private static void HandleDataFromServer(object client)
        {
            TcpClient serverConnection = (TcpClient)client;


            BinaryReader binaryReader = new BinaryReader(new BufferedStream(serverConnection.GetStream()));

            int bytesRead;

            while (true)
            {
                bytesRead = 0;
                bool readTimestamp = false;
                try
                {
                    //blocks until a client sends a message

                    char messageType = binaryReader.ReadChar();
                    bytesRead = 1;

                    switch (messageType)
                    {
                    case 'M':     // Marker

                        Marker receivedMarker = new Marker();
                        receivedMarker.MarkerId = binaryReader.ReadInt32();

                        //if have been sent End of Frame indication
                        if (receivedMarker.MarkerId == -2147483648)
                        {
                            receivedMarker.TimeStamp = binaryReader.ReadInt64();
                            readTimestamp            = true;
                            MarkerList.RemoveExcessMarkersFromList(receivedMarker.TimeStamp);

                            if (WholeFrameReceivedEvent != null)
                            {
                                WholeFrameReceivedEvent();
                            }
                        }

                        if (readTimestamp == false)
                        {
                            receivedMarker.TimeStamp = binaryReader.ReadInt64();
                        }

                        receivedMarker.xCoordinate = binaryReader.ReadDouble();
                        receivedMarker.yCoordinate = binaryReader.ReadDouble();
                        receivedMarker.zCoordinate = binaryReader.ReadDouble();

                        bytesRead = 36;

                        if (receivedMarker.MarkerId != -2147483648)
                        {
                            MarkerList.AddMarker(receivedMarker);
                        }

                        break;

                    case 'F':     // Filtered Marker

                        Marker receivedFilteredMarker = new Marker();
                        receivedFilteredMarker.MarkerId = binaryReader.ReadInt32();

                        //if have been sent End of Frame indication
                        if (receivedFilteredMarker.MarkerId == -2147483648)
                        {
                            receivedFilteredMarker.TimeStamp = binaryReader.ReadInt64();
                            readTimestamp = true;
                            FilteredMarkerList.RemoveExcessMarkersFromList(receivedFilteredMarker.TimeStamp);

                            if (FilteredMarkerListReceivedEvent != null)
                            {
                                FilteredMarkerListReceivedEvent(FilteredMarkerList.listOfMarkers);
                            }
                        }

                        if (readTimestamp == false)
                        {
                            receivedFilteredMarker.TimeStamp = binaryReader.ReadInt64();
                        }

                        receivedFilteredMarker.xCoordinate = binaryReader.ReadDouble();
                        receivedFilteredMarker.yCoordinate = binaryReader.ReadDouble();
                        receivedFilteredMarker.zCoordinate = binaryReader.ReadDouble();

                        bytesRead = 36;

                        if (receivedFilteredMarker.MarkerId != -2147483648)
                        {
                            FilteredMarkerList.AddMarker(receivedFilteredMarker);
                        }

                        break;

                    case 'R':     // Trackable

                        Trackable receivedTrackable = new Trackable();
                        receivedTrackable.ID = binaryReader.ReadInt32();

                        receivedTrackable.TimeStamp = binaryReader.ReadInt64();

                        if (receivedTrackable.ID == -2147483648)
                        {
                            if (receivedTrackable.TimeStamp == 0)
                            {
                                trackableList.Clear();
                            }
                            //End of List
                            if (TrackableListReceivedEvent != null)
                            {
                                TrackableListReceivedEvent(trackableList);
                            }
                            //Read in any remaining data out of the buffer
                            receivedTrackable.TrackableIndex = binaryReader.ReadInt32();
                            receivedTrackable.Name           = binaryReader.ReadString();
                            receivedTrackable.xCoordinate    = binaryReader.ReadInt32();
                            receivedTrackable.yCoordinate    = binaryReader.ReadInt32();
                            receivedTrackable.zCoordinate    = binaryReader.ReadInt32();
                            receivedTrackable.Roll           = binaryReader.ReadDouble();
                            receivedTrackable.Pitch          = binaryReader.ReadDouble();
                            receivedTrackable.Yaw            = binaryReader.ReadDouble();
                        }
                        else
                        {
                            if (trackableList.Count != 0)     // alread contains data
                            {
                                //If from a previous time frame, clear the list
                                if (receivedTrackable.TimeStamp != trackableList[0].TimeStamp)
                                {
                                    trackableList.Clear();
                                }
                            }

                            receivedTrackable.TrackableIndex = binaryReader.ReadInt32();
                            receivedTrackable.Name           = binaryReader.ReadString();
                            receivedTrackable.xCoordinate    = binaryReader.ReadInt32();
                            receivedTrackable.yCoordinate    = binaryReader.ReadInt32();
                            receivedTrackable.zCoordinate    = binaryReader.ReadInt32();
                            receivedTrackable.Roll           = binaryReader.ReadDouble();
                            receivedTrackable.Pitch          = binaryReader.ReadDouble();
                            receivedTrackable.Yaw            = binaryReader.ReadDouble();
                            trackableList.Add(receivedTrackable);
                        }

                        break;

                    case 'J':     // Joint

                        Joint receivedJoint = new Joint();
                        receivedJoint.ID = binaryReader.ReadInt32();

                        receivedJoint.TimeStamp = binaryReader.ReadInt64();

                        if (receivedJoint.ID == -2147483648)
                        {
                            if (receivedJoint.TimeStamp == 0)
                            {
                                jointList.Clear();
                            }

                            //End of List
                            if (JointListReceivedEvent != null)
                            {
                                JointListReceivedEvent(jointList);
                            }


                            //Read in any remaining data out of the buffer
                            receivedJoint.Exists      = binaryReader.ReadBoolean();
                            receivedJoint.Name        = binaryReader.ReadString();
                            receivedJoint.Trackable1  = binaryReader.ReadInt32();
                            receivedJoint.Trackable2  = binaryReader.ReadInt32();
                            receivedJoint.RollOffset  = binaryReader.ReadDouble();
                            receivedJoint.PitchOffset = binaryReader.ReadDouble();
                            receivedJoint.YawOffset   = binaryReader.ReadDouble();
                            receivedJoint.Roll        = binaryReader.ReadDouble();
                            receivedJoint.Pitch       = binaryReader.ReadDouble();
                            receivedJoint.Yaw         = binaryReader.ReadDouble();
                            receivedJoint.xCoordinate = binaryReader.ReadInt32();
                            receivedJoint.yCoordinate = binaryReader.ReadInt32();
                            receivedJoint.zCoordinate = binaryReader.ReadInt32();
                        }
                        else
                        {
                            if (jointList.Count != 0)     // alread contains data
                            {
                                //If from a previous time frame, clear the list
                                if (receivedJoint.TimeStamp != jointList[0].TimeStamp)
                                {
                                    jointList.Clear();
                                }
                            }

                            receivedJoint.Exists      = binaryReader.ReadBoolean();
                            receivedJoint.Name        = binaryReader.ReadString();
                            receivedJoint.Trackable1  = binaryReader.ReadInt32();
                            receivedJoint.Trackable2  = binaryReader.ReadInt32();
                            receivedJoint.RollOffset  = binaryReader.ReadDouble();
                            receivedJoint.PitchOffset = binaryReader.ReadDouble();
                            receivedJoint.YawOffset   = binaryReader.ReadDouble();
                            receivedJoint.Roll        = binaryReader.ReadDouble();
                            receivedJoint.Pitch       = binaryReader.ReadDouble();
                            receivedJoint.Yaw         = binaryReader.ReadDouble();
                            receivedJoint.xCoordinate = binaryReader.ReadInt32();
                            receivedJoint.yCoordinate = binaryReader.ReadInt32();
                            receivedJoint.zCoordinate = binaryReader.ReadInt32();
                            jointList.Add(receivedJoint);
                        }

                        break;


                    case 'C':     // Camera

                        OptiTrackCamera receivedCamera = new OptiTrackCamera();
                        receivedCamera.CameraNumber = binaryReader.ReadInt32();
                        receivedCamera.xCoordinate  = binaryReader.ReadDouble();
                        receivedCamera.yCoordinate  = binaryReader.ReadDouble();
                        receivedCamera.zCoordinate  = binaryReader.ReadDouble();

                        double[] rotationMatrixBuffer = new double[9];

                        for (int i = 0; i < 9; i++)
                        {
                            rotationMatrixBuffer[i] = binaryReader.ReadDouble();
                        }
                        receivedCamera.RotationMatrix = rotationMatrixBuffer;

                        bytesRead = 108;

                        OptitrackCameraList.AddCamera(receivedCamera);

                        break;

                    case 'T':     // Treadmill (Speed)
                        if (AvatarSpeedChangedEvent != null)
                        {
                            AvatarSpeedChangedEvent((float)binaryReader.ReadDouble());
                            bytesRead = 8;
                        }
                        else
                        {
                            binaryReader.ReadDouble();
                            bytesRead = 8;
                        }
                        break;

                    case 'B':     //flag type and flag
                    {
                        System.Diagnostics.Debug.WriteLine("MessageType: " + messageType.ToString());

                        char type = binaryReader.ReadChar();

                        System.Diagnostics.Debug.WriteLine("Type: " + type.ToString());

                        bool flag = binaryReader.ReadBoolean();

                        System.Diagnostics.Debug.WriteLine("Flag: " + flag.ToString());

                        bytesRead = 9;

                        switch (type)
                        {
                        case 'F':             //Toggle Feet
                        {
                            if (ToggleDrawingOfFeetEvent != null)
                            {
                                ToggleDrawingOfFeetEvent(flag);
                            }
                            break;
                        }
                        }
                        break;
                    }

                    default:
                        System.Diagnostics.Debug.WriteLine("A transmit error has occured. " + messageType.ToString() + " recieved");
                        bytesRead = 5;
                        break;
                    }
                }
                catch (System.IO.IOException)
                {
                    // a socket error has occured
                    System.Diagnostics.Debug.WriteLine("Socket error has occured in TCPServer.HandleClientComm");
                    break;
                }
                if (bytesRead == 0)
                {
                    // the client has disconnected from the server
                    System.Diagnostics.Debug.WriteLine("The client has disconnected from the server");
                    break;
                }
            }
        }
示例#28
0
        IEnumerator UpdateMetrics()
        {
            // total distance
            perimeterDistance = 0.0f;

            if (MarkerList != null && MarkerList.Count > 1)
            {
                foreach (var marker in MarkerList)
                {
                    var dist = marker.LastSegmentDistance;
                    perimeterDistance += dist;
                }
            }

            debugText.text = perimeterDistance > 1 ? $"\n TOTAL: {Math.Round(perimeterDistance, 2)} mts." : $"\n TOTAL: {Math.Round(perimeterDistance, 2) * 100} cms.";

            // last segment distance
            if (MarkerList != null && MarkerList.Count > 0)
            {
                var dist = Vector3.Distance(planeFinder.GetComponent <PlaneFinderBehaviour>().PlaneIndicator.transform.localPosition, MarkerList.Last().Position);
                debugText.text += dist > 1 ? $"\n CURRENT: {Math.Round(dist, 2)} mts." : $"\n CURRENT: {Math.Round(dist, 2) * 100} cms.";
            }

            //angle
            //var from = CurrentMarker.transform.position - PreviousMarker.transform.position;
            //var to = Vector3.ProjectOnPlane(from, -CurrentMarker.transform.up);
            //var angle = Vector3.Angle(from, to);

            //debugText.text += $" ANGLE: {Math.Round(angle, 2)} dgs.";

            yield return(new WaitForSeconds(.1f));
        }
示例#29
0
        /// <summary>
        /// Updates the list of markers with lastest marker coordinates
        /// </summary>
        public static void UpdateCoordinates(bool updateMarker, bool updateTrackable)
        {
            if (APIRunning)
            {
                // Get the timestamp to apply to all markers and trackables
                long timeStamp = System.DateTime.Now.Ticks;
                try
                {
                    if (TrackingTools.UpdateAll() == 0) // If it updates correctly
                    {
                        if (updateMarker)
                        {
                            int markerCount = TrackingTools.FrameMarkerCount();

                            Marker marker = new Marker();
                            for (int i = 0; i < markerCount; i++)
                            {
                                //Get the marker details from TrackingTools
                                marker.MarkerId    = i;
                                marker.TimeStamp   = timeStamp;
                                marker.xCoordinate = -(int)(TrackingTools.FrameMarkerX(i) * 1000);
                                marker.yCoordinate = (int)(TrackingTools.FrameMarkerY(i) * 1000);
                                marker.zCoordinate = (int)(TrackingTools.FrameMarkerZ(i) * 1000);

                                MarkerList.AddMarker(marker);
                                marker = new Marker();
                            }
                            MarkerList.RemoveExcessMarkersFromList(markerCount);

                            OnMarkerListAvaliable(MarkerList.listOfMarkers, timeStamp);
                        }

                        if (updateTrackable)
                        {
                            int trackableCount = TrackingTools.TrackableCount();
                            trackableList.Clear();
                            Trackable newTrackable = null;

                            // Go through the loaded trackables and if they are in the current frame
                            // add them to the trackableList
                            for (int i = 0; i < trackableCount; i++)
                            {
                                if (TrackingTools.IsTrackableTracked(i))
                                {
                                    newTrackable           = TrackingTools.GetTrackableLocation(i);
                                    newTrackable.TimeStamp = timeStamp;
                                    trackableList.Add(newTrackable);
                                }
                            }
                            OnTrackableListAvaliable(trackableList, timeStamp);
                        }
                    }
                }
                catch (AccessViolationException ex)
                {
                    System.Diagnostics.Debug.WriteLine("Error With UpdateALL() " + ex + "   Time Stamp : " + timeStamp);
                }
                catch (System.Runtime.InteropServices.SEHException ex)
                {
                    System.Diagnostics.Debug.WriteLine("Error With UpdateALL() " + ex + "   Time Stamp : " + timeStamp);
                }
            }
        }
示例#30
0
        private void DoBeginWork()
        {
            var t = new Thread(() =>
            {
                try
                {
                    for (var i = 0; i < 3; i++)
                    {
                        game.HalfList[i].Periods[0].Length = Options.G.Game_LengthPrimaryHalf * 60000;
                    }

                    foreach (Game.Marker mk in game.Markers)
                    {
                        mk.row = null;
                    }

                    if (changed_colors)
                    {
                        ShowStatus("Сохранение вариантов формы...", 0);
                        Web.SaveMatchColors(game.Match);
                    }

                    ShowStatus("Запуск...", 0);

                    if (changeTeam1)
                    {
                        PrepareTactics(game.Match.Team1);
                    }

                    if (changeTeam2)
                    {
                        PrepareTactics(game.Match.Team2);
                    }

                    if (changeTeam1 || changeTeam2)
                    {
                        MarkerList.SaveToFile(game.Match.Id, game.Markers);
                    }

                    game.Match.Team1.FinePlaces.Clear();
                    game.Match.Team1.FinePlayers.Clear();

                    game.Match.Team2.FinePlaces.Clear();
                    game.Match.Team2.FinePlayers.Clear();

                    ShowStatus(String.Empty, 0);

                    sync.Execute(() =>
                    {
                        WindowVisible(false);

                        if (HockeyIce.Role != HockeyIce.RoleEnum.Online)
                        {
                            var form  = new MainForm(game);
                            form.Game = game;
                            form.ShowDialog();
                        }
                        else
                        {
                            var form = new OnlinerForm(game);
                            form.ShowDialog();
                        }

                        checkBox1.Checked = false;
                        checkBox2.Checked = false;

                        WindowVisible(true);
                    });
                }
                catch (Exception ex)
                {
                    ShowStatus(ex.Message, FormShowStatusCode.Error);
                    Log.WriteException(ex);
                }
                finally
                {
                    loading = false;
                    UpdateUI();
                }
            })
            {
                IsBackground = true
            };

            t.Start();
        }