/// <summary> /// Creates new sub-object /// </summary> /// <param name="element">Face element type</param> /// <param name="name">New object name</param> /// <param name="fromMark">Starting mark index</param> /// <param name="toMark">Ending mark index</param> /// <param name="factor">Scale factor</param> /// <param name="updateMarks">[optional] Signals whether we should apply new marks</param> public bool DefineSubObject(FaceElements element, string name, int fromMark, int toMark, bool updateMarks = true) { int index = (int)element; Point[] subset = Marks.SubsetFromTo(fromMark, toMark); DetectedObject obj = Elements[index]; // first instance bool applied = false; if (null == obj) { applied = true; obj = new DetectedObject(faceStabilizer.Params, name, subset); Elements[index] = obj; } // updated else { if (updateMarks || null == obj.Marks || 0 == obj.Marks.Length) { applied = obj.SetMarks(subset); } } return(applied); }