// Creates a new Multi Target with the data of the Multi Target with the // given name. // Returns false if Multi Target does not exist. public void GetMultiTarget(string name, out MultiTargetData mt) { try { mt = multiTargets[name]; } catch { throw; } }
// Add Multi Target Part to the Multi Target with the given multiTargetName. public void AddMultiTargetPart(MultiTargetPartData item, string multiTargetName) { try { MultiTargetData mt = multiTargets[multiTargetName]; mt.parts.Add(item); } catch { throw; } }
public void AddMultiTargetPart(MultiTargetPartData item, string multiTargetName) { try { MultiTargetData data = this.multiTargets[multiTargetName]; data.parts.Add(item); } catch { throw; } }
private void CreateMultiTargets() { // Allocate array for all Multi Targets. int numMultiTargets = dataSetGetNumTrackableType( (int)TrackableBehaviour.TrackableType.MULTI_TARGET, mDataSetPtr); IntPtr multiTargetDataPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(MultiTargetData)) * numMultiTargets); // Copy Multi Target properties from native. if (dataSetGetTrackablesOfType((int)TrackableBehaviour.TrackableType.MULTI_TARGET, multiTargetDataPtr, numMultiTargets, mDataSetPtr) == 0) { Debug.LogError("Could not create Multi Target Behaviours"); return; } // Create Multi Target Behaviours. for (int i = 0; i < numMultiTargets; ++i) { IntPtr trackablePtr = new IntPtr(multiTargetDataPtr.ToInt32() + i * Marshal.SizeOf(typeof(MultiTargetData))); MultiTargetData trackableData = (MultiTargetData) Marshal.PtrToStructure(trackablePtr, typeof(MultiTargetData)); // Do not overwrite existing Trackables. if (mTrackableBehaviourDict.ContainsKey(trackableData.id)) { continue; } // QCAR support names up to 64 characters in length, but here we allocate // a slightly larger buffer: int nameLength = 128; System.Text.StringBuilder trackableName = new System.Text.StringBuilder(nameLength); dataSetGetTrackableName(mDataSetPtr, trackableData.id, trackableName, nameLength); MultiTargetBehaviour mtb = CreateMultiTarget(trackableData.id, trackableName.ToString()); // Add newly created Multi Target to dictionary. mTrackableBehaviourDict[trackableData.id] = mtb; } Marshal.FreeHGlobal(multiTargetDataPtr); }
// Set attributes of the Multi Target with the given name. // If the Multi Target does not yet exist it is created automatically. public void SetMultiTarget(MultiTargetData item, string name) { multiTargets[name] = item; }