1"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5449],{12974:(e,t,s)=>{s.d(t,{A:()=>r});const r=s.p+"assets/images/T_SocketToPrefixDataExample-3fa4d5cf25d7cf16932a44286a6ab103.png"},18470:(e,t,s)=>{s.d(t,{A:()=>r});const r=s.p+"assets/images/T_UseCaseOfInputParams-7ba6d8c50473335626dd3c06de7de0b4.png"},28453:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>c});var r=s(96540);const n={},i=r.createContext(n);function a(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),r.createElement(i.Provider,{value:t},e.children)}},29041:(e,t,s)=>{s.d(t,{A:()=>r});const r=s.p+"assets/images/T_TrailingDebugShowcase-1eaabad32558f59f67c36a45e505e0aa.gif"},31043:(e,t,s)=>{s.d(t,{A:()=>r});const r=s.p+"assets/images/T_CreateAndRegisterTaskFunction-48f206c8e8d45f164e957fa5c8296262.png"},48072:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"Easy-Trace-Trail-System/CreatingHitTrails","title":"Creating Hit Trails","description":"This plugin manages it through a World Subsystem. World Subsystems can be accessed in your classes if they have a world access. Meaning if you can do any tracing normally in your class, you can create a hit-trail too. To access this subsystem get Trace Trailer Task Manager. From that subsystem you can access Create And Register Trace Task function.","source":"@site/docs/Easy-Trace-Trail-System/CreatingHitTrails.md","sourceDirName":"Easy-Trace-Trail-System","slug":"/Easy-Trace-Trail-System/CreatingHitTrails","permalink":"/docs/Easy-Trace-Trail-System/CreatingHitTrails","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"sidebar_position":3},"sidebar":"tutorialSidebar","previous":{"title":"Setup","permalink":"/docs/Easy-Trace-Trail-System/Setup"},"next":{"title":"Managing Trace-Trail Tasks","permalink":"/docs/Easy-Trace-Trail-System/ManagingTraceTrailTasks"}}');var n=s(74848),i=s(28453);const a={sidebar_position:3},c="Creating Hit Trails",l={},d=[{value:"Create and Register Trace Task Function",id:"create-and-register-trace-task-function",level:2},{value:"Inputs",id:"inputs",level:3},{value:"Data Structures Reference",id:"data-structures-reference",level:3},{value:"Easy Trace Shape Types (Enum)",id:"easy-trace-shape-types-enum",level:4},{value:"Easy Trace Mesh Socket Data (Struct)",id:"easy-trace-mesh-socket-data-struct",level:4},{value:"Easy Trace Trailer Task Settings (Struct)",id:"easy-trace-trailer-task-settings-struct",level:4},{value:"Easy Trace Mesh Section Data (Struct)",id:"easy-trace-mesh-section-data-struct",level:4},{value:"Easy Trace Trail Hit Result (Struct)",id:"easy-trace-trail-hit-result-struct",level:4},{value:"Easy Trace Trail Socket Section Runtime Data (Struct)",id:"easy-trace-trail-socket-section-runtime-data-struct",level:4}];function o(e){const t={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"creating-hit-trails",children:"Creating Hit Trails"})}),"\n",(0,n.jsxs)(t.p,{children:["This plugin manages it through a ",(0,n.jsx)(t.a,{href:"https://dev.epicgames.com/documentation/en-us/unreal-engine/programming-subsystems-in-unreal-engine",children:"World Subsystem"}),". World Subsystems can be accessed in your classes if they have a world access. Meaning if you can do any tracing normally in your class, you can create a hit-trail too. To access this subsystem get ",(0,n.jsx)(t.em,{children:"Trace Trailer Task Manager"}),". From that subsystem you can access ",(0,n.jsx)(t.em,{children:"Create And Register Trace Task"})," function."]}),"\n",(0,n.jsx)(t.h2,{id:"create-and-register-trace-task-function",children:"Create and Register Trace Task Function"}),"\n",(0,n.jsxs)(t.p,{children:["This is the function to create our traces with given settings. Once it is created we have events that we can bind to. And an output ",(0,n.jsx)(t.em,{children:"Easy Trace Trailer Task"})," object reference."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Create And Register Trace Task Function Preview",src:s(31043).A+"",width:"1404",height:"986"})}),"\n",(0,n.jsx)(t.h3,{id:"inputs",children:"Inputs"}),"\n",(0,n.jsx)(t.p,{children:"These inputs will control how the hit-trail will behave."}),"\n",(0,n.jsxs)(t.admonition,{type:"tip",children:[(0,n.jsx)(t.mdxAdmonitionTitle,{children:(0,n.jsx)(t.strong,{children:"Real-World Implementation Example"})}),(0,n.jsx)(t.p,{children:"Let's look at how to use these parameters in a practical combat system implementation."}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"UseCaseOfInputParams",src:s(18470).A+"",width:"1798",height:"1124"})}),(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Step 1: Create and Store the Task"}),(0,n.jsx)(t.br,{}),"\n","In this ",(0,n.jsx)(t.a,{href:"https://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-ability-system-for-unreal-engine",children:"Gameplay Ability"})," example, I create the trace task and store its reference in a variable for later access (like clearing the task when the attack ends)."]}),(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Step 2: Get the Mesh Component"}),(0,n.jsx)(t.br,{}),"\n","I retrieve the weapon's ",(0,n.jsx)(t.em,{children:"Skeletal Mesh Component"})," from the character's equipped weapon."]}),(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Step 3: Configure Section Data"}),(0,n.jsx)(t.br,{}),"\n","The ",(0,n.jsx)(t.em,{children:"Mesh Trail Socket Data"})," comes from weapon attributes I've pre-configured:"]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"SocketToPrefixDataExample",src:s(12974).A+"",width:"1960",height:"842"})}),(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Dynamic Section Mapping:"}),(0,n.jsx)(t.br,{}
1),"\n","Notice I use two different ",(0,n.jsx)(t.em,{children:"SocketToPrefixData"})," configurations. This allows different attack types to use different weapon sections, or use the same socket sections with a different tag mapping."]}),(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Thrust attacks"}),' \u2192 Uses "Tip" section for precise stabbing damage']}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Swing attacks"}),' \u2192 Uses "Edge" section for slashing damage']}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Dynamic Section Mapping Gif",src:s(29041).A+"",width:"400",height:"225"})}),"\n"]}),"\n"]}),(0,n.jsxs)(t.p,{children:["This flexibility lets you map the same physical weapon sections to different ",(0,n.jsx)(t.a,{href:"https://dev.epicgames.com/documentation/en-us/unreal-engine/using-gameplay-tags-in-unreal-engine",children:"GameplayTags"})," based on the attack type."]}),(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Task Settings Configuration:"}),(0,n.jsx)(t.br,{}),"\n","I use consistent values for trace settings that mirror how you'd configure standard Unreal Engine traces."]}),(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Important: Trace Channel Setup"}),(0,n.jsx)(t.br,{}),"\n","Use an ",(0,n.jsx)(t.strong,{children:"Overlap"})," ",(0,n.jsx)(t.a,{href:"https://dev.epicgames.com/documentation/en-us/unreal-engine/traces-in-unreal-engine---overview",children:"Trace Channel"})," rather than ",(0,n.jsx)(t.strong,{children:"Block"}),". Blocking traces stop at the first hit, preventing detection of multiple targets. For single-hit mechanics, manually clear the task in your ",(0,n.jsx)(t.em,{children:"OnTraceHit"})," event instead."]})]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Parameter"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Target Component"})}),(0,n.jsx)(t.td,{children:"Primitive Component Object Reference"}),(0,n.jsx)(t.td,{children:"Skeletal or Static Mesh Component that we are going to use to do the tracing."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Mesh Per Socket Section Data"})}),(0,n.jsx)(t.td,{children:"Easy Trace Mesh Section Struct"}),(0,n.jsx)(t.td,{children:"Contains the mesh component and socket section information that defines which parts of your object will be traced."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Task Settings"})}),(0,n.jsx)(t.td,{children:"Easy Trace Trailer Task Settings Structure"}),(0,n.jsx)(t.td,{children:"Configuration settings that control how the trace behaves, including trace frequency, collision channels, and other parameters."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"On Trace Hit"})}),(0,n.jsx)(t.td,{children:"Delegate"}),(0,n.jsx)(t.td,{children:"Event that fires when the trace detects a hit, allowing you to handle collision responses and damage logic."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"On Trace Task Cleared"})}),(0,n.jsx)(t.td,{children:"Delegate"}),(0,n.jsx)(t.td,{children:"Event that fires when the trace task is completed or manually cleared, useful for cleanup operations."})]})]})]}),"\n",(0,n.jsx)(t.h3,{id:"data-structures-reference",children:"Data Structures Reference"}),"\n",(0,n.jsx)(t.p,{children:"This section explains the key data structures used by the Easy Trace-Trail System."}),"\n",(0,n.jsx)(t.h4,{id:"easy-trace-shape-types-enum",children:"Easy Trace Shape Types (Enum)"}),"\n",(0,n.jsx)(t.p,{children:"The plugin supports three different trace shapes for hit detection:"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Shape Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Line Trace"})}),(0,n.jsx)(t.td,{children:"Simple line-based collision detection, fastest performance"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Sphere Trace"})}),(0,n.jsx)(t.td,{children:"Spherical collision detection, good for projectiles or area effects"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Box Trace"})}),(0,n.jsx)(t.td,{children:"Rectangular collision detection, best for sword edges and similar weapons"})]})]})]}),"\n",(0,n.jsx)(t.h4,{id:"easy-trace-mesh-socket-data-struct",children:"Easy Trace Mesh Socket Data (Struct)"}),"\n",(0,n.jsx)(t.p,{children:"This structure defines the trace settings for individual sockets on your mesh."}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Property"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Socket Tag"})}),(0,n.jsx)(t.td,{children:"Gameplay Tag"}),(0,n.jsx)(t.td,{children:"Identifier for the socket, used to distinguish hit results from different parts of your weapon"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Trace Shape"})}),(0,n.jsx)(t.td,{children:"Easy Trace Shape Types"}),(0,n.jsx)(t.td,{children:"The collision shape to use (Line, Sphere, or Box)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Virtual Socket Distance"})}),(0,n.jsx)(t.td,{children:"Float (cm)"}),(0,n.jsx)(t.td,{children:"Distance to extend the virtual socket from the actual socket location toward the next socket. Controls trace distribution and shape size"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Trail Width"})}),(0,n.jsx)(t.td,{children:"Float (cm)"}),(0,n.jsx)(t.td,{children:"Width of the trail (only used for Box traces)"})]})]})]}),"\n",(0,n.jsx)(t.h4,{id:"easy-trace-trailer-task-settings-struct",children:"Easy Trace Trailer Task Settings (Struct)"}),"\n",(0,n.jsx)(t.p,{children:"Main configuration structure that controls how the trace task behaves."}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Property"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Trace FPS"})}),(0,n.jsx)(t.td,{children:"Float"}),(0,n.jsx)(t.td,{children:"Number of traces performed per second (higher = more accurate, lower = better performance)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Trace Complex"})}),(0,n.jsx)(t.td,{children:"Boolean"}),(0,n.jsx)(t.td,{children:"Whether to use complex collision (slower but more accurate)"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Actors To Ignore"})}),(0,n.jsx)(t.td,{children:"Array of Actors"}),(0,n.jsx)(t.td,{children:"List of actors that should be ignored during tracing"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Only Trace Actor Once"})}),(0,n.jsx)(t.td,{children:"Boolean"}),(0,n.jsx)(t.td,{children:"If true, each actor will only be hit once per task lifetime"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Result Priority Order"})}),(0,n.jsx)(t.td,{children:"Set of Gameplay Tags"}),(0,n.jsx)(t.td,{children:"Priority order for hit results - higher priority hits are reported first"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Trace Channel"})}),(0,n.jsx)(t.td,{children:"Trace Type Query"}),(0,n.jsx)(t.td,{children:"Which collision channel to trace against"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Instigator"})}),(0,n.jsx)(t.td,{children:"Pawn"}),(0,n.jsx)(t.td,{children:"Optional pawn reference for context in hit events"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Instigator Tags"})}),(0,n.jsx)(t.td,{children:"Gameplay Tag Container"}),(0,n.jsx)(t.td,{children:"Optional tags for additional context"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Debug Draw Trace"})}),(0,n.jsx)(t.td,{children:"Draw Debug Trace Type"}),(0,n.jsx)(t.td,{children:"Whether to visualize traces in the world for debugging"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Debug Draw Time"})}),(0,n.jsx)(t.td,{children:"Float"}),(0,n.jsx)(t.td,{children:"How long (in seconds) to display debug traces"})]})]})]}),"\n",(0,n.jsx)(t.h4,{id:"easy-trace-mesh-section-data-struct",children:"Easy Trace Mesh Section Data (Struct)"}),"\n",(0,n.jsx)(t.p,{children:"Maps socket name prefixes to their corresponding trace settings."}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Property"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Socket Prefix To Data"})}),(0,n.jsx)(t.td,{children:"Map (String \u2192 Socket Data)"}),(0,n.jsx)(t.td,{children:'Maps socket prefixes (like "Edge", "Tip") to their trace configuration'})]})})]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Example Usage:"})}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:'Prefix: "Edge" \u2192 All sockets starting with "Edge" (Edge_01_Start, Edge_02_End) use the same settings'}),"\n",(0,n.jsx)(t.li,{children:'Prefix: "Tip" \u2192 All sockets starting with "Tip" use different settings optimized for tip hits'}),"\n"]}),"\n",(0,n.jsxs)(t.admonition,{type:"note",children:[(0,n.jsx)(t.mdxAdmonitionTitle,{children:(0,n.jsx)(t.strong,{children:"How Virtual Socket Distribution Works"})}),(0,n.jsx)(t.p,{children:"The system ensures complete coverage of your weapon sections without gaps or overflow:"}),(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Automatic Point Generation:"}),(0,n.jsx)(t.br,{}),"\n","The plugin calculates how many virtual trace points are needed using the formula: ",(0,n.jsx)(t.code,{children:"Ceil(Section Length \xf7 Virtual Socket Distance)"})]}),(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Even Distribution:"}),(0,n.jsx)(t.br,{}),"\n","Instead of using your exact Virtual Socket Distance, the system divides the total section length evenly among all virtual points. This guarantees:"]}),(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"\u2705 No gaps between traces"}),"\n",(0,n.jsx)(t.li,{children:"\u2705 No trace shapes extending beyond the section boundaries"}),"\n",(0,n.jsx)(t.li,{children:"\u2705 Consistent coverage across the entire weapon section"}),"\n"]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Performance vs. Accuracy:"})}),(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Lower Virtual Socket Distance"})," = More virtual points = More accurate motion tracking"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Higher Virtual Socket Distance"})," = Fewer virtual points = Better performance"]}),"\n"]}),(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Example:"})," A 100cm sword edge with 15cm Virtual Socket Distance creates 7 virtual points (Ceil(100\xf715)) spaced exactly 14.3cm apart."]}
1)]}),"\n",(0,n.jsx)(t.h4,{id:"easy-trace-trail-hit-result-struct",children:"Easy Trace Trail Hit Result (Struct)"}),"\n",(0,n.jsx)(t.p,{children:"The result structure returned when a trace detects a hit."}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Property"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Hit Result"})}),(0,n.jsx)(t.td,{children:"Hit Result"}),(0,n.jsx)(t.td,{children:"Standard Unreal Engine hit result containing impact location, normal, actor, etc."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Socket Tag"})}),(0,n.jsx)(t.td,{children:"Gameplay Tag"}),(0,n.jsx)(t.td,{children:"The tag of the socket that generated this hit, allowing you to determine which part of your weapon made contact"})]})]})]}),"\n",(0,n.jsx)(t.h4,{id:"easy-trace-trail-socket-section-runtime-data-struct",children:"Easy Trace Trail Socket Section Runtime Data (Struct)"}),"\n",(0,n.jsx)(t.p,{children:"Runtime data structure created automatically by the system for each trace section."}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Property"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Socket Section"})}),(0,n.jsx)(t.td,{children:"String"}),(0,n.jsx)(t.td,{children:"Runtime-generated unique identifier for the section"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Start Socket"})}),(0,n.jsx)(t.td,{children:"Name"}),(0,n.jsx)(t.td,{children:"The actual start socket name on the mesh component"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"End Socket"})}),(0,n.jsx)(t.td,{children:"Name"}),(0,n.jsx)(t.td,{children:"The actual end socket name on the mesh component"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:(0,n.jsx)(t.strong,{children:"Section Data"})}),(0,n.jsx)(t.td,{children:"Easy Trace Mesh Socket Data"}),(0,n.jsx)(t.td,{children:"User-defined trace settings for this section"})]})]})]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.