private void SetMarker() { for (int i = 0; i < idsAruco.cols(); i++) { int idMarker = (int)idsAruco.get(0, i)[0]; Debug.Log(idMarker); if (markerSettingsMarkerActual != null && markerSettingsMarkerActual.getId() == idMarker) { ShowGameObjectMarker(); } else { markerSettingsMarkerActual = null; foreach (MarkerSettings markerSettings in markerSettingsList) { if (idMarker != -1 && idMarker == markerSettings.getId()) { markerSettingsMarkerActual = markerSettings; ShowGameObjectMarker(); } } } } }
// Use this for initialization void Start() { GameObject cameraAR = GameObject.Find("ARCamera"); ARCamera = cameraAR.GetComponent <Camera>(); markerSettingsMarkerLessActual = null; markerSettingsMarkerActual = null; patternTrackingInfo = new PatternTrackingInfo(); markerSettingsList = markerList.transform.GetComponentsInChildren <MarkerSettings>(); if (markerSettingsList.Length == 0) { existeObjetoDetectar = false; } webCamTextureToMatHelper = gameObject.GetComponent <WebCamTextureToMatHelper>(); #if UNITY_ANDROID && !UNITY_EDITOR // Avoids the front camera low light issue that occurs in only some Android devices (e.g. Google Pixel, Pixel2). webCamTextureToMatHelper.avoidAndroidFrontCameraLowLightIssue = true; #endif webCamTextureToMatHelper.Initialize(); dictionaryAruco = Aruco.getPredefinedDictionary(PropertiesModel.DictionaryId); cornersAruco = new List <Mat>(); idsAruco = new Mat(); }
void CreateComponent(InformationObject informationObject, PatternDetector patternDetector) { GameObject ARObjects = new GameObject(); ARObjects.name = "ARObjects"; ARObjects.SetActive(false); GameObject OBJMarkerSettings = new GameObject(); OBJMarkerSettings.name = "MarkerSettings"; MarkerDesign markerDesign = new MarkerDesign(); markerDesign.id = informationObject.IdMarker; MarkerSettings markerSettings = OBJMarkerSettings.AddComponent <MarkerSettings>(); markerSettings.PatternDetector = patternDetector; markerSettings.markerDesign = markerDesign; markerSettings.ARGameObject = ARObjects; GameObject objectAR = ImportResources.GetGameObject(informationObject.Name); GameObject objectCreated = Instantiate(objectAR); objectCreated.AddComponent <RectTransform>(); objectCreated.transform.position = Vector3.zero; objectCreated.transform.rotation = Quaternion.identity; objectCreated.layer = 8; objectCreated.transform.SetParent(ARObjects.transform); ARObjects.transform.SetParent(OBJMarkerSettings.transform); OBJMarkerSettings.transform.SetParent(markerList.transform); }
public Marker(object settings) : base(settings) { _settings = Settings as MarkerSettings; if (_settings == null) { throw new NotImplementedException(); } }
public IconDrawer(Bitmap icon, MarkerSettings colors) { ColorBrush = new SolidBrush(colors.Color); if (colors.ExtraColor != Color.Transparent) { ExtraColorBrush = new SolidBrush(colors.ExtraColor); } Bitmap = icon; }
private void SetMarkerLess() { if (markerSettingsMarkerLessActual != null && markerSettingsMarkerLessActual.GetPatternDetector().findPattern(rgbMat, patternTrackingInfo)) { ShowGameObjectMarkerLess(); } else { markerSettingsMarkerLessActual = null; foreach (MarkerSettings markerSettings in markerSettingsList) { PatternDetector patternDetector = markerSettings.GetPatternDetector(); if (patternDetector != null && patternDetector.findPattern(rgbMat, patternTrackingInfo)) { markerSettingsMarkerLessActual = markerSettings; ShowGameObjectMarkerLess(); } } } }
private void UpdateMarker(MarkerSettings settings) { if (_tribe != null) { _map.MarkerManager.UpdateMarker(_map, _tribe, settings); } else { _map.MarkerManager.UpdateMarker(_map, _player, settings); } _mainCommand.Image = GetMainCommandImage(GetMarker()); }
public void SetMarker(MarkerSettings settings) { _settings = settings; _player = null; _tribe = null; SetControlProperties(settings); }
public void LoadSettings() { curSettingsName = "Default"; Int32 settingsNodeCount; UserSettings us; Int32 settingsVer; XmlNode baseNode; XmlNodeList settingsNodes; XmlNode parseNode; XmlNodeList parseNodeList; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Global.ApplicationUserSettingsFile); baseNode = xmlDoc.DocumentElement; // There's no UserSettings element so we'll use the default settings. if (baseNode.Name != "UserSettings") { return; } if (baseNode.Attributes["version"] == null) { settingsVer = 0; } else { settingsVer = Int32.Parse(baseNode.Attributes["version"].Value); } switch (settingsVer) { case 0: break; case 1: parseNode = baseNode.SelectSingleNode("GlobalSettings"); if (parseNode == null) { break; } parseNodeList = parseNode.SelectNodes("item"); foreach (XmlNode node in parseNodeList) { parseNode = node.Attributes["name"]; if (parseNode == null) { continue; } switch (parseNode.Value) { case "UseSettings": parseNode = node.Attributes["value"]; if (parseNode != null) { curSettingsName = parseNode.Value; } break; case "HighestVersion": parseNode = node.Attributes["value"]; if (parseNode != null) { this.HighestVersion = Int32.Parse(parseNode.Value); } break; default: break; } } break; default: break; } if (settingsVer > 0) { settingsNodes = baseNode.SelectNodes("Settings"); } else { settingsNodes = xmlDoc.SelectNodes("UserSettings"); } settingsNodeCount = 0; foreach (XmlNode settingsNode in settingsNodes) { String settingsName; parseNode = settingsNode.Attributes["name"]; if (parseNode == null) { settingsName = "Default"; } else { settingsName = parseNode.Value; } us = null; if (settingsList.ContainsKey(settingsName)) { us = settingsList[settingsName]; } //foreach (UserSettings testUs in this.settingsList) //{ // if (testUs.SettingsName == settingsName) // us = testUs; //} if (us == null) { us = new UserSettings(); SetDefaults(us); us.SettingsName = settingsName; this.settingsList.Add(settingsName, us); } if (us.SettingsName == curSettingsName) { this.settings = us; curSettings = settingsNodeCount; } settingsNodeCount++; switch (settingsVer) { case 0: #region UserSettings version 0 Loader foreach (XmlNode node in settingsNode) { switch (node.Name) { case "InputWorldDirectory": us.InputWorldDirectory = node.InnerXml; break; case "OutputPreviewDirectory": us.OutputPreviewDirectory = node.InnerXml; break; case "IsChestFilterEnabled": us.IsChestFilterEnabled = Boolean.Parse(node.InnerXml); break; case "IsWallsDrawable": us.AreWallsDrawable = Boolean.Parse(node.InnerXml); break; case "OpenImageAfterDraw": us.OpenImageAfterDraw = Boolean.Parse(node.InnerXml); break; case "ShowChestTypes": us.ShowChestTypes = Boolean.Parse(node.InnerXml); break; case "UseCustomMarkers": us.UseCustomMarkers = Boolean.Parse(node.InnerXml); break; case "ChestListSortType": us.ChestListSortType = Int32.Parse(node.InnerXml); break; case "HighestVersion": this.HighestVersion = Int32.Parse(node.InnerXml); break; case "SymbolStates": parseNodeList = node.SelectNodes("item"); foreach (XmlNode n in parseNodeList) { String Key; Boolean Value; MarkerSettings mi; parseNode = n.SelectSingleNode("key").SelectSingleNode("string"); Key = parseNode.InnerXml; parseNode = n.SelectSingleNode("value").SelectSingleNode("boolean"); Value = Boolean.Parse(parseNode.InnerXml); if (us.MarkerStates.ContainsKey(Key)) { us.MarkerStates[Key].Drawing = Value; } else { String newKey = Global.Instance.Info.MarkerImageToName(Key); if (!us.MarkerStates.ContainsKey(newKey)) { newKey = String.Empty; } if (newKey == String.Empty) { mi = new MarkerSettings(); mi.Drawing = Value; us.MarkerStates.Add(Key, mi); } else { us.MarkerStates[newKey].Drawing = Value; } } } break; case "ChestFilterItems": parseNodeList = node.SelectNodes("item"); foreach (XmlNode n in parseNodeList) { String Key; Boolean Value; parseNode = n.SelectSingleNode("key").SelectSingleNode("string"); Key = parseNode.InnerXml; parseNode = n.SelectSingleNode("value").SelectSingleNode("boolean"); Value = Boolean.Parse(parseNode.InnerXml); if (Value == true) { us.ChestFilterItems.Add(Key); } } break; default: break; } } #endregion break; case 1: #region UserSettings version 1 Loader foreach (XmlNode node in settingsNode) { parseNode = node.Attributes["name"]; if (parseNode == null) { continue; } switch (parseNode.Value) { case "InputWorldDirectory": parseNode = node.Attributes["value"]; if (parseNode != null) { us.InputWorldDirectory = parseNode.Value; } break; case "OutputPreviewDirectory": parseNode = node.Attributes["value"]; if (parseNode != null) { us.OutputPreviewDirectory = parseNode.Value; } break; case "IsChestFilterEnabled": parseNode = node.Attributes["value"]; if (parseNode != null) { us.IsChestFilterEnabled = Boolean.Parse(parseNode.Value); } break; case "UseOfficialColors": parseNode = node.Attributes["value"]; if (parseNode != null) { us.UseOfficialColors = Boolean.Parse(parseNode.Value); } break; case "AreWiresDrawable": parseNode = node.Attributes["value"]; if (parseNode != null) { us.AreWiresDrawable = Boolean.Parse(parseNode.Value); } break; case "AreWallsDrawable": parseNode = node.Attributes["value"]; if (parseNode != null) { us.AreWallsDrawable = Boolean.Parse(parseNode.Value); } break; case "OpenImageAfterDraw": parseNode = node.Attributes["value"]; if (parseNode != null) { us.OpenImageAfterDraw = Boolean.Parse(parseNode.Value); } break; case "ShowChestTypes": parseNode = node.Attributes["value"]; if (parseNode != null) { us.ShowChestTypes = Boolean.Parse(parseNode.Value); } break; case "UseCustomMarkers": parseNode = node.Attributes["value"]; if (parseNode != null) { us.UseCustomMarkers = Boolean.Parse(parseNode.Value); } break; case "ChestListSortType": parseNode = node.Attributes["value"]; if (parseNode != null) { us.ChestListSortType = Int32.Parse(parseNode.Value); } break; case "CropImageType": parseNode = node.Attributes["value"]; if (parseNode != null) { us.CropImageType = Int32.Parse(parseNode.Value); } break; case "ShowChestItems": parseNode = node.Attributes["value"]; if (parseNode != null) { us.ShowChestItems = Boolean.Parse(parseNode.Value); } break; case "ShowNormalItems": parseNode = node.Attributes["value"]; if (parseNode != null) { us.ShowNormalItems = Boolean.Parse(parseNode.Value); } break; case "MarkerStates": parseNodeList = node.SelectNodes("listitem"); foreach (XmlNode n in parseNodeList) { String Name; MarkerSettings mi; parseNode = n.Attributes["name"]; if (parseNode == null) { break; } Name = parseNode.Value; if (us.MarkerStates.TryGetValue(Name, out mi) == false) { mi = new MarkerSettings(); } parseNode = n.Attributes["draw"]; if (parseNode != null) { mi.Drawing = Boolean.Parse(parseNode.Value); } parseNode = n.Attributes["filter"]; if (parseNode != null) { mi.Filtering = Boolean.Parse(parseNode.Value); } parseNode = n.Attributes["min"]; if (parseNode != null) { mi.Min = Int32.Parse(parseNode.Value); } parseNode = n.Attributes["max"]; if (parseNode != null) { mi.Max = Int32.Parse(parseNode.Value); } if (!us.MarkerStates.ContainsKey(Name)) { us.MarkerStates.Add(Name, mi); } } break; case "ChestFilterItems": parseNode = node.Attributes["filter"]; if (parseNode == null) { continue; } String[] splitList = parseNode.Value.Split(';'); foreach (String s in splitList) { us.ChestFilterItems.Add(s); } break; default: break; } } #endregion break; default: return; } } parseNode = baseNode.SelectSingleNode("CustomColors"); if (parseNode != null) { parseNode = parseNode.Attributes["list"]; if (parseNode != null) { String[] colorList = parseNode.Value.Split(';'); Color newColor; for (Int32 sPos = 0; sPos < colorList.Length; sPos += 2) { if (Global.TryParseColor(colorList[sPos + 1], out newColor) == false) { continue; } if (Global.Instance.Info.Colors.ContainsKey(colorList[sPos])) { continue; } Global.Instance.Info.AddCustomColor(colorList[sPos], newColor); } } } }
/// <summary> /// Reads a Marker from the XML node /// </summary> private static Marker ReadMarker(XmlReader r) { string name = r.GetAttribute("Name"); bool enabled = Convert.ToBoolean(r.GetAttribute("Enabled").ToLower()); Color color = XmlHelper.GetColor(r.GetAttribute("Color")); Color extraColor = XmlHelper.GetColor(r.GetAttribute("ExtraColor")); string view = r.GetAttribute("View"); var settings = new MarkerSettings(name, enabled, color, extraColor, view); Marker marker = null; if (!r.IsEmptyElement) { r.ReadStartElement(); while (r.IsStartElement("Marker")) { string markerType = r.GetAttribute("Type"); string markerName = r.GetAttribute("Name"); if (markerType == "Player") { Player ply = World.Default.GetPlayer(markerName); if (ply != null) { marker = new Marker(ply, settings); } } else { Debug.Assert(markerType == "Tribe"); Tribe tribe = World.Default.GetTribe(markerName); if (tribe != null) { marker = new Marker(tribe, settings); } } r.Read(); } r.ReadEndElement(); } else { r.Read(); } return marker ?? new Marker(settings); }
/// <summary> /// Update a tribe marker and refresh the map /// </summary> public void UpdateMarker(Map map, Tribe tribe, MarkerSettings settings) { if (World.Default.You.HasTribe && tribe == World.Default.You.Tribe) { settings = MarkerSettings.ChangeName(settings, Marker.DefaultNames.YourTribe); YourTribeMarker = new Marker(settings); } else { _markers.RemoveAll(x => x.Tribe == tribe); _markers.Add(new Marker(tribe, settings)); } World.Default.InvalidateMarkers(); }
/// <summary> /// Update a player marker and refresh the map /// </summary> public void UpdateMarker(Map map, Player player, MarkerSettings settings) { if (player == World.Default.You) { settings = MarkerSettings.ChangeName(settings, Marker.DefaultNames.You); YourMarker = new Marker(settings); } else { _markers.RemoveAll(x => x.Player == player); _markers.Add(new Marker(player, settings)); } World.Default.InvalidateMarkers(); }
/// <summary> /// Update Enemy or Abandoned markers /// </summary> public void UpdateDefaultMarker(Map map, MarkerSettings settings) { switch (settings.Name) { case Marker.DefaultNames.Abandoned: AbandonedMarker = new Marker(settings); break; case Marker.DefaultNames.Enemy: EnemyMarker = new Marker(settings); break; case Marker.DefaultNames.You: YourMarker = new Marker(settings); break; case Marker.DefaultNames.YourTribe: YourTribeMarker = new Marker(settings); break; default: Debug.Assert(false, "'You' and 'Your Tribe' markers are updated through the regular UpdateMarker methods"); break; } World.Default.InvalidateMarkers(); }
// Use this for initialization void Start() { gameObject.transform.localScale = new Vector3(imgTexture.width, imgTexture.height, 1); Debug.Log("Screen.width " + Screen.width + " Screen.height " + Screen.height + " Screen.orientation " + Screen.orientation); Mat imgMat = new Mat(imgTexture.height, imgTexture.width, CvType.CV_8UC4); Utils.texture2DToMat(imgTexture, imgMat); Debug.Log("imgMat dst ToString " + imgMat.ToString()); float width = imgMat.width(); float height = imgMat.height(); float imageSizeScale = 1.0f; float widthScale = (float)Screen.width / width; float heightScale = (float)Screen.height / height; if (widthScale < heightScale) { Camera.main.orthographicSize = (width * (float)Screen.height / (float)Screen.width) / 2; imageSizeScale = (float)Screen.height / (float)Screen.width; } else { Camera.main.orthographicSize = height / 2; } //set cameraparam int max_d = (int)Mathf.Max(width, height); double fx = max_d; double fy = max_d; double cx = width / 2.0f; double cy = height / 2.0f; Mat camMatrix = new Mat(3, 3, CvType.CV_64FC1); camMatrix.put(0, 0, fx); camMatrix.put(0, 1, 0); camMatrix.put(0, 2, cx); camMatrix.put(1, 0, 0); camMatrix.put(1, 1, fy); camMatrix.put(1, 2, cy); camMatrix.put(2, 0, 0); camMatrix.put(2, 1, 0); camMatrix.put(2, 2, 1.0f); Debug.Log("camMatrix " + camMatrix.dump()); MatOfDouble distCoeffs = new MatOfDouble(0, 0, 0, 0); Debug.Log("distCoeffs " + distCoeffs.dump()); //calibration camera Size imageSize = new Size(width * imageSizeScale, height * imageSizeScale); double apertureWidth = 0; double apertureHeight = 0; double[] fovx = new double[1]; double[] fovy = new double[1]; double[] focalLength = new double[1]; Point principalPoint = new Point(0, 0); double[] aspectratio = new double[1]; Calib3d.calibrationMatrixValues(camMatrix, imageSize, apertureWidth, apertureHeight, fovx, fovy, focalLength, principalPoint, aspectratio); Debug.Log("imageSize " + imageSize.ToString()); Debug.Log("apertureWidth " + apertureWidth); Debug.Log("apertureHeight " + apertureHeight); Debug.Log("fovx " + fovx [0]); Debug.Log("fovy " + fovy [0]); Debug.Log("focalLength " + focalLength [0]); Debug.Log("principalPoint " + principalPoint.ToString()); Debug.Log("aspectratio " + aspectratio [0]); //To convert the difference of the FOV value of the OpenCV and Unity. double fovXScale = (2.0 * Mathf.Atan((float)(imageSize.width / (2.0 * fx)))) / (Mathf.Atan2((float)cx, (float)fx) + Mathf.Atan2((float)(imageSize.width - cx), (float)fx)); double fovYScale = (2.0 * Mathf.Atan((float)(imageSize.height / (2.0 * fy)))) / (Mathf.Atan2((float)cy, (float)fy) + Mathf.Atan2((float)(imageSize.height - cy), (float)fy)); Debug.Log("fovXScale " + fovXScale); Debug.Log("fovYScale " + fovYScale); //Adjust Unity Camera FOV if (widthScale < heightScale) { ARCamera.fieldOfView = (float)(fovx [0] * fovXScale); } else { ARCamera.fieldOfView = (float)(fovy [0] * fovYScale); } MarkerDesign[] markerDesigns = new MarkerDesign[markerSettings.Length]; for (int i = 0; i < markerDesigns.Length; i++) { markerDesigns [i] = markerSettings [i].markerDesign; } MarkerDetector markerDetector = new MarkerDetector(camMatrix, distCoeffs, markerDesigns); markerDetector.processFrame(imgMat, 1); foreach (MarkerSettings settings in markerSettings) { settings.setAllARGameObjectsDisable(); } if (shouldMoveARCamera) { List <Marker> findMarkers = markerDetector.getFindMarkers(); if (findMarkers.Count > 0) { Marker marker = findMarkers [0]; if (markerSettings.Length > 0) { MarkerSettings settings = markerSettings [0]; if (marker.id == settings.getMarkerId()) { Matrix4x4 transformationM = marker.transformation; Debug.Log("transformationM " + transformationM.ToString()); Matrix4x4 invertZM = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, new Vector3(1, 1, -1)); Debug.Log("invertZM " + invertZM.ToString()); Matrix4x4 invertYM = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, new Vector3(1, -1, 1)); Debug.Log("invertYM " + invertYM.ToString()); GameObject ARGameObject = settings.getARGameObject(); if (ARGameObject != null) { Matrix4x4 ARM = ARGameObject.transform.localToWorldMatrix * invertZM * transformationM.inverse * invertYM; Debug.Log("ARM " + ARM.ToString()); ARGameObject.SetActive(true); ARUtils.SetTransformFromMatrix(ARCamera.transform, ref ARM); } } } } } else { List <Marker> findMarkers = markerDetector.getFindMarkers(); for (int i = 0; i < findMarkers.Count; i++) { Marker marker = findMarkers [i]; foreach (MarkerSettings settings in markerSettings) { if (marker.id == settings.getMarkerId()) { Matrix4x4 transformationM = marker.transformation; Debug.Log("transformationM " + transformationM.ToString()); Matrix4x4 invertYM = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, new Vector3(1, -1, 1)); Debug.Log("invertYM " + invertYM.ToString()); Matrix4x4 invertZM = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, new Vector3(1, 1, -1)); Debug.Log("invertZM " + invertZM.ToString()); Matrix4x4 ARM = ARCamera.transform.localToWorldMatrix * invertYM * transformationM * invertZM; Debug.Log("ARM " + ARM.ToString()); GameObject ARGameObject = settings.getARGameObject(); if (ARGameObject != null) { ARUtils.SetTransformFromMatrix(ARGameObject.transform, ref ARM); ARGameObject.SetActive(true); } } } } } Texture2D texture = new Texture2D(imgMat.cols(), imgMat.rows(), TextureFormat.RGBA32, false); Utils.matToTexture2D(imgMat, texture); gameObject.GetComponent <Renderer> ().material.mainTexture = texture; }
// Update is called once per frame void Update() { if (webCamTextureToMatHelper.IsPlaying() && webCamTextureToMatHelper.DidUpdateThisFrame()) { Mat rgbaMat = webCamTextureToMatHelper.GetMat(); markerDetector.processFrame(rgbaMat, 1); foreach (MarkerSettings settings in markerSettings) { settings.setAllARGameObjectsDisable(); } if (shouldMoveARCamera) { List <Marker> findMarkers = markerDetector.getFindMarkers(); if (findMarkers.Count > 0) { Marker marker = findMarkers[0]; if (markerSettings.Length > 0) { MarkerSettings settings = markerSettings[0]; if (marker.id == settings.getMarkerId()) { Matrix4x4 transformationM = marker.transformation; // right-handed coordinates system (OpenCV) to left-handed one (Unity) // https://stackoverflow.com/questions/30234945/change-handedness-of-a-row-major-4x4-transformation-matrix Matrix4x4 ARM = invertYM * transformationM * invertYM; // Apply Y-axis and Z-axis refletion matrix. (Adjust the posture of the AR object) ARM = ARM * invertYM * invertZM; GameObject ARGameObject = settings.getARGameObject(); if (ARGameObject != null) { ARM = ARGameObject.transform.localToWorldMatrix * ARM.inverse; //Debug.Log("ARM " + ARM.ToString()); ARGameObject.SetActive(true); ARUtils.SetTransformFromMatrix(ARCamera.transform, ref ARM); } } } } } else { List <Marker> findMarkers = markerDetector.getFindMarkers(); for (int i = 0; i < findMarkers.Count; i++) { Marker marker = findMarkers[i]; foreach (MarkerSettings settings in markerSettings) { if (marker.id == settings.getMarkerId()) { Matrix4x4 transformationM = marker.transformation; // right-handed coordinates system (OpenCV) to left-handed one (Unity) // https://stackoverflow.com/questions/30234945/change-handedness-of-a-row-major-4x4-transformation-matrix Matrix4x4 ARM = invertYM * transformationM * invertYM; // Apply Y-axis and Z-axis refletion matrix. (Adjust the posture of the AR object) ARM = ARM * invertYM * invertZM; ARM = ARCamera.transform.localToWorldMatrix * ARM; //Debug.Log("ARM " + ARM.ToString()); GameObject ARGameObject = settings.getARGameObject(); if (ARGameObject != null) { ARUtils.SetTransformFromMatrix(ARGameObject.transform, ref ARM); ARGameObject.SetActive(true); } } } } } Utils.fastMatToTexture2D(rgbaMat, texture); } }
public void SetMarker(Player player) { _settings = null; _player = player; _tribe = null; Marker marker = World.Default.Map.MarkerManager.GetMarker(player); SetControlProperties(marker.Settings); }
public void SetMarker(Tribe tribe) { _settings = null; _player = null; _tribe = tribe; Marker marker = World.Default.Map.MarkerManager.GetMarker(tribe); SetControlProperties(marker.Settings); }
private void UpdateMarker(MarkerSettings settings) { if (_settings != null) { if (AutoUpdateMarkers) { World.Default.Map.MarkerManager.UpdateDefaultMarker(World.Default.Map, settings); } _settings = settings; } else if (_tribe != null) { Debug.Assert(AutoUpdateMarkers); World.Default.Map.MarkerManager.UpdateMarker(World.Default.Map, _tribe, settings); } else { Debug.Assert(AutoUpdateMarkers); World.Default.Map.MarkerManager.UpdateMarker(World.Default.Map, _player, settings); } }
/// <summary> /// Make the control reflect the MarkerSettings /// </summary> private void SetControlProperties(MarkerSettings settings) { _settingProperties = true; MarkerView.DataSource = World.Default.Views.GetBackgroundViews(AllowBarbarianViews).ToArray(); MarkerView.SelectedValue = settings.View; MarkerActive.Checked = settings.Enabled; MarkerColor.SelectedColor = settings.Color; MarkerExtraColor.SelectedColor = settings.ExtraColor; _settingProperties = false; }
// Update is called once per frame void Update() { if (webCamTextureToMatHelper.IsPlaying() && webCamTextureToMatHelper.DidUpdateThisFrame()) { Mat rgbaMat = webCamTextureToMatHelper.GetMat(); markerDetector.processFrame(rgbaMat, 1); foreach (MarkerSettings settings in markerSettings) { settings.setAllARGameObjectsDisable(); } if (shouldMoveARCamera) { List <Marker> findMarkers = markerDetector.getFindMarkers(); if (findMarkers.Count > 0) { Marker marker = findMarkers [0]; if (markerSettings.Length > 0) { MarkerSettings settings = markerSettings [0]; if (marker.id == settings.getMarkerId()) { transformationM = marker.transformation; // Debug.Log ("transformationM " + transformationM.ToString ()); GameObject ARGameObject = settings.getARGameObject(); if (ARGameObject != null) { ARM = ARGameObject.transform.localToWorldMatrix * invertZM * transformationM.inverse * invertYM; //Debug.Log ("arM " + arM.ToString ()); ARGameObject.SetActive(true); ARUtils.SetTransformFromMatrix(ARCamera.transform, ref ARM); } } } } } else { List <Marker> findMarkers = markerDetector.getFindMarkers(); for (int i = 0; i < findMarkers.Count; i++) { Marker marker = findMarkers [i]; foreach (MarkerSettings settings in markerSettings) { if (marker.id == settings.getMarkerId()) { transformationM = marker.transformation; // Debug.Log ("transformationM " + transformationM.ToString ()); ARM = ARCamera.transform.localToWorldMatrix * invertYM * transformationM * invertZM; //Debug.Log ("arM " + arM.ToString ()); GameObject ARGameObject = settings.getARGameObject(); if (ARGameObject != null) { ARUtils.SetTransformFromMatrix(ARGameObject.transform, ref ARM); ARGameObject.SetActive(true); } } } } } Utils.matToTexture2D(rgbaMat, texture, webCamTextureToMatHelper.GetBufferColors()); } }
private void UpdateMarker(MarkerGridRow data, MarkerSettings settings) { if (data.Player != null) { World.Default.Map.MarkerManager.UpdateMarker(World.Default.Map, data.Player, settings); } else if (data.Tribe != null) { World.Default.Map.MarkerManager.UpdateMarker(World.Default.Map, data.Tribe, settings); } }