using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using Newtonsoft.Json; namespace AGVNavigationCore.Models { /// /// 맵 상의 모든 객체의 최상위 기본 클래스 /// 위치, 선택 상태, 기본 식별자 등을 관리 /// public abstract class NodeBase { [Category("기본 정보")] [Description("객체의 고유 ID입니다.")] [ReadOnly(true)] public string Id { get; set; } = Guid.NewGuid().ToString(); [Category("기본 정보")] public NodeType Type { protected set; get; } = NodeType.Normal; [Category("기본 정보")] [Description("객체의 좌표(X, Y)입니다.")] public virtual Point Position { get; set; } = Point.Empty; [Category("기본 정보")] [Description("객체 생성 일자입니다.")] [JsonIgnore] [ReadOnly(true), Browsable(false)] public DateTime CreatedDate { get; set; } = DateTime.Now; [Category("기본 정보")] [Description("객체 수정 일자입니다.")] [JsonIgnore] [ReadOnly(true), Browsable(false)] public DateTime ModifiedDate { get; set; } = DateTime.Now; [Browsable(false)] [JsonIgnore] public bool IsSelected { get; set; } = false; [Browsable(false)] [JsonIgnore] public bool IsHovered { get; set; } = false; public NodeBase() { } public NodeBase(string id, Point position) { Id = id; Position = position; } } }