private void ShowMarkerLayoutDir(MarkerInfo oMarkerInfo) { NyARIntPoint2d oCenterPoint = oMarkerInfo.Center; string sDir = "方向: 未检测出"; TextBlock oTbkDir = this.GetVertexPointLabel(); Canvas.SetLeft(oTbkDir, oCenterPoint.x - 30); Canvas.SetTop(oTbkDir, oCenterPoint.y - 60); if (oMarkerInfo.CurLayoutDir == LayoutDirType.ldtUp) { sDir = "方向: 上"; } else if (oMarkerInfo.CurLayoutDir == LayoutDirType.ldtLeft) { sDir = "方向: 左"; } else if (oMarkerInfo.CurLayoutDir == LayoutDirType.ldtRight) { sDir = "方向: 右"; } else if (oMarkerInfo.CurLayoutDir == LayoutDirType.ldtDown) { sDir = "方向: 下"; } oTbkDir.Text = sDir; this.CvMainZm.Children.Add(oTbkDir); }
private void ShowMarkerVertex(MarkerInfo oMarkerInfo) { NyARIntPoint2d[] oPoints = oMarkerInfo.Vertex; for (int i = 0; i < oPoints.Length; i++) { TextBlock oTbk = this.GetVertexPointLabel(); Canvas.SetLeft(oTbk, oPoints[i].x); Canvas.SetTop(oTbk, oPoints[i].y); if (i == 0) { oTbk.Text = "A"; } else if (i == 1) { oTbk.Text = "B"; } else if (i == 2) { oTbk.Text = "C"; } else if (i == 3) { oTbk.Text = "D"; } this.CvMainZm.Children.Add(oTbk); } }
private void API_onResourceStart() { lock (Global.Lock) { // taxi vehicles #region TaxiVehicles new VehInfo(VehicleHash.Taxi, new Vector3(-897.5254f, -2035.502f, 8.904017f), new Vector3(0, 0, -135.3084f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-899.7668f, -2038.035f, 8.90379f), new Vector3(0, 0, -135.3176f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-902.3703f, -2040.493f, 8.903711f), new Vector3(0, 0, -134.8492f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-904.8074f, -2042.999f, 8.903594f), new Vector3(0, 0, -136.4715f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-907.111f, -2045.528f, 8.903583f), new Vector3(0, 0, -136.4113f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-909.6328f, -2047.868f, 8.903583f), new Vector3(0, 0, -135.688f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-912.2091f, -2050.099f, 8.903601f), new Vector3(0, 0, -134.351f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-882.4277f, -2048.99f, 8.903764f), new Vector3(0, 0, 44.82626f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-884.9864f, -2051.37f, 8.90558f), new Vector3(0, 0, 45.86894f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-887.3887f, -2053.851f, 8.911674f), new Vector3(0, 0, 42.99739f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); new VehInfo(VehicleHash.Taxi, new Vector3(-889.7358f, -2056.304f, 8.910381f), new Vector3(0, 0, 44.67617f), 0, 0, 100, Jobs.JOB_TAXI_PARK_ONE, 0); #endregion new BlipInfo(new Vector3(-915.1155, -2038.782, 8.40499), 56, 5, false, 0, "Downtown Cab Co."); MarkerInfo mInfo = new MarkerInfo(1, new Vector3(-915.1155, -2038.782, 8.40499), new Vector3(1, 1, 1), new Vector3(35.5, 1, 1), new Vector3(1.5, 1.5, 2), 100, 23, 182, 71, 1, 2); mInfo.SetData("JobTaxiAction", 1); new TLabelInfo("Работа в такси", new Vector3(-915.1155, -2038.782, 9.40499), 25, 1); } }
private void ReceiveMarkerInfo(MarkerMessage message) { if (message.IsSuccess && message.MarkerInfo != null) { using (var markerOption = new MarkerOptions()) { bool inArray = _markers.Any(x => x.Latitude == message.MarkerInfo.Latitude && x.Longtitude == message.MarkerInfo.Longtitude); if (!inArray) { MarkerInfo markerInfo = message.MarkerInfo; markerOption.SetPosition(new LatLng(markerInfo.Latitude, markerInfo.Longtitude)); markerOption.SetTitle(markerInfo.Title); markerOption.SetSnippet(markerInfo.Address); // save the "marker" variable returned if you need move, delete, update it, etc... Marker marker = _googleMap.AddMarker(markerOption); _markers.Add(markerInfo); } else { MarkerInfo markerToRemove = _markers.First( x => x.Latitude == message.MarkerInfo.Latitude && x.Longtitude == message.MarkerInfo.Longtitude); _markers.Remove(markerToRemove); _markers.Add(message.MarkerInfo); } string json = JsonConvert.SerializeObject(_markers, Formatting.Indented); FileHelper.WriteFile(_filenameGenerator, _defaultFilename, json); } } }
public TimeFrame(int markerCount) { markerInfos = new MarkerInfo[markerCount]; for (int i = 0; i < markerCount; i++) { markerInfos[i] = new MarkerInfo(); } }
/// <summary> /// Parse the source of a parse job. /// </summary> protected Element Parse(ParseInfo info) { MarkerInfo marker = new MarkerInfo(); marker.Element = new Element(Tag.Paragraph); marker.Element.Style[StyleKey.WordWrap] = "break-word"; marker.Element.Style[StyleKey.WhiteSpace] = "pre-wrap"; marker.EndIndex = marker.StartIndex = 0; int length = info.Source.Length; // while there are more characters to read while (info.Index < info.Length) { // move to the next character is there a marker? if (info.Search.Next(info.Source[info.Index])) { var mark = info.Search.Values[0]; if (mark == null) { ++info.Index; continue; } // no, attempt to parse the content of the marker var child = new MarkerInfo(); child.StartIndex = info.Index - mark.Prefix.Length + 1; child.Marker = mark; // parse the info if (Parse(info, child)) { if (child.StartIndex > marker.EndIndex) { marker.Element.Content.Add(info.Source.Substring(marker.EndIndex, child.StartIndex - marker.EndIndex)); } else { marker.Element.Content.Add(string.Empty); } marker.Element.AddChild(child.Element); marker.EndIndex = info.Index + 1; } } ++info.Index; } if (marker.EndIndex < info.Length) { // append any remaining content to the base element marker.Element.Content.Add(info.Source.Substring(marker.EndIndex, info.Length - marker.EndIndex)); } // run the parse callback return(marker.Element); }
private bool ContainsFort(List <MarkerInfo> list, MarkerInfo fort) { foreach (var element in list) { if (element.location == fort.location) { return(true); } } return(false); }
private void ShowMarkerRotate(MarkerInfo oMarkerInfo) { NyARIntPoint2d oCenterPoint = oMarkerInfo.Center; TextBlock oTbkRotate = this.GetVertexPointLabel(); Canvas.SetLeft(oTbkRotate, oCenterPoint.x - 60); Canvas.SetTop(oTbkRotate, oCenterPoint.y + 20); oTbkRotate.Text = "旋转: " + Math.Round(oMarkerInfo.Rotate, 3); this.CvMainZm.Children.Add(oTbkRotate); }
public void AddMarker(MarkerInfo info, bool stackable) { if (_appliedMarkers.ContainsKey(info.Type) && stackable) { _appliedMarkers[info.Type].TurnCount += info.TurnCount; info = _appliedMarkers[info.Type]; } else { _appliedMarkers.Add(info.Type, info); } OnMarkerChanged.Invoke(info); }
void onCollision(string name, bool status) { if (isLevelActivated) { isCardCollision = status; // Debug.Log ("collision with object " + name + " count " + markerlList.Count); MarkerInfo obj = markerlList.Find(item => item.ImageTargetObject.name == name); if (status && obj != null) { obj.ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material = redMaterial; } } }
private void ShowMarkerInfo(MarkerInfo oMarkerInfo) { if (oMarkerInfo == null) { return; } this.ShowMarkerRect(oMarkerInfo); this.ShowMarkerVertex(oMarkerInfo); this.ShowMarkerCenter(oMarkerInfo); this.ShowMarkerLayoutDir(oMarkerInfo); this.ShowMarkerRotate(oMarkerInfo); }
/// <summary> /// Завершение рабочего дня /// </summary> public void JobGryzYval(Client player) { PlayerInfo pInfo = API.getEntityData(player.handle, Constants.PlayerAccount); if (pInfo.Job == (int)Jobs.JOB_JOBGRYZ_ONE) { var myBox = GryzBoxes.Where(i => i.Player == player).FirstOrDefault(); if (myBox != null) { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Сначала отнесите ящик на склад."); return; } API.sendNativeToPlayer(player, Hash.DO_SCREEN_FADE_OUT, 200); API.delay(200, true, () => { pInfo.Job = (int)Jobs.NULL; API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Вы закончили рабочий день."); API.clearPlayerAccessory(player, 0); // удаляем аксесуары с головы pInfo.UpdateDress(); // меняем одежду на пользовательскую pInfo.money = pInfo.money + pInfo.jobMoney; pInfo.jobMoney = 0; pInfo.UpdateBD(); var Markers = pInfo.playerEntity.Where(x => x.Key == Constants.Marker); // Удаляем все пользовательские маркеры связанные с работой foreach (var Marker in Markers.ToArray()) { MarkerInfo bi = Marker.Value; if (bi.Job == Jobs.JOB_JOBGRYZ_ONE) { bi.DeleteMarker(); } } var Blips = pInfo.playerEntity.Where(x => x.Key == Constants.Blip); // Удаляем все пользовательские блипы связанные с работой foreach (var Blip in Blips.ToArray()) { BlipInfo bi = Blip.Value; if (bi.Job == Jobs.JOB_JOBGRYZ_ONE) { bi.DeleteBlip(); } } API.sendNativeToPlayer(player, Hash.DO_SCREEN_FADE_IN, 750); }); } else { API.sendChatMessageToPlayer(player, "~y~[Server] ~b~Вы здесь не работаете."); } }
private void ShowMarkerCenter(MarkerInfo oMarkerInfo) { NyARIntPoint2d oCenterPoint = oMarkerInfo.Center; Ellipse oEllipse = new Ellipse() { Width = 5, Height = 5, Fill = new SolidColorBrush(Colors.Green), }; Canvas.SetLeft(oEllipse, oCenterPoint.x); Canvas.SetTop(oEllipse, oCenterPoint.y); this.CvMainZm.Children.Add(oEllipse); }
void onCollision(string name, bool status) { if (isLevelActivated) { MarkerInfo obj = markerlList.Find(item => item.ImageTargetObject.name == name); if (status && obj != null) { obj.ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material = redMaterial; collideObjectList.Add(name); } else { collideObjectList.Remove(name); } } }
private static List <MarkerInfo> RemoveMarkers(Project proj, List <Marker> orderedMarkers) { var markPositions = new List <MarkerInfo>(); foreach (var marker in orderedMarkers) { var mi = new MarkerInfo(); mi.Position = marker.Position; mi.Label = marker.Label; markPositions.Add(mi); proj.Markers.Remove(marker); } return(markPositions); }
private void ShowMarkerRect(MarkerInfo oMarkerInfo) { int nMarkerID = oMarkerInfo.MarkerID; NyARIntPoint2d[] oPoints = oMarkerInfo.Vertex; Polygon oPolygon = new Polygon() { SnapsToDevicePixels = true, Opacity = 0.8, Stroke = new SolidColorBrush(Colors.Green) }; if (nMarkerID == this.MarkerID_VTT) { oPolygon.Fill = new SolidColorBrush(Colors.Violet); } else if (nMarkerID == this.MarkerID_Hiro) { oPolygon.Fill = new SolidColorBrush(Colors.Aqua); } else if (nMarkerID == this.MarkerID_KanJi) { oPolygon.Fill = new SolidColorBrush(Colors.DarkKhaki); } else if (nMarkerID == this.MarkerID_ABB) { oPolygon.Fill = new SolidColorBrush(Colors.Coral); } else if (nMarkerID == this.Marker_Hello) { oPolygon.Fill = new SolidColorBrush(Colors.Aquamarine); } else { oPolygon.Fill = new SolidColorBrush(Colors.OrangeRed); } oPolygon.Points = new PointCollection(new Point[] { new Point(oPoints[0].x, oPoints[0].y), new Point(oPoints[1].x, oPoints[1].y), new Point(oPoints[2].x, oPoints[2].y), new Point(oPoints[3].x, oPoints[3].y) }); this.CvMainZm.Children.Add(oPolygon); }
void onCollisionWithQuad(string name, bool status) { if (isLevelActivated) { isQuadCollision = status; MarkerInfo obj = markerlList.Find(item => item.ImageTargetObject.name == name); int index = markerlList.FindIndex(item => item.ImageTargetObject.name == name); if (status && index == 1 && quadObject != null) { quadObject.GetComponent <MeshRenderer> ().enabled = false; } else if (obj != null && index == 1) { Debug.Log("collision with quad second"); obj.ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material = redMaterial; } } }
private static void AddRegionOrMarker(MarkerInfo markerInfo, BaseMarkerList <Region> regionList, BaseMarkerList <Marker> markerList) { var regionOrMarker = GetRegionOrMarker(markerInfo); if (regionOrMarker is Region) { regionList.Add(regionOrMarker); } else { markerList.Add(regionOrMarker); } if (!string.IsNullOrEmpty(markerInfo.Label)) { regionOrMarker.Label = markerInfo.Label; } }
private void onResourceStart() { lock (Global.Lock) { try { var JOB_IMMIGRANT_MARKER = new MarkerInfo(1, new Vector3(84.0330581665039, -1291.85900878906, 28.2591037750244), new Vector3(1, 1, 1), new Vector3(35.5, 1, 1), new Vector3(1.5, 1.5, 1), 100, 236, 147, 89, 1, 2); JOB_IMMIGRANT_MARKER.SetData("JOB_IMMIGRANT", 1); new BlipInfo(new Vector3(84.0330581665039, -1291.85900878906, 28.2591037750244), 408, 2, true, 0, "Работа иммигранта"); new TLabelInfo("Работа иммигранта", new Vector3(84.0330581665039, -1291.85900878906, 30.2591037750244), 25, 1); } catch (Exception exp) { API.consoleOutput("Произошла ошибка при инициализации миссии иммигранта: " + exp.Message); return; } } }
private static Marker GetRegionOrMarker(MarkerInfo markerInfo) { var regionInfo = markerInfo as RegionInfo; if (regionInfo != null) { //if (!string.IsNullOrEmpty(regionInfo.Label)) //{ // return new Region(regionInfo.Position, regionInfo.Length, regionInfo.Label); //} return(new Region(regionInfo.Position, regionInfo.Length)); } //if (!string.IsNullOrEmpty(markerInfo.Label)) //{ // return new Marker(markerInfo.Position, markerInfo.Label); //} return(new Marker(markerInfo.Position)); }
private static string ConvertMarkerInfoToString(MarkerInfo markerInfo) { StringBuilder sb = new StringBuilder(); string markerInfoType = markerInfo.Type.Replace(',', Definitions.PlaceholderForCommaChar); string markerInfoDescription = markerInfo.Description.Replace(',', Definitions.PlaceholderForCommaChar); // obligatory // Position and ChannelNumber are stored in file as 1-indexed sb.Append(Invariant($"{markerInfoType},{markerInfoDescription},{markerInfo.Position + 1},{markerInfo.Length},{markerInfo.ChannelNumber + 1}")); // optional if (markerInfo.Date != null) { sb.Append(",").Append(markerInfo.Date.Value.ToString("yyyyMMddHHmmssffffff", CultureInfo.InvariantCulture)); } return(sb.ToString()); }
private void ProcessMarker(MarkerInfo marker) { CurrentMatchError = Mathf.Min(marker.match_error, CurrentMatchError); CurrentTransError = Mathf.Min(marker.trans_error, CurrentTransError); if (marker.match_error < MaxMatchError && marker.trans_error < MaxTransformationError) { Matrix4x4 matrixRaw = MatrixFromFloatArray(marker.transformation_matrix); var transformMatrix = LHMatrixFromRHMatrix(matrixRaw); OnNewPoseDetected(new MarkerPose { Id = marker.id, Confidence = marker.confidence, Position = transformMatrix.GetPosition() + new Vector3(Offset, 0, 0), Rotation = transformMatrix.GetRotation() }); } }
private void SavePokestopsInfo() { var file = GlobalVars.FortsFile; if (file == "") { file = System.IO.Path.Combine(Program.path, "forts.json"); } var array = new List <MarkerInfo>(); var infoJSON = ""; if (System.IO.File.Exists(file)) { infoJSON = System.IO.File.ReadAllText(file); array = Newtonsoft.Json.JsonConvert.DeserializeObject <List <MarkerInfo> >(infoJSON); } foreach (var element in _pokeStopsOverlay.Markers) { var mInfo = new MarkerInfo(); mInfo.type = 0; mInfo.info = element.ToolTipText; mInfo.location = element.Position; if (!ContainsFort(array, mInfo)) { array.Add(mInfo); } } foreach (var element in _pokeGymsOverlay.Markers) { var mInfo = new MarkerInfo(); mInfo.type = 1; mInfo.info = element.ToolTipText; mInfo.location = element.Position; if (!ContainsFort(array, mInfo)) { array.Add(mInfo); } } infoJSON = Newtonsoft.Json.JsonConvert.SerializeObject(array, Newtonsoft.Json.Formatting.Indented); System.IO.File.WriteAllText(file, infoJSON); }
private void DrawARDetectInfo(int nMarkerID, string sMarkerName) { double dConfidence = Math.Round(this.ARMarkerSystem.getConfidence(nMarkerID), 5); NyARIntPoint2d oCenterPoint = this.ARMarkerSystem.getCenter(nMarkerID); NyARIntPoint2d[] oPoints = this.ARMarkerSystem.getVertex2D(nMarkerID); if (MarkerInfos.Contains(nMarkerID)) { MarkerInfo oMarkerInfo = this.MarkerInfos[nMarkerID] as MarkerInfo; oMarkerInfo.Update(oPoints, oCenterPoint, dConfidence); this.ShowMarkerInfo(oMarkerInfo); } else { MarkerInfo oMarkerInfo = new MarkerInfo(nMarkerID, oPoints, oCenterPoint, dConfidence); this.MarkerInfos.Add(nMarkerID, oMarkerInfo); this.ShowMarkerInfo(oMarkerInfo); } }
private void ApplyButton_Click(object sender, EventArgs e) { var markerInfo = new MarkerInfo { Address = _addressText.Text, Latitude = double.Parse(_latitudeText.Text), Longtitude = double.Parse(_longtitudeText.Text), Title = _titleEditText.Text, Snippet = _snippetEditText.Text, LastModData = DateTime.Now }; var markerMessage = new MarkerMessage { IsSuccess = true, MarkerInfo = markerInfo }; Messenger.Default.Send(markerMessage); _navigationService.GoBack(); }
private async void HandleOnGoogleMapClick(object sender, GoogleMap.MapClickEventArgs e) { if (!RequestExternalStoragePermissionIfNecessary(RC_WRITE_EXTERNAL_STORAGE_PERMISSION)) { return; } Address address = await GeocodingHelper.ReverseGeocodeCurrentLocation(e.Point, this); var marker = new MarkerInfo { Longtitude = e.Point.Longitude, Latitude = e.Point.Latitude, Address = address == null ? string.Empty : $"{address.CountryName} {address.AdminArea}", LastModData = DateTime.Now }; string markerString = JsonConvert.SerializeObject(marker); App.Locator.MainViewModel.CreateNewMarkerCommand.Execute(markerString); }
private void HandleOnGoogleMapMarkerClick(object sender, GoogleMap.MarkerClickEventArgs e) { e.Handled = true; if (!RequestExternalStoragePermissionIfNecessary(RC_WRITE_EXTERNAL_STORAGE_PERMISSION)) { return; } MarkerInfo markerInfo = _markers.FirstOrDefault(x => x.Latitude == e.Marker.Position.Latitude && x.Longtitude == e.Marker.Position.Longitude); if (markerInfo == null) { return; } string markerString = JsonConvert.SerializeObject(markerInfo); App.Locator.MainViewModel.CreateNewMarkerCommand.Execute(markerString); }
void onCollisionWithQuad(string name, bool status) { isQuadCollision = status; MarkerInfo obj = markerlList.Find(item => item.ImageTargetObject.name == name); int index = markerlList.FindIndex(item => item.ImageTargetObject.name == name); //Debug.Log ("collision with quad " + name + " count " + index); if (status && index == 1 && quadObject != null) { // Debug.Log (quadObject); quadObject.GetComponent <MeshRenderer> ().enabled = false; obj.ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material = blueMaterial; } else if (obj != null) { // Debug.Log ("collision exit"); //Destroy (quadObject); // CreateQuad (); obj.ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material = redMaterial; } }
void onCollisionWithPlane(string name, bool status) { isPlaneCollision = status; MarkerInfo obj = markerlList.Find(item => item.ImageTargetObject.name == name); //Debug.Log ("collision with plane " + name + " count " + status + " obj " + obj); if (status && obj != null) { //Debug.Log ("plane mesh off " + obj.Name); planeObject.GetComponent <MeshRenderer> ().enabled = false; obj.ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material = greenMaterial; } else if (obj != null) { obj.ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material = redMaterial; } if (!status) { isPlaneIndex = -1; } }
void onCollisionWithQuad(string name, bool status) { if (isLevelActivated) { isCollision = status; MarkerInfo obj = markerlList.Find(item => item.ImageTargetObject.name == name); int index = markerlList.FindIndex(item => item.ImageTargetObject.name == name); Debug.Log("collision with quad " + isCollision + " status " + status); if (status && index == 2 && quadObject != null) { quadObject.GetComponent <MeshRenderer> ().enabled = false; markerlList [markerlList.Count - 1].ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material = markerlList [markerlList.Count - 2].ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material; } else if (obj != null) { Destroy(quadObject); CreateQuad(); obj.ImageTargetObject.transform.GetChild(0).gameObject.transform.GetChild(0).GetComponent <MeshRenderer> ().material = redMaterial; } } }
private void ProcessMarker(MarkerInfo marker) { var pose = marker.transform_matrix; var transformMatrix = new Matrix4x4(); transformMatrix.m00 = pose.m00; transformMatrix.m01 = pose.m01; transformMatrix.m02 = pose.m02; transformMatrix.m03 = pose.m03; transformMatrix.m10 = pose.m10; transformMatrix.m11 = pose.m11; transformMatrix.m12 = pose.m12; transformMatrix.m13 = pose.m13; transformMatrix.m20 = pose.m20; transformMatrix.m21 = pose.m21; transformMatrix.m22 = pose.m22; transformMatrix.m23 = pose.m23; transformMatrix.m30 = 0; transformMatrix.m31 = 0; transformMatrix.m32 = 0; transformMatrix.m33 = 1; if (NewPoseDetected != null) { NewPoseDetected(new MarkerPose { Id = marker.id, Name = marker.name, Position = transformMatrix.GetPosition(), Rotation = transformMatrix.GetRotation() }); } }
public object AssociateMarker(params object[] markerConfigs) { // make sure we are initialized if (!initialized) throw new MarkerException("NewNyAR is not initialized. Call InitTracker(...)"); if (!(markerConfigs.Length == 2 || markerConfigs.Length == 5)) throw new MarkerException("Problem in AssociateMarker in NewNyAR"); MarkerInfo markerInfo = new MarkerInfo(); if (markerConfigs.Length == 2) { string arrayName = ""; ComputationMethod method = ComputationMethod.Average; try { arrayName = (String)markerConfigs[0]; method = (ComputationMethod)markerConfigs[1]; } catch (Exception exception) { throw new MarkerException("Problem in AssociateMarker in NewNyAR"); } ParseArray(arrayName, ref markerInfo); markerInfo.Method = method; } else { float pattSize = 0, conf = 0; String pattId = ""; try { pattId = (String)(markerConfigs[0]); pattSize = (float)markerConfigs[3]; conf = (float)markerConfigs[4]; } catch (Exception) { throw new MarkerException("Problem in AssociateMarker in NewNyAR"); } IdCode code = new IdCode(); code.Id = int.Parse(pattId); code.Size = pattSize; code.MID = markerSystem.addNyIdMarker(code.Id, code.Size); codes.Add(code); pattSizes.Add(pattSize); PatternInfo info = new PatternInfo(); info.ConfidenceThreshold = conf; markerInfo.PatternInfos.Add(code.MID, info); markerInfo.RelativeTransforms.Add(code.MID, Matrix.Identity); markerInfo.Method = ComputationMethod.Average; markerInfoMap.Add(code.MID, markerInfo); } markerInfoList.Add(markerInfo); /* // reinitialize the multi marker detector if the programmer adds new marker node // after the initialization phase if (started) { } * */ return markerInfo; }
private void ParseArray(string arrayName, ref MarkerInfo markerInfo) { XElement markerArray = XElement.Load(@"" + arrayName); float pattSize = 0; int pattId; Vector3 center = Vector3.Zero; string[] tmp = null; foreach (XElement markerElement in markerArray.Elements("marker")) { try { pattId = int.Parse(markerElement.Attribute("patternId").Value); pattSize = float.Parse(markerElement.Attribute("patternSize").Value); tmp = markerElement.Attribute("center").Value.Split(','); center.X = -float.Parse(tmp[0]); center.Y = float.Parse(tmp[1]); } catch (Exception exp) { throw new MarkerException("Wrong marker array format: " + exp.Message); } IdCode code = new IdCode(); code.Id = pattId; code.Size = pattSize; code.MID = markerSystem.addNyIdMarker(code.Id, code.Size); codes.Add(code); pattSizes.Add(pattSize); PatternInfo info = new PatternInfo(); markerInfo.PatternInfos.Add(code.MID, info); markerInfo.RelativeTransforms.Add(code.MID, Matrix.CreateTranslation(center)); markerInfo.Method = ComputationMethod.Average; markerInfoMap.Add(code.MID, markerInfo); } }
/// <summary> /// Associates a marker with an identifier so that the identifier can be used to find this /// marker after processing the image. /// </summary> /// <param name="markerConfigs">A set of parameters that identifies a maker. (e.g., for /// ARTag, this parameter would be the marker array name or marker ID)</param> /// <returns>An identifier for this marker object</returns> public Object AssociateMarker(params Object[] markerConfigs) { // make sure we are initialized if (!initialized) throw new MarkerException("ARToolkitTracker is not initialized. Call InitTracker(...)"); if (!(markerConfigs.Length == 2 || markerConfigs.Length == 5)) throw new MarkerException(GetAssocMarkerUsage()); MarkerInfo markerInfo = new MarkerInfo(); if (markerConfigs.Length == 2) { string arrayName = ""; ComputationMethod method = ComputationMethod.Average; try { arrayName = (String)markerConfigs[0]; method = (ComputationMethod)markerConfigs[1]; } catch (Exception) { throw new MarkerException(GetAssocMarkerUsage()); } ParseArray(arrayName, ref markerInfo); markerInfo.Method = method; } else { int pattWidth = 0, pattHeight = 0; float pattSize = 0, conf = 0; String pattName = ""; try { pattName = (String)markerConfigs[0]; pattWidth = (int)markerConfigs[1]; pattHeight = (int)markerConfigs[2]; pattSize = (float)markerConfigs[3]; conf = (float)markerConfigs[4]; } catch (Exception) { throw new MarkerException(GetAssocMarkerUsage()); } NyARCode code = new NyARCode(pattWidth, pattHeight); code.loadARPatt(new System.IO.StreamReader(TitleContainer.OpenStream(pattName))); codes.Add(code); pattSizes.Add(pattSize); PatternInfo info = new PatternInfo(); info.ConfidenceThreshold = conf; int id = codes.Count - 1; markerInfo.PatternInfos.Add(id, info); markerInfo.RelativeTransforms.Add(id, Matrix.Identity); markerInfo.Method = ComputationMethod.Average; markerInfoMap.Add(id, markerInfo); } markerInfoList.Add(markerInfo); // reinitialize the multi marker detector if the programmer adds new marker node // after the initialization phase if (started) { multiDetector = new MarkerDetector(param, codes.ToArray(), pattSizes.ToArray(), codes.Count, raster.getBufferType()); multiDetector.setContinueMode(continuousMode); } return markerInfo; }
private void ParseArray(string arrayName, ref MarkerInfo markerInfo) { XElement markerArray = XElement.Load(@"" + arrayName); int pattWidth = 0, pattHeight = 0; float pattSize = 0, conf = 0; String pattName = ""; Vector3 upperLeftCorner = Vector3.Zero; string[] tmp = null; foreach (XElement markerElement in markerArray.Elements("marker")) { try { pattName = markerElement.Attribute("patternName").Value; pattWidth = int.Parse(markerElement.Attribute("patternWidth").Value); pattHeight = int.Parse(markerElement.Attribute("patternHeight").Value); pattSize = float.Parse(markerElement.Attribute("patternSize").Value); conf = float.Parse(markerElement.Attribute("confidence").Value); tmp = markerElement.Attribute("upperLeftCorner").Value.Split(','); upperLeftCorner.X = -float.Parse(tmp[0]); upperLeftCorner.Y = float.Parse(tmp[1]); } catch (Exception exp) { throw new MarkerException("Wrong marker array format: " + exp.Message); } NyARCode code = new NyARCode(pattWidth, pattHeight); code.loadARPatt(new System.IO.StreamReader(TitleContainer.OpenStream(pattName))); codes.Add(code); pattSizes.Add(pattSize); PatternInfo info = new PatternInfo(); info.ConfidenceThreshold = conf; int id = codes.Count - 1; markerInfo.PatternInfos.Add(id, info); markerInfo.RelativeTransforms.Add(id, Matrix.CreateTranslation(upperLeftCorner)); markerInfoMap.Add(id, markerInfo); } }