hawkeye camera support(not tested)

This commit is contained in:
meelstorm
2025-08-19 12:45:50 +02:00
parent f80b275ad8
commit 6ef6aced8d
170 changed files with 20190 additions and 72 deletions

View File

@@ -155,4 +155,54 @@ public class FindBlobOperation : BaseOperation, IHaveOrigin, IHaveSearchArea
SearchArea.Load(br);
}
public override void Save(Dictionary<string, object> dict)
{
base.Save(dict);
dict[nameof(MinArea)] = MinArea;
dict[nameof(MaxArea)] = MaxArea;
dict[nameof(MinRadius)] = MinRadius;
dict[nameof(MaxRadius)] = MaxRadius;
dict[nameof(BadIfFound)] = BadIfFound;
dict[nameof(ReferenceId)] = ReferenceId.ToString();
// Save SearchArea properties manually
dict["SearchArea_Editable"] = SearchArea.Editable;
dict["SearchArea_IsGood"] = SearchArea.IsGood;
dict["SearchArea_LocationX"] = SearchArea.Location.X;
dict["SearchArea_LocationY"] = SearchArea.Location.Y;
dict["SearchArea_OffsetX"] = SearchArea.Offset.X;
dict["SearchArea_OffsetY"] = SearchArea.Offset.Y;
dict["SearchArea_SizeX"] = SearchArea.Size.X;
dict["SearchArea_SizeY"] = SearchArea.Size.Y;
}
public override void Load(Dictionary<string, object> dict)
{
base.Load(dict);
if (dict.ContainsKey(nameof(MinArea)))
MinArea = Convert.ToInt32(dict[nameof(MinArea)]);
if (dict.ContainsKey(nameof(MaxArea)))
MaxArea = Convert.ToInt32(dict[nameof(MaxArea)]);
if (dict.ContainsKey(nameof(MinRadius)))
MinRadius = Convert.ToInt32(dict[nameof(MinRadius)]);
if (dict.ContainsKey(nameof(MaxRadius)))
MaxRadius = Convert.ToInt32(dict[nameof(MaxRadius)]);
if (dict.ContainsKey(nameof(BadIfFound)))
BadIfFound = Convert.ToBoolean(dict[nameof(BadIfFound)]);
if (dict.ContainsKey(nameof(ReferenceId)))
ReferenceId = new Guid(dict[nameof(ReferenceId)].ToString());
// Load SearchArea properties manually
if (dict.ContainsKey("SearchArea_Editable"))
SearchArea.Editable = Convert.ToBoolean(dict["SearchArea_Editable"]);
if (dict.ContainsKey("SearchArea_IsGood"))
SearchArea.IsGood = Convert.ToBoolean(dict["SearchArea_IsGood"]);
if (dict.ContainsKey("SearchArea_LocationX") && dict.ContainsKey("SearchArea_LocationY"))
SearchArea.Location = new Vector2(Convert.ToSingle(dict["SearchArea_LocationX"]), Convert.ToSingle(dict["SearchArea_LocationY"]));
if (dict.ContainsKey("SearchArea_OffsetX") && dict.ContainsKey("SearchArea_OffsetY"))
SearchArea.Offset = new Vector2(Convert.ToSingle(dict["SearchArea_OffsetX"]), Convert.ToSingle(dict["SearchArea_OffsetY"]));
if (dict.ContainsKey("SearchArea_SizeX") && dict.ContainsKey("SearchArea_SizeY"))
SearchArea.Size = new Vector2(Convert.ToSingle(dict["SearchArea_SizeX"]), Convert.ToSingle(dict["SearchArea_SizeY"]));
}
}

View File

@@ -230,4 +230,78 @@ public class FindManyBlobsExtOperation : BaseOperation
ReferenceId = new Guid(br.ReadString());
SearchArea.Load(br);
}
public override void Save(Dictionary<string, object> dict)
{
base.Save(dict);
dict[nameof(MinArea)] = MinArea;
dict[nameof(MaxArea)] = MaxArea;
dict[nameof(MinRadius)] = MinRadius;
dict[nameof(MaxRadius)] = MaxRadius;
dict[nameof(CheckInternalRadius)] = CheckInternalRadius;
dict[nameof(MinInternalRadius)] = MinInternalRadius;
dict[nameof(MaxInternalRadius)] = MaxInternalRadius;
dict[nameof(CheckWidth)] = CheckWidth;
dict[nameof(MinWidth)] = MinWidth;
dict[nameof(MaxWidth)] = MaxWidth;
dict[nameof(CheckHeight)] = CheckHeight;
dict[nameof(MinHeight)] = MinHeight;
dict[nameof(MaxHeight)] = MaxHeight;
dict[nameof(ReferenceId)] = ReferenceId.ToString();
// Save SearchArea properties manually
dict["SearchArea_Editable"] = SearchArea.Editable;
dict["SearchArea_IsGood"] = SearchArea.IsGood;
dict["SearchArea_LocationX"] = SearchArea.Location.X;
dict["SearchArea_LocationY"] = SearchArea.Location.Y;
dict["SearchArea_OffsetX"] = SearchArea.Offset.X;
dict["SearchArea_OffsetY"] = SearchArea.Offset.Y;
dict["SearchArea_SizeX"] = SearchArea.Size.X;
dict["SearchArea_SizeY"] = SearchArea.Size.Y;
}
public override void Load(Dictionary<string, object> dict)
{
base.Load(dict);
if (dict.ContainsKey(nameof(MinArea)))
MinArea = Convert.ToInt32(dict[nameof(MinArea)]);
if (dict.ContainsKey(nameof(MaxArea)))
MaxArea = Convert.ToInt32(dict[nameof(MaxArea)]);
if (dict.ContainsKey(nameof(MinRadius)))
MinRadius = Convert.ToInt32(dict[nameof(MinRadius)]);
if (dict.ContainsKey(nameof(MaxRadius)))
MaxRadius = Convert.ToInt32(dict[nameof(MaxRadius)]);
if (dict.ContainsKey(nameof(CheckInternalRadius)))
CheckInternalRadius = Convert.ToBoolean(dict[nameof(CheckInternalRadius)]);
if (dict.ContainsKey(nameof(MinInternalRadius)))
MinInternalRadius = Convert.ToInt32(dict[nameof(MinInternalRadius)]);
if (dict.ContainsKey(nameof(MaxInternalRadius)))
MaxInternalRadius = Convert.ToInt32(dict[nameof(MaxInternalRadius)]);
if (dict.ContainsKey(nameof(CheckWidth)))
CheckWidth = Convert.ToBoolean(dict[nameof(CheckWidth)]);
if (dict.ContainsKey(nameof(MinWidth)))
MinWidth = Convert.ToInt32(dict[nameof(MinWidth)]);
if (dict.ContainsKey(nameof(MaxWidth)))
MaxWidth = Convert.ToInt32(dict[nameof(MaxWidth)]);
if (dict.ContainsKey(nameof(CheckHeight)))
CheckHeight = Convert.ToBoolean(dict[nameof(CheckHeight)]);
if (dict.ContainsKey(nameof(MinHeight)))
MinHeight = Convert.ToInt32(dict[nameof(MinHeight)]);
if (dict.ContainsKey(nameof(MaxHeight)))
MaxHeight = Convert.ToInt32(dict[nameof(MaxHeight)]);
if (dict.ContainsKey(nameof(ReferenceId)))
ReferenceId = new Guid(dict[nameof(ReferenceId)].ToString());
// Load SearchArea properties manually
if (dict.ContainsKey("SearchArea_Editable"))
SearchArea.Editable = Convert.ToBoolean(dict["SearchArea_Editable"]);
if (dict.ContainsKey("SearchArea_IsGood"))
SearchArea.IsGood = Convert.ToBoolean(dict["SearchArea_IsGood"]);
if (dict.ContainsKey("SearchArea_LocationX") && dict.ContainsKey("SearchArea_LocationY"))
SearchArea.Location = new Vector2(Convert.ToSingle(dict["SearchArea_LocationX"]), Convert.ToSingle(dict["SearchArea_LocationY"]));
if (dict.ContainsKey("SearchArea_OffsetX") && dict.ContainsKey("SearchArea_OffsetY"))
SearchArea.Offset = new Vector2(Convert.ToSingle(dict["SearchArea_OffsetX"]), Convert.ToSingle(dict["SearchArea_OffsetY"]));
if (dict.ContainsKey("SearchArea_SizeX") && dict.ContainsKey("SearchArea_SizeY"))
SearchArea.Size = new Vector2(Convert.ToSingle(dict["SearchArea_SizeX"]), Convert.ToSingle(dict["SearchArea_SizeY"]));
}
}

View File

@@ -172,4 +172,51 @@ public class FindManyBlobsOperation:BaseOperation
SearchArea.Load(br);
}
public override void Save(Dictionary<string, object> dict)
{
base.Save(dict);
dict[nameof(MinArea)] = MinArea;
dict[nameof(MaxArea)] = MaxArea;
dict[nameof(MinRadius)] = MinRadius;
dict[nameof(MaxRadius)] = MaxRadius;
dict[nameof(ReferenceId)] = ReferenceId.ToString();
// Save SearchArea properties manually
dict["SearchArea_Editable"] = SearchArea.Editable;
dict["SearchArea_IsGood"] = SearchArea.IsGood;
dict["SearchArea_LocationX"] = SearchArea.Location.X;
dict["SearchArea_LocationY"] = SearchArea.Location.Y;
dict["SearchArea_OffsetX"] = SearchArea.Offset.X;
dict["SearchArea_OffsetY"] = SearchArea.Offset.Y;
dict["SearchArea_SizeX"] = SearchArea.Size.X;
dict["SearchArea_SizeY"] = SearchArea.Size.Y;
}
public override void Load(Dictionary<string, object> dict)
{
base.Load(dict);
if (dict.ContainsKey(nameof(MinArea)))
MinArea = Convert.ToInt32(dict[nameof(MinArea)]);
if (dict.ContainsKey(nameof(MaxArea)))
MaxArea = Convert.ToInt32(dict[nameof(MaxArea)]);
if (dict.ContainsKey(nameof(MinRadius)))
MinRadius = Convert.ToInt32(dict[nameof(MinRadius)]);
if (dict.ContainsKey(nameof(MaxRadius)))
MaxRadius = Convert.ToInt32(dict[nameof(MaxRadius)]);
if (dict.ContainsKey(nameof(ReferenceId)))
ReferenceId = new Guid(dict[nameof(ReferenceId)].ToString());
// Load SearchArea properties manually
if (dict.ContainsKey("SearchArea_Editable"))
SearchArea.Editable = Convert.ToBoolean(dict["SearchArea_Editable"]);
if (dict.ContainsKey("SearchArea_IsGood"))
SearchArea.IsGood = Convert.ToBoolean(dict["SearchArea_IsGood"]);
if (dict.ContainsKey("SearchArea_LocationX") && dict.ContainsKey("SearchArea_LocationY"))
SearchArea.Location = new Vector2(Convert.ToSingle(dict["SearchArea_LocationX"]), Convert.ToSingle(dict["SearchArea_LocationY"]));
if (dict.ContainsKey("SearchArea_OffsetX") && dict.ContainsKey("SearchArea_OffsetY"))
SearchArea.Offset = new Vector2(Convert.ToSingle(dict["SearchArea_OffsetX"]), Convert.ToSingle(dict["SearchArea_OffsetY"]));
if (dict.ContainsKey("SearchArea_SizeX") && dict.ContainsKey("SearchArea_SizeY"))
SearchArea.Size = new Vector2(Convert.ToSingle(dict["SearchArea_SizeX"]), Convert.ToSingle(dict["SearchArea_SizeY"]));
}
}

View File

@@ -109,4 +109,54 @@ public class FindRectangleOperation:BaseOperation
BadIfFound = br.ReadBoolean();
SearchArea.Load(br);
}
public override void Save(Dictionary<string, object> dict)
{
base.Save(dict);
dict[nameof(MinWidth)] = MinWidth;
dict[nameof(MaxWidth)] = MaxWidth;
dict[nameof(MinHeight)] = MinHeight;
dict[nameof(MaxHeight)] = MaxHeight;
dict[nameof(BadIfFound)] = BadIfFound;
dict[nameof(ReferenceId)] = ReferenceId.ToString();
// Save SearchArea properties manually
dict["SearchArea_Editable"] = SearchArea.Editable;
dict["SearchArea_IsGood"] = SearchArea.IsGood;
dict["SearchArea_LocationX"] = SearchArea.Location.X;
dict["SearchArea_LocationY"] = SearchArea.Location.Y;
dict["SearchArea_OffsetX"] = SearchArea.Offset.X;
dict["SearchArea_OffsetY"] = SearchArea.Offset.Y;
dict["SearchArea_SizeX"] = SearchArea.Size.X;
dict["SearchArea_SizeY"] = SearchArea.Size.Y;
}
public override void Load(Dictionary<string, object> dict)
{
base.Load(dict);
if (dict.ContainsKey(nameof(MinWidth)))
MinWidth = Convert.ToInt32(dict[nameof(MinWidth)]);
if (dict.ContainsKey(nameof(MaxWidth)))
MaxWidth = Convert.ToInt32(dict[nameof(MaxWidth)]);
if (dict.ContainsKey(nameof(MinHeight)))
MinHeight = Convert.ToInt32(dict[nameof(MinHeight)]);
if (dict.ContainsKey(nameof(MaxHeight)))
MaxHeight = Convert.ToInt32(dict[nameof(MaxHeight)]);
if (dict.ContainsKey(nameof(BadIfFound)))
BadIfFound = Convert.ToBoolean(dict[nameof(BadIfFound)]);
if (dict.ContainsKey(nameof(ReferenceId)))
ReferenceId = new Guid(dict[nameof(ReferenceId)].ToString());
// Load SearchArea properties manually
if (dict.ContainsKey("SearchArea_Editable"))
SearchArea.Editable = Convert.ToBoolean(dict["SearchArea_Editable"]);
if (dict.ContainsKey("SearchArea_IsGood"))
SearchArea.IsGood = Convert.ToBoolean(dict["SearchArea_IsGood"]);
if (dict.ContainsKey("SearchArea_LocationX") && dict.ContainsKey("SearchArea_LocationY"))
SearchArea.Location = new Vector2(Convert.ToSingle(dict["SearchArea_LocationX"]), Convert.ToSingle(dict["SearchArea_LocationY"]));
if (dict.ContainsKey("SearchArea_OffsetX") && dict.ContainsKey("SearchArea_OffsetY"))
SearchArea.Offset = new Vector2(Convert.ToSingle(dict["SearchArea_OffsetX"]), Convert.ToSingle(dict["SearchArea_OffsetY"]));
if (dict.ContainsKey("SearchArea_SizeX") && dict.ContainsKey("SearchArea_SizeY"))
SearchArea.Size = new Vector2(Convert.ToSingle(dict["SearchArea_SizeX"]), Convert.ToSingle(dict["SearchArea_SizeY"]));
}
}

View File

@@ -103,4 +103,23 @@ public class TwoBlobsAlign:BaseOperation,IHaveOrigin
DesiredAngle = br.ReadInt32();
}
public override void Save(Dictionary<string, object> dict)
{
base.Save(dict);
dict[nameof(Reference1)] = Reference1.ToString();
dict[nameof(Reference2)] = Reference2.ToString();
dict[nameof(DesiredAngle)] = DesiredAngle;
}
public override void Load(Dictionary<string, object> dict)
{
base.Load(dict);
if (dict.ContainsKey(nameof(Reference1)))
Reference1 = new Guid(dict[nameof(Reference1)].ToString());
if (dict.ContainsKey(nameof(Reference2)))
Reference2 = new Guid(dict[nameof(Reference2)].ToString());
if (dict.ContainsKey(nameof(DesiredAngle)))
DesiredAngle = Convert.ToInt32(dict[nameof(DesiredAngle)]);
}
}