/// <summary> /// 指定されたモーションデータオブジェクトをフレームから削除します。 /// </summary> /// <param title="targetType">削除するモーションデータオブジェクトのタイプ</param> /// <param title="targetIndex">削除するモーションデータオブジェクトのインデックス</param> public void RemoveAt(MotionDataObjectType targetType, int targetIndex) { switch (targetType) { case MotionDataObjectType.Point: if (targetIndex < 0 || targetIndex >= Points.Length) { throw new ArgumentOutOfRangeException("targetIndex", "'targetIndex' out of range"); } List <MotionDataPoint> tmpPoint = new List <MotionDataPoint>(Points); tmpPoint.RemoveAt(targetIndex); Points = tmpPoint.ToArray(); break; case MotionDataObjectType.Line: if (targetIndex < 0 || targetIndex >= Lines.Length) { throw new ArgumentOutOfRangeException("targetIndex", "targetIndex", "'targetIndex' out of range"); } List <MotionDataLine> tmpLine = new List <MotionDataLine>(Lines); tmpLine.RemoveAt(targetIndex); Lines = tmpLine.ToArray(); break; case MotionDataObjectType.Cylinder: if (targetIndex < 0 || targetIndex >= Cylinders.Length) { throw new ArgumentOutOfRangeException("targetIndex", "'targetIndex' out of range"); } List <MotionDataCylinder> tmpCylinder = new List <MotionDataCylinder>(Cylinders); tmpCylinder.RemoveAt(targetIndex); Cylinders = tmpCylinder.ToArray(); break; case MotionDataObjectType.Sphere: if (targetIndex < 0 || targetIndex >= Spheres.Length) { throw new ArgumentOutOfRangeException("targetIndex", "'targetIndex' out of range"); } List <MotionDataSphere> tmpSphere = new List <MotionDataSphere>(Spheres); tmpSphere.RemoveAt(targetIndex); Spheres = tmpSphere.ToArray(); break; case MotionDataObjectType.Plane: if (targetIndex < 0 || targetIndex >= Planes.Length) { throw new ArgumentOutOfRangeException("targetIndex", "'targetIndex' out of range"); } List <MotionDataPlane> tmpPlane = new List <MotionDataPlane>(Planes); tmpPlane.RemoveAt(targetIndex); Planes = tmpPlane.ToArray(); break; default: throw new ArgumentException("'targetType' must be single object type", "targetType"); } }
public MotionDataObjectInfo(MotionDataHeader parent) { if (parent == null) { throw new ArgumentNullException("parent", "'parent' cannot be null"); } _parent = parent; _objectType = MotionDataObjectType.Undefined; }
public MotionDataObjectInfo(MotionDataHeader parent, MotionDataObjectType type, int index) : this(parent) { this.ObjectType = type; this.ObjectIndex = index; }
public static MotionDataObjectInfo Deserialize(XmlReader reader, MotionDataHeader parent) { if (parent == null) { throw new ArgumentNullException("parent", "'parent' cannot be null"); } reader.MoveToContent(); if (reader.IsEmptyElement) { return(null); } else { string name = "", groupName = ""; Color color = Color.White; MotionDataObjectType type = MotionDataObjectType.Undefined; int index = -1; bool visible = true; bool isVirtual = false; reader.ReadStartElement(typeof(MotionDataObjectInfo).Name); for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement && reader.NodeType != XmlNodeType.None; reader.MoveToContent()) { if (reader.IsEmptyElement) { reader.Skip(); continue; } switch (reader.Name) { case "Name": name = reader.ReadElementContentAsString(); break; case "GroupName": groupName = reader.ReadElementContentAsString(); break; case "ObjectType": type = (MotionDataObjectType)Enum.Parse(typeof(MotionDataObjectType), reader.ReadElementContentAsString()); break; case "ObjectIndex": index = reader.ReadElementContentAsInt(); break; case "Show": case "Visible": visible = reader.ReadElementContentAsBoolean(); break; case "Virtual": isVirtual = reader.ReadElementContentAsBoolean(); break; case "Color": var cstr = reader.ReadElementContentAsString(); int cint; if (int.TryParse(cstr, out cint)) { color = Color.FromArgb(cint); } else { color = ColorTranslator.FromHtml(cstr); } break; default: reader.Skip(); break; } } reader.ReadEndElement(); if (type == MotionDataObjectType.Undefined || index == -1) { return(null); } var ret = new MotionDataObjectInfo(parent, type, index); ret.Name = name; ret.GroupName = groupName; ret.Color = color; ret.Visible = visible; ret.Virtual = isVirtual; return(ret); } }