Generate avatar-facing API shims
This commit is contained in:
@@ -157,6 +157,114 @@ CORE_ROOT_TYPES = {
|
||||
"T:LibreMetaverse.XferDownload",
|
||||
"T:LibreMetaverse.XferReceivedEventArgs",
|
||||
}
|
||||
AVATAR_NAMESPACES = (
|
||||
"LibreMetaverse.Animesh",
|
||||
"LibreMetaverse.Appearance",
|
||||
)
|
||||
AVATAR_TYPE_PREFIXES = (
|
||||
"T:LibreMetaverse.Agent",
|
||||
"T:LibreMetaverse.Animations",
|
||||
"T:LibreMetaverse.AnimeshSkinning",
|
||||
"T:LibreMetaverse.Appearance",
|
||||
"T:LibreMetaverse.ArchetypeParam",
|
||||
"T:LibreMetaverse.Asset",
|
||||
"T:LibreMetaverse.Attention",
|
||||
"T:LibreMetaverse.Avatar",
|
||||
"T:LibreMetaverse.Inventory",
|
||||
)
|
||||
AVATAR_ROOT_TYPES = {
|
||||
"T:LibreMetaverse.AISResponseMeta",
|
||||
"T:LibreMetaverse.AccountLevelBenefits",
|
||||
"T:LibreMetaverse.AlertMessageEventArgs",
|
||||
"T:LibreMetaverse.BakeType",
|
||||
"T:LibreMetaverse.BalanceEventArgs",
|
||||
"T:LibreMetaverse.BinBVHAnimationReader",
|
||||
"T:LibreMetaverse.BorderCrossingDirection",
|
||||
"T:LibreMetaverse.CallingCardOfferedEventArgs",
|
||||
"T:LibreMetaverse.CameraConstraintEventArgs",
|
||||
"T:LibreMetaverse.ChannelType",
|
||||
"T:LibreMetaverse.ChatAudibleLevel",
|
||||
"T:LibreMetaverse.ChatEventArgs",
|
||||
"T:LibreMetaverse.ChatSessionMember",
|
||||
"T:LibreMetaverse.ChatSessionMemberAddedEventArgs",
|
||||
"T:LibreMetaverse.ChatSessionMemberLeftEventArgs",
|
||||
"T:LibreMetaverse.ChatSourceType",
|
||||
"T:LibreMetaverse.ChatType",
|
||||
"T:LibreMetaverse.ClassifiedAd",
|
||||
"T:LibreMetaverse.ClassifiedInfoReplyEventArgs",
|
||||
"T:LibreMetaverse.DeRezDestination",
|
||||
"T:LibreMetaverse.DisplayNameUpdateEventArgs",
|
||||
"T:LibreMetaverse.DrivenParamInfo",
|
||||
"T:LibreMetaverse.EffectType",
|
||||
"T:LibreMetaverse.ExperienceInfoEventArgs",
|
||||
"T:LibreMetaverse.ExperiencePreferencesEventArgs",
|
||||
"T:LibreMetaverse.FindObjectByPathReplyEventArgs",
|
||||
"T:LibreMetaverse.FolderUpdatedEventArgs",
|
||||
"T:LibreMetaverse.Genepool",
|
||||
"T:LibreMetaverse.GenepoolArchetype",
|
||||
"T:LibreMetaverse.GroupChatJoinedEventArgs",
|
||||
"T:LibreMetaverse.HandPose",
|
||||
"T:LibreMetaverse.InitiateDownloadEventArgs",
|
||||
"T:LibreMetaverse.InstantMessage",
|
||||
"T:LibreMetaverse.InstantMessageDialog",
|
||||
"T:LibreMetaverse.InstantMessageEventArgs",
|
||||
"T:LibreMetaverse.InstantMessageOnline",
|
||||
"T:LibreMetaverse.ItemReceivedEventArgs",
|
||||
"T:LibreMetaverse.LindenAttentions",
|
||||
"T:LibreMetaverse.LoadUrlEventArgs",
|
||||
"T:LibreMetaverse.LookAtType",
|
||||
"T:LibreMetaverse.MeanCollisionEventArgs",
|
||||
"T:LibreMetaverse.MeanCollisionType",
|
||||
"T:LibreMetaverse.MoneyBalanceReplyEventArgs",
|
||||
"T:LibreMetaverse.MoneyTransactionType",
|
||||
"T:LibreMetaverse.MuteEntry",
|
||||
"T:LibreMetaverse.MuteFlags",
|
||||
"T:LibreMetaverse.MuteType",
|
||||
"T:LibreMetaverse.NavMeshStatusUpdateEventArgs",
|
||||
"T:LibreMetaverse.PayPriceReplyEventArgs",
|
||||
"T:LibreMetaverse.PayPriceType",
|
||||
"T:LibreMetaverse.PickInfoReplyEventArgs",
|
||||
"T:LibreMetaverse.PointAtType",
|
||||
"T:LibreMetaverse.ProductInfoEventArgs",
|
||||
"T:LibreMetaverse.ProfileFlags",
|
||||
"T:LibreMetaverse.ProfilePick",
|
||||
"T:LibreMetaverse.RebakeAvatarTexturesEventArgs",
|
||||
"T:LibreMetaverse.RegionCrossedEventArgs",
|
||||
"T:LibreMetaverse.RegionCrossingPredictionEventArgs",
|
||||
"T:LibreMetaverse.RegionExperiencesEventArgs",
|
||||
"T:LibreMetaverse.SaveAssetToInventoryEventArgs",
|
||||
"T:LibreMetaverse.ScriptControlChange",
|
||||
"T:LibreMetaverse.ScriptControlEventArgs",
|
||||
"T:LibreMetaverse.ScriptDialogEventArgs",
|
||||
"T:LibreMetaverse.ScriptPermission",
|
||||
"T:LibreMetaverse.ScriptQuestionEventArgs",
|
||||
"T:LibreMetaverse.ScriptRunningReplyEventArgs",
|
||||
"T:LibreMetaverse.ScriptSensorReplyEventArgs",
|
||||
"T:LibreMetaverse.ScriptSensorTypeFlags",
|
||||
"T:LibreMetaverse.SetDisplayNameReplyEventArgs",
|
||||
"T:LibreMetaverse.SkeletalBoneInfo",
|
||||
"T:LibreMetaverse.TaskInventoryReplyEventArgs",
|
||||
"T:LibreMetaverse.TaskItemReceivedEventArgs",
|
||||
"T:LibreMetaverse.TeleportEventArgs",
|
||||
"T:LibreMetaverse.TeleportFlags",
|
||||
"T:LibreMetaverse.TeleportLureFlags",
|
||||
"T:LibreMetaverse.TeleportStatus",
|
||||
"T:LibreMetaverse.TransactionFlags",
|
||||
"T:LibreMetaverse.TransactionInfo",
|
||||
"T:LibreMetaverse.UUIDNameReplyEventArgs",
|
||||
"T:LibreMetaverse.ViewerBenefitsEventArgs",
|
||||
"T:LibreMetaverse.ViewerEffectEventArgs",
|
||||
"T:LibreMetaverse.ViewerEffectLookAtEventArgs",
|
||||
"T:LibreMetaverse.ViewerEffectPointAtEventArgs",
|
||||
"T:LibreMetaverse.VisualAlphaParam",
|
||||
"T:LibreMetaverse.VisualColorOperation",
|
||||
"T:LibreMetaverse.VisualColorParam",
|
||||
"T:LibreMetaverse.VisualParam",
|
||||
"T:LibreMetaverse.VisualParams",
|
||||
"T:LibreMetaverse.VolumeMorphInfo",
|
||||
"T:LibreMetaverse.binBVHJoint",
|
||||
"T:LibreMetaverse.binBVHJointKey",
|
||||
}
|
||||
|
||||
UNDERLYING = {
|
||||
"System.SByte": "i8", "System.Byte": "u8", "System.Int16": "i16", "System.UInt16": "u16",
|
||||
@@ -384,6 +492,14 @@ def core_type(item: dict) -> bool:
|
||||
return item["doc_id"] in CORE_ROOT_TYPES or item["namespace"].startswith(CORE_NAMESPACES)
|
||||
|
||||
|
||||
def avatar_type(item: dict) -> bool:
|
||||
return (
|
||||
item["doc_id"] in AVATAR_ROOT_TYPES
|
||||
or item["doc_id"].startswith(AVATAR_TYPE_PREFIXES)
|
||||
or item["namespace"].startswith(AVATAR_NAMESPACES)
|
||||
)
|
||||
|
||||
|
||||
def render_modules(items: list[tuple[dict, dict, bool]], member_rows: dict[str, dict[str, str]], mapper: mapping.Mapper) -> str:
|
||||
tree: dict = {"items": [], "children": {}}
|
||||
for item, type_row, complete in items:
|
||||
@@ -410,7 +526,7 @@ def render_modules(items: list[tuple[dict, dict, bool]], member_rows: dict[str,
|
||||
def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[int, int, bool]]]:
|
||||
type_rows, resolved = mapping.build_type_rows(catalog)
|
||||
type_by_id = {row["csharp_type_id"]: row for row in type_rows}
|
||||
configured_main_ids = WIRE_ROOT_TYPES | CORE_ROOT_TYPES
|
||||
configured_main_ids = WIRE_ROOT_TYPES | CORE_ROOT_TYPES | AVATAR_ROOT_TYPES
|
||||
missing_configured_ids = configured_main_ids - type_by_id.keys()
|
||||
if missing_configured_ids:
|
||||
raise ValueError(f"unknown configured main-slice IDs: {sorted(missing_configured_ids)}")
|
||||
@@ -442,7 +558,7 @@ def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[in
|
||||
selected = (
|
||||
assembly["types"]
|
||||
if name in TARGETS
|
||||
else [item for item in assembly["types"] if wire_type(item) or core_type(item)]
|
||||
else [item for item in assembly["types"] if wire_type(item) or core_type(item) or avatar_type(item)]
|
||||
)
|
||||
selected_ids = {item["doc_id"] for item in selected}
|
||||
rendered_items = [
|
||||
@@ -494,16 +610,22 @@ def coverage_report(catalog: dict, coverage: dict[str, tuple[int, int, bool]]) -
|
||||
)
|
||||
wire_types = [item for item in main_types if wire_type(item)]
|
||||
core_types = [item for item in main_types if core_type(item) and not wire_type(item)]
|
||||
avatar_types = [
|
||||
item
|
||||
for item in main_types
|
||||
if avatar_type(item) and not wire_type(item) and not core_type(item)
|
||||
]
|
||||
lines += [
|
||||
"",
|
||||
"The partial `LibreMetaverse` row contains the completed issue #7 wire/data slice and issue #8 core",
|
||||
"runtime/networking slice. Avatar-facing and world/social/service manager types remain pending shells",
|
||||
"for issues #9 and #10.",
|
||||
"The partial `LibreMetaverse` row contains the completed issue #7 wire/data, issue #8 core",
|
||||
"runtime/networking, and issue #9 avatar-facing manager slices. World/social/service manager types",
|
||||
"remain pending shells for issue #10.",
|
||||
"",
|
||||
"| Main assembly slice | Types | Members |",
|
||||
"|---|---:|---:|",
|
||||
f"| Issue #7 wire/data | {len(wire_types):,} | {sum(len(item['members']) for item in wire_types):,} |",
|
||||
f"| Issue #8 core runtime/networking | {len(core_types):,} | {sum(len(item['members']) for item in core_types):,} |",
|
||||
f"| Issue #9 avatar-facing managers | {len(avatar_types):,} | {sum(len(item['members']) for item in avatar_types):,} |",
|
||||
]
|
||||
lines += ["", f"Current callable coverage: **{total_types:,} types / {total_members:,} members**.", ""]
|
||||
return "\n".join(lines)
|
||||
|
||||
Reference in New Issue
Block a user