Exemplo n.º 1
0
 // 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;
     }
 }
Exemplo n.º 2
0
 // 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;
     }
 }
Exemplo n.º 3
0
 public void AddMultiTargetPart(MultiTargetPartData item, string multiTargetName)
 {
     try
     {
         MultiTargetData data = this.multiTargets[multiTargetName];
         data.parts.Add(item);
     }
     catch
     {
         throw;
     }
 }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
 // 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;
 }
Exemplo n.º 6
0
 // 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;
     }
 }
Exemplo n.º 7
0
 // 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;
 }