/// <summary> /// フレーム内のオブジェクトを取得します /// </summary> /// <param name="info">取得するオブジェクトの情報</param> /// <returns></returns> public MotionObject GetObject(IReadableMotionObjectInfo info) { if (info == null) { throw new ArgumentNullException("info", "'info' cannot be null"); } //if(info.Parent != this.Parent) // throw new ArgumentException("Parent mismatch"); return(GetObject(info.Id)); }
/// <summary> /// フレームにオブジェクトを追加します /// </summary> /// <param name="info">追加するオブジェクトの情報</param> /// <param name="object">オブジェクトの状態</param> public void SetObject(IReadableMotionObjectInfo info, MotionObject @object) { lock (this) { //if(info.Parent != this.Parent) // throw new ArgumentException("Parent mismatch"); if (@object == null) { RemoveObject(info.Id); } else { if ([email protected](info.ObjectType)) { throw new ArgumentException(string.Format("cannot assign '{0}' to frame as '{1}'", @object.GetType(), info.ObjectType)); } _objectList[info.Id] = @object; } } }
/// <summary> /// オブジェクト情報を指定してオブジェクトを取得します /// </summary> /// <param name="info"></param> /// <returns></returns> public MotionObject GetObject(IReadableMotionObjectInfo info) { MotionObject tmp = _frame.GetObject(info); return(tmp == null ? null : (MotionObject)tmp.Clone()); }
/// <summary> /// オブジェクト情報を用いてオブジェクトを取得または設定します. /// </summary> /// <param name="info"></param> /// <returns></returns> public MotionObject this[IReadableMotionObjectInfo info] { get { return(this.GetObject(info)); } set { this.SetObject(info, value); } }