private void OnValidate() { if (this.mSensitivity != this.mPreviousSensitivity) { this.mSensitivityDirty = true; this.mPreviousSensitivity = this.mSensitivity; } }
public VirtualButtonBehaviour() { mName = ""; mPressed = false; mSensitivity = VirtualButton.DEFAULT_SENSITIVITY; mSensitivityDirty = false; mHandlers = new List<IVirtualButtonEventHandler>(); mHasUpdatedPose = false; }
public VirtualButtonBehaviour() { mName = ""; mPressed = false; mSensitivity = VirtualButton.DEFAULT_SENSITIVITY; mSensitivityDirty = false; mHandlers = new List <IVirtualButtonEventHandler>(); mHasUpdatedPose = false; }
public override bool SetSensitivity(VirtualButton.Sensitivity sensitivity) { if (VuforiaWrapper.Instance.VirtualButtonSetSensitivity(this.mParentDataSet.DataSetPtr, this.mParentImageTarget.Name, this.mName, (int)sensitivity) == 0) { Debug.LogError("Virtual Button sensitivity could not be set."); return(false); } return(true); }
public VirtualButtonAbstractBehaviour() { this.mName = ""; this.mPressed = false; this.mSensitivity = VirtualButton.Sensitivity.LOW; this.mSensitivityDirty = false; this.mHandlers = new List <IVirtualButtonEventHandler>(); this.mHasUpdatedPose = false; }
bool IEditorVirtualButtonBehaviour.SetSensitivitySetting(VirtualButton.Sensitivity sensibility) { if (this.mVirtualButton == null) { this.mSensitivity = sensibility; this.mSensitivityDirty = true; return(true); } return(false); }
public override bool SetSensitivity(VirtualButton.Sensitivity sensitivity) { int success = QCARWrapper.Instance.VirtualButtonSetSensitivity(mParentDataSet.DataSetPtr, mParentImageTarget.Name, mName, (int)sensitivity); if (success == 0) { Debug.LogError("Virtual Button sensitivity could not be set."); return(false); } return(true); }
// sets the sensitivity. At runtime the VirtualButton object should be used to change sensibility. bool IEditorVirtualButtonBehaviour.SetSensitivitySetting(VirtualButton.Sensitivity sensibility) { if (mVirtualButton == null) { mSensitivity = sensibility; mSensitivityDirty = true; return true; } return false; }
// This method reads a config.xml file at the given path and fills the // ConfigData object with the data. public bool fileToStruct(string configXMLPath, ConfigData configData) { if (!File.Exists(configXMLPath)) { return(false); } using (XmlTextReader configReader = new XmlTextReader(configXMLPath)) { while (configReader.Read()) { if (configReader.NodeType == XmlNodeType.Element) { // "Global" Attributes string itNameAttr = ""; switch (configReader.Name) { case "ImageTarget": // Parse name from config file itNameAttr = configReader.GetAttribute("name"); if (itNameAttr == null) { Debug.LogWarning("Found ImageTarget without " + "name attribute in " + "config.xml. Image Target " + "will be ignored."); continue; } // Parse itSize from config file Vector2 itSize = Vector2.zero; string[] itSizeAttr = configReader.GetAttribute("size").Split(' '); if (itSizeAttr != null) { if (!QCARUtilities.SizeFromStringArray( out itSize, itSizeAttr)) { Debug.LogWarning("Found illegal itSize " + "attribute for Image " + "Target " + itNameAttr + " in config.xml. " + "Image Target will be " + "ignored."); continue; } } else { Debug.LogWarning("Image Target " + itNameAttr + " is missing a itSize " + "attribut in config.xml. " + "Image Target will be " + "ignored."); continue; } configReader.MoveToElement(); ConfigData.ImageTargetData imageTarget = new ConfigData.ImageTargetData(); imageTarget.size = itSize; imageTarget.virtualButtons = new List <ConfigData.VirtualButtonData>(); configData.SetImageTarget(imageTarget, itNameAttr); break; case "VirtualButton": // Parse name from config file string vbNameAttr = configReader.GetAttribute("name"); if (vbNameAttr == null) { Debug.LogWarning("Found VirtualButton " + "without name attribute in " + "config.xml. Virtual Button " + "will be ignored."); continue; } // Parse rectangle from config file Vector4 vbRectangle = Vector4.zero; string[] vbRectangleAttr = configReader.GetAttribute("rectangle").Split(' '); if (vbRectangleAttr != null) { if (!QCARUtilities.RectangleFromStringArray( out vbRectangle, vbRectangleAttr)) { Debug.LogWarning("Found invalid " + "rectangle attribute " + "for Virtual Button " + vbNameAttr + " in config.xml. " + "Virtual Button will " + "be ignored."); continue; } } else { Debug.LogWarning("Virtual Button " + vbNameAttr + " has no rectangle " + "attribute in config.xml. " + "Virtual Button will be " + "ignored."); continue; } // Parse enabled boolean from config file bool vbEnabled = true; string enabledAttr = configReader.GetAttribute("enabled"); if (enabledAttr != null) { if (string.Compare(enabledAttr, "true", true) == 0) { vbEnabled = true; } else if (string.Compare(enabledAttr, "false", true) == 0) { vbEnabled = false; } else { Debug.LogWarning("Found invalid enabled " + "attribute for Virtual " + "Button " + vbNameAttr + " in config.xml. " + "Default setting will " + "be used."); } } // Parse sensitivity from config file VirtualButton.Sensitivity vbSensitivity = VirtualButton.DEFAULT_SENSITIVITY; string vbSensitivityAttr = configReader.GetAttribute("sensitivity"); if (vbSensitivityAttr != null) { if (string.Compare(vbSensitivityAttr, "low", true) == 0) { vbSensitivity = VirtualButton.Sensitivity.LOW; } else if (string.Compare(vbSensitivityAttr, "medium", true) == 0) { vbSensitivity = VirtualButton.Sensitivity.MEDIUM; } else if (string.Compare(vbSensitivityAttr, "high", true) == 0) { vbSensitivity = VirtualButton.Sensitivity.HIGH; } else { Debug.LogWarning("Found illegal " + "sensitivity attribute " + "for Virtual Button " + vbNameAttr + " in config.xml. " + "Default setting will " + "be used."); } } configReader.MoveToElement(); ConfigData.VirtualButtonData virtualButton = new ConfigData.VirtualButtonData(); string latestITName = GetLatestITName(configData); virtualButton.name = vbNameAttr; virtualButton.rectangle = vbRectangle; virtualButton.enabled = vbEnabled; virtualButton.sensitivity = vbSensitivity; // Since the XML Reader runs top down we can assume // that the Virtual Button that has been found is // part of the latest Image Target. if (configData.ImageTargetExists(latestITName)) { configData.AddVirtualButton(virtualButton, latestITName); } else { Debug.LogWarning("Image Target with name " + latestITName + " could not be found. " + "Virtual Button " + vbNameAttr + "will not be added."); } break; case "MultiTarget": // Parse name from config file string mtNameAttr = configReader.GetAttribute("name"); if (mtNameAttr == null) { Debug.LogWarning("Found Multi Target without " + "name attribute in " + "config.xml. Multi Target " + "will be ignored."); continue; } configReader.MoveToElement(); ConfigData.MultiTargetData multiTarget = new ConfigData.MultiTargetData(); multiTarget.parts = new List <ConfigData.MultiTargetPartData>(); configData.SetMultiTarget(multiTarget, mtNameAttr); break; case "Part": // Parse name from config file string prtNameAttr = configReader.GetAttribute("name"); if (prtNameAttr == null) { Debug.LogWarning("Found Multi Target Part " + "without name attribute in " + "config.xml. Part will be " + "ignored."); continue; } // Parse translations from config file Vector3 prtTranslation = Vector3.zero; string[] prtTranslationAttr = configReader.GetAttribute("translation").Split(' '); if (prtTranslationAttr != null) { if (!QCARUtilities.TransformFromStringArray( out prtTranslation, prtTranslationAttr)) { Debug.LogWarning("Found illegal " + "transform attribute " + "for Part " + prtNameAttr + " in config.xml. Part " + "will be ignored."); continue; } } else { Debug.LogWarning("Multi Target Part " + prtNameAttr + " has no " + "translation attribute in " + "config.xml. Part will be " + "ignored."); continue; } // Parse rotations from config file Quaternion prtRotation = Quaternion.identity; string[] prtRotationAttr = configReader.GetAttribute("rotation").Split(' '); if (prtRotationAttr != null) { if (!QCARUtilities.OrientationFromStringArray( out prtRotation, prtRotationAttr)) { Debug.LogWarning("Found illegal rotation " + "attribute for Part " + prtNameAttr + " in config.xml. Part " + "will be ignored."); continue; } } else { Debug.LogWarning("Multi Target Part " + prtNameAttr + " has no " + "rotation attribute in " + "config.xml. Part will be " + "ignored."); continue; } configReader.MoveToElement(); ConfigData.MultiTargetPartData multiTargetPart = new ConfigData.MultiTargetPartData(); string latestMTName = GetLatestMTName(configData); multiTargetPart.name = prtNameAttr; multiTargetPart.rotation = prtRotation; multiTargetPart.translation = prtTranslation; // Since the XML Reader runs top down we can assume // that the Virtual Button that has been found is // part of the latest Image Target. if (configData.MultiTargetExists(latestMTName)) { configData.AddMultiTargetPart(multiTargetPart, latestMTName); } else { Debug.LogWarning("Multi Target with name " + latestMTName + " could not be found. " + "Multi Target Part " + prtNameAttr + "will not be added."); } break; default: break; } } } } return(true); }
public abstract bool SetSensitivity(VirtualButton.Sensitivity sensitivity);
public bool fileToStruct(string configXMLPath, string authoringInfoXMLPath, ConfigData configData) { if (!File.Exists(configXMLPath)) { return(false); } AuthoringInfo authoringInfo; if (File.Exists(authoringInfoXMLPath)) { authoringInfo = new AuthoringInfo(authoringInfoXMLPath); } else { authoringInfo = new AuthoringInfo(); } List <ConfigData.CylinderTargetData> list = new List <ConfigData.CylinderTargetData>(); List <ConfigData.ObjectTargetData> list2 = new List <ConfigData.ObjectTargetData>(); using (XmlTextReader xmlTextReader = new XmlTextReader(configXMLPath)) { while (xmlTextReader.Read()) { if (xmlTextReader.NodeType == XmlNodeType.Element) { string name = xmlTextReader.Name; uint num = ComputeStringHash(name); if (num <= 2826972859u) { if (num != 1357157938u) { if (num != 1777789069u) { if (num == 2826972859u) { if (name == "ObjectTarget") { string attribute = xmlTextReader.GetAttribute("name"); xmlTextReader.MoveToElement(); list2.Add(new ConfigData.ObjectTargetData { name = attribute }); } } } else if (name == "VuMark") { string attribute2 = xmlTextReader.GetAttribute("name"); Vector2 zero = Vector2.zero; string attribute3 = xmlTextReader.GetAttribute("size"); if (attribute3 != null) { if (!VuforiaUtilities.SizeFromStringArray(out zero, attribute3.Split(new char[] { ' ' }))) { Debug.LogWarning("Found illegal size attribute for VuMark Target " + attribute2 + " in config.xml. VuMark Target will be ignored."); } else { xmlTextReader.MoveToElement(); ConfigData.VuMarkData item; if (!authoringInfo.TryGetInfo(attribute2, out item)) { Debug.LogWarning("Couldn't find VuMark " + attribute2 + " in authoring info"); Debug.LogWarning("Use device database unitypackage as downloaded from Target Manager!\nTarget is not rendered correctly in editor."); } item.name = attribute2; item.size = zero; configData.SetVuMarkTarget(item, attribute2); } } else { Debug.LogWarning("VuMark Target " + attribute2 + " is missing a size attribut in config.xml. VuMark Target will be ignored."); } } } else if (name == "CylinderTarget") { string attribute4 = xmlTextReader.GetAttribute("name"); if (attribute4 == null) { Debug.LogWarning("Found Cylinder Target without name attribute in config.xml. Cylinder Target will be ignored."); } else { string attribute5 = xmlTextReader.GetAttribute("sideLength"); float sideLength = -1f; if (attribute5 != null) { sideLength = float.Parse(attribute5, CultureInfo.InvariantCulture); } xmlTextReader.MoveToElement(); list.Add(new ConfigData.CylinderTargetData { name = attribute4, sideLength = sideLength }); } } } else if (num <= 3803554136u) { if (num != 3027079795u) { if (num == 3803554136u) { if (name == "VirtualButton") { string attribute6 = xmlTextReader.GetAttribute("name"); if (attribute6 == null) { Debug.LogWarning("Found VirtualButton without name attribute in config.xml. Virtual Button will be ignored."); } else { Vector4 zero2 = Vector4.zero; string[] array = xmlTextReader.GetAttribute("rectangle").Split(new char[] { ' ' }); if (array != null) { if (!VuforiaUtilities.RectangleFromStringArray(out zero2, array)) { Debug.LogWarning("Found invalid rectangle attribute for Virtual Button " + attribute6 + " in config.xml. Virtual Button will be ignored."); } else { bool enabled = true; string attribute7 = xmlTextReader.GetAttribute("enabled"); if (attribute7 != null) { if (string.Compare(attribute7, "true", true) == 0) { enabled = true; } else if (string.Compare(attribute7, "false", true) == 0) { enabled = false; } else { Debug.LogWarning("Found invalid enabled attribute for Virtual Button " + attribute6 + " in config.xml. Default setting will be used."); } } VirtualButton.Sensitivity sensitivity = VirtualButton.Sensitivity.LOW; string attribute8 = xmlTextReader.GetAttribute("sensitivity"); if (attribute8 != null) { if (string.Compare(attribute8, "low", true) == 0) { sensitivity = VirtualButton.Sensitivity.LOW; } else if (string.Compare(attribute8, "medium", true) == 0) { sensitivity = VirtualButton.Sensitivity.MEDIUM; } else if (string.Compare(attribute8, "high", true) == 0) { sensitivity = VirtualButton.Sensitivity.HIGH; } else { Debug.LogWarning("Found illegal sensitivity attribute for Virtual Button " + attribute6 + " in config.xml. Default setting will be used."); } } xmlTextReader.MoveToElement(); ConfigData.VirtualButtonData item2 = default(ConfigData.VirtualButtonData); string latestITName = ConfigParser.GetLatestITName(configData); item2.name = attribute6; item2.rectangle = zero2; item2.enabled = enabled; item2.sensitivity = sensitivity; if (configData.ImageTargetExists(latestITName)) { configData.AddVirtualButton(item2, latestITName); } else { Debug.LogWarning(string.Concat(new string[] { "Image Target with name ", latestITName, " could not be found. Virtual Button ", attribute6, "will not be added." })); } } } else { Debug.LogWarning("Virtual Button " + attribute6 + " has no rectangle attribute in config.xml. Virtual Button will be ignored."); } } } } } else if (name == "MultiTarget") { string attribute9 = xmlTextReader.GetAttribute("name"); if (attribute9 == null) { Debug.LogWarning("Found Multi Target without name attribute in config.xml. Multi Target will be ignored."); } else { xmlTextReader.MoveToElement(); configData.SetMultiTarget(new ConfigData.MultiTargetData { parts = new List <ConfigData.MultiTargetPartData>() }, attribute9); } } } else if (num != 3814285364u) { if (num == 4124202875u) { if (name == "ImageTarget") { string attribute10 = xmlTextReader.GetAttribute("name"); if (attribute10 == null) { Debug.LogWarning("Found ImageTarget without name attribute in config.xml. Image Target will be ignored."); } else { Vector2 zero3 = Vector2.zero; string[] array2 = xmlTextReader.GetAttribute("size").Split(new char[] { ' ' }); if (array2 != null) { if (!VuforiaUtilities.SizeFromStringArray(out zero3, array2)) { Debug.LogWarning("Found illegal itSize attribute for Image Target " + attribute10 + " in config.xml. Image Target will be ignored."); } else { xmlTextReader.MoveToElement(); configData.SetImageTarget(new ConfigData.ImageTargetData { size = zero3, virtualButtons = new List <ConfigData.VirtualButtonData>() }, attribute10); } } else { Debug.LogWarning("Image Target " + attribute10 + " is missing a itSize attribut in config.xml. Image Target will be ignored."); } } } } } else if (name == "Part") { string attribute11 = xmlTextReader.GetAttribute("name"); if (attribute11 == null) { Debug.LogWarning("Found Multi Target Part without name attribute in config.xml. Part will be ignored."); } else { Vector3 zero4 = Vector3.zero; string[] array3 = xmlTextReader.GetAttribute("translation").Split(new char[] { ' ' }); if (array3 != null) { if (!VuforiaUtilities.TransformFromStringArray(out zero4, array3)) { Debug.LogWarning("Found illegal transform attribute for Part " + attribute11 + " in config.xml. Part will be ignored."); } else { Quaternion quaternion = Quaternion.identity; string attribute12 = xmlTextReader.GetAttribute("rotation"); if (attribute12 == null) { Debug.LogWarning("Multi Target Part " + attribute11 + " has no rotation attribute in config.xml. Part will be ignored."); } else { string[] array4 = attribute12.Split(new char[] { ';' }); string str = ""; if (array4.Length != 0) { str = array4[0].Split(new char[] { ' ' })[0]; } for (int i = 0; i < array4.Length; i++) { string text = array4[i]; if (i != 0) { text = str + " " + text.Trim(); } Quaternion quaternion2 = this.parseQuaternionFromAttrString(text); quaternion *= quaternion2; } xmlTextReader.MoveToElement(); ConfigData.MultiTargetPartData item3 = default(ConfigData.MultiTargetPartData); string latestMTName = ConfigParser.GetLatestMTName(configData); item3.name = attribute11; item3.rotation = quaternion; item3.translation = zero4; if (configData.MultiTargetExists(latestMTName)) { configData.AddMultiTargetPart(item3, latestMTName); } else { Debug.LogWarning(string.Concat(new string[] { "Multi Target with name ", latestMTName, " could not be found. Multi Target Part ", attribute11, "will not be added." })); } } } } else { Debug.LogWarning("Multi Target Part " + attribute11 + " has no translation attribute in config.xml. Part will be ignored."); } } } } } } if (list.Count > 0) { string arg_796_0 = configXMLPath.Substring(0, configXMLPath.Length - 3) + "dat"; ConfigData.CylinderTargetData[] array5 = list.ToArray(); CylinderDatasetReader.Read(arg_796_0, array5); ConfigData.CylinderTargetData[] array6 = array5; for (int j = 0; j < array6.Length; j++) { ConfigData.CylinderTargetData cylinderTargetData = array6[j]; configData.SetCylinderTarget(cylinderTargetData, cylinderTargetData.name); } } if (list2.Count > 0) { ConfigData.ObjectTargetData[] array7 = list2.ToArray(); string[] array8 = configXMLPath.Split(new char[] { '/' }); string text2 = array8[(array8.Length - 1 > 0) ? (array8.Length - 1) : 0]; int num2 = 4; if (text2.Contains("_OT")) { num2 += 3; } string text3 = "Assets/Editor/Vuforia/TargetsetData/" + text2.Substring(0, text2.Length - num2) + "_info.xml"; string text4 = "Assets/Editor/QCAR/TargetsetData/" + text2.Substring(0, text2.Length - num2) + "_info.xml"; if (File.Exists(text3)) { ObjectEditorConfigurationReader.Read(text3, array7); } else if (File.Exists(text4)) { ObjectEditorConfigurationReader.Read(text4, array7); } else { Debug.LogError("No editor configuration file available for " + text2 + " (Only use unity dataset package generated from the Vuforia developer portal)"); for (int k = 0; k < array7.Length; k++) { array7[k].targetID = ""; array7[k].bboxMin = new Vector3(0f, 0f, 0f); array7[k].bboxMax = new Vector3(200f, 200f, 200f); array7[k].size = new Vector3(200f, 200f, 200f); } } for (int l = 0; l < array7.Length; l++) { configData.SetObjectTarget(array7[l], array7[l].name); } } return(true); }
public bool fileToStruct(string configXMLPath, ConfigData configData) { if (!File.Exists(configXMLPath)) { return(false); } List <ConfigData.CylinderTargetData> list = new List <ConfigData.CylinderTargetData>(); using (XmlTextReader reader = new XmlTextReader(configXMLPath)) { while (reader.Read()) { string str; Vector2 vector; string str2; Vector4 vector2; bool flag; string str6; string str7; string str8; string str9; Vector3 vector3; Quaternion quaternion; if (reader.NodeType == XmlNodeType.Element) { str = ""; switch (reader.Name) { case "ImageTarget": str = reader.GetAttribute("name"); if (str != null) { goto Label_00F1; } Debug.LogWarning("Found ImageTarget without name attribute in config.xml. Image Target will be ignored."); break; case "VirtualButton": str2 = reader.GetAttribute("name"); if (str2 != null) { goto Label_01AD; } Debug.LogWarning("Found VirtualButton without name attribute in config.xml. Virtual Button will be ignored."); break; case "MultiTarget": str6 = reader.GetAttribute("name"); if (str6 != null) { goto Label_0387; } Debug.LogWarning("Found Multi Target without name attribute in config.xml. Multi Target will be ignored."); break; case "CylinderTarget": str7 = reader.GetAttribute("name"); if (str7 != null) { goto Label_03D1; } Debug.LogWarning("Found Cylinder Target without name attribute in config.xml. Cylinder Target will be ignored."); break; case "Part": str9 = reader.GetAttribute("name"); if (str9 != null) { goto Label_0445; } Debug.LogWarning("Found Multi Target Part without name attribute in config.xml. Part will be ignored."); break; case "RigidBodyTarget": { string name = reader.GetAttribute("name"); ConfigData.RigidBodyTargetData data6 = new ConfigData.RigidBodyTargetData { name = name }; configData.SetRigidBodyTarget(data6, name); break; } } } continue; Label_00F1: vector = Vector2.zero; string[] valuesToParse = reader.GetAttribute("size").Split(new char[] { ' ' }); if (valuesToParse != null) { if (QCARUtilities.SizeFromStringArray(out vector, valuesToParse)) { goto Label_015C; } Debug.LogWarning("Found illegal itSize attribute for Image Target " + str + " in config.xml. Image Target will be ignored."); } else { Debug.LogWarning("Image Target " + str + " is missing a itSize attribut in config.xml. Image Target will be ignored."); } continue; Label_015C: reader.MoveToElement(); ConfigData.ImageTargetData item = new ConfigData.ImageTargetData { size = vector, virtualButtons = new List <ConfigData.VirtualButtonData>() }; configData.SetImageTarget(item, str); continue; Label_01AD: vector2 = Vector4.zero; string[] strArray2 = reader.GetAttribute("rectangle").Split(new char[] { ' ' }); if (strArray2 != null) { if (QCARUtilities.RectangleFromStringArray(out vector2, strArray2)) { goto Label_021B; } Debug.LogWarning("Found invalid rectangle attribute for Virtual Button " + str2 + " in config.xml. Virtual Button will be ignored."); } else { Debug.LogWarning("Virtual Button " + str2 + " has no rectangle attribute in config.xml. Virtual Button will be ignored."); } continue; Label_021B: flag = true; string attribute = reader.GetAttribute("enabled"); if (attribute != null) { if (string.Compare(attribute, "true", true) == 0) { flag = true; } else if (string.Compare(attribute, "false", true) == 0) { flag = false; } else { Debug.LogWarning("Found invalid enabled attribute for Virtual Button " + str2 + " in config.xml. Default setting will be used."); } } VirtualButton.Sensitivity lOW = VirtualButton.Sensitivity.LOW; string strA = reader.GetAttribute("sensitivity"); if (strA != null) { if (string.Compare(strA, "low", true) == 0) { lOW = VirtualButton.Sensitivity.LOW; } else if (string.Compare(strA, "medium", true) == 0) { lOW = VirtualButton.Sensitivity.MEDIUM; } else if (string.Compare(strA, "high", true) == 0) { lOW = VirtualButton.Sensitivity.HIGH; } else { Debug.LogWarning("Found illegal sensitivity attribute for Virtual Button " + str2 + " in config.xml. Default setting will be used."); } } reader.MoveToElement(); ConfigData.VirtualButtonData data2 = new ConfigData.VirtualButtonData(); string latestITName = GetLatestITName(configData); data2.name = str2; data2.rectangle = vector2; data2.enabled = flag; data2.sensitivity = lOW; if (configData.ImageTargetExists(latestITName)) { configData.AddVirtualButton(data2, latestITName); } else { Debug.LogWarning("Image Target with name " + latestITName + " could not be found. Virtual Button " + str2 + "will not be added."); } continue; Label_0387: reader.MoveToElement(); ConfigData.MultiTargetData data3 = new ConfigData.MultiTargetData { parts = new List <ConfigData.MultiTargetPartData>() }; configData.SetMultiTarget(data3, str6); continue; Label_03D1: str8 = reader.GetAttribute("sideLength"); float num = -1f; if (str8 != null) { num = float.Parse(str8, CultureInfo.InvariantCulture); } reader.MoveToElement(); ConfigData.CylinderTargetData data4 = new ConfigData.CylinderTargetData { name = str7, sideLength = num }; list.Add(data4); continue; Label_0445: vector3 = Vector3.zero; string[] strArray3 = reader.GetAttribute("translation").Split(new char[] { ' ' }); if (strArray3 != null) { if (QCARUtilities.TransformFromStringArray(out vector3, strArray3)) { goto Label_04B3; } Debug.LogWarning("Found illegal transform attribute for Part " + str9 + " in config.xml. Part will be ignored."); } else { Debug.LogWarning("Multi Target Part " + str9 + " has no translation attribute in config.xml. Part will be ignored."); } continue; Label_04B3: quaternion = Quaternion.identity; string[] strArray4 = reader.GetAttribute("rotation").Split(new char[] { ' ' }); if (strArray4 != null) { if (QCARUtilities.OrientationFromStringArray(out quaternion, strArray4)) { goto Label_0521; } Debug.LogWarning("Found illegal rotation attribute for Part " + str9 + " in config.xml. Part will be ignored."); } else { Debug.LogWarning("Multi Target Part " + str9 + " has no rotation attribute in config.xml. Part will be ignored."); } continue; Label_0521: reader.MoveToElement(); ConfigData.MultiTargetPartData data5 = new ConfigData.MultiTargetPartData(); string latestMTName = GetLatestMTName(configData); data5.name = str9; data5.rotation = quaternion; data5.translation = vector3; if (configData.MultiTargetExists(latestMTName)) { configData.AddMultiTargetPart(data5, latestMTName); } else { Debug.LogWarning("Multi Target with name " + latestMTName + " could not be found. Multi Target Part " + str9 + "will not be added."); continue; } } } if (list.Count > 0) { string datFile = configXMLPath.Substring(0, configXMLPath.Length - 3) + "dat"; ConfigData.CylinderTargetData[] targetData = list.ToArray(); CylinderDatasetReader.Read(datFile, targetData); foreach (ConfigData.CylinderTargetData data7 in targetData) { configData.SetCylinderTarget(data7, data7.name); } } return(true); }