TargetLockingComponent Definition
Requires an xsi:type attribute:
<EntityComponent xsi:type="MyObjectBuilder_TargetLockingComponentDefinition">
This is part of an entity component, see EntityComponents for usage details.
A character entity component that allows the character to lock onto grids for targeting purposes.
This also requires TargetFocusComponent Definition.
There's also the TargetLockingBlockComponent Definition variant for blocks.
Time Formula
In summary, the distance percentage as 0 to 1 between the target and the targeter is the initial time. Then multiplied by the various Modifier depending on the target type. Finally, the Min&Max suffixed elements cap that time within their bounds so that it cannot go insanely fast or insanely slow.
Actual formula used to determine time to lock:
DistanceRatio = DistanceBetweenShips / TargetFocusComponent_<FocusSearchMaxDistance>
SizeModifier = <LockingModifierSmallGrid> or <LockingModifierLargeGrid> or <LockingModifierCharacter> depending on what the target is
DistanceModifier = <LockingModifierDistance> if target is a grid, otherwise <LockingModifierDistanceCharacter>
Limits = <LockingTimeMin> & <LockingTimeMax> if target is a grid, otherwise <LockingTimeMinCharacter> & <LockingTimeMaxCharacter>
TimeToLock = (DistanceRatio * DistanceModifier * SizeModifier) capped within Limits
Elements
LockingModifierSmallGrid<LockingModifierSmallGrid> | Type: Single | Default: 2 |
| Lock-on time modifier if target is a small grid, larger numbers would take longer. | ||
LockingModifierLargeGrid<LockingModifierLargeGrid> | Type: Single | Default: 1 |
| Lock-on time modifier if target is a large grid, larger numbers would take longer. | ||
LockingModifierCharacter<LockingModifierCharacter> | Type: Single | Default: 2 |
| Lock-on time modifier if target is a character, larger numbers would take longer. | ||
LockingModifierDistance<LockingModifierDistance> | Type: Single | Default: 10 |
| Recommended to leave at 1 for simplicity, change the other ones instead. | ||
LockingModifierDistanceCharacter<LockingModifierDistanceCharacter> | Type: Single | Default: 10 |
| Recommended to leave at 1 for simplicity, change the other ones instead. | ||
LockingTimeMin<LockingTimeMin> | Type: Single | Default: 1 |
| Locking onto a grid cannot be shorter than this many seconds. | ||
LockingTimeMax<LockingTimeMax> | Type: Single | Default: 10 |
| Locking onto a grid cannot take longer than this many seconds. | ||
LockingTimeMinCharacter<LockingTimeMinCharacter> | Type: Single | Default: 1 |
| Locking on a character cannot be shorter than this many seconds. | ||
LockingTimeMaxCharacter<LockingTimeMaxCharacter> | Type: Single | Default: 10 |
| Locking on a character cannot take longer than this many seconds. | ||
(Top) | From ComponentDefinitionBase:
(Nothing)
(Top) | From DefinitionBase:
Common
Id<Id> | Type: SerializableDefinitionId | Default: (invalid) | ||||||||||||||||||||||||
| The type and subtype combined make up a unique identifier for this definition. If two definitions use the same Type+Subtype (Subtypes are only unique per Type), then the last to load will override the first one(s). For more details see Things to know about SBC.
<Id>
<TypeId>CubeBlock</TypeId>
<SubtypeId>FancyTable</SubtypeId>
</Id>
Because it has attribute alternatives it can also be declared as: <Id Type="CubeBlock" Subtype="FancyTable" />
| ||||||||||||||||||||||||||
DisplayName<DisplayName> | Type: String | Default: null | ||||||||||||||||||||||||
| If the object defined here is visible anywhere in the game GUI, this would be the name shown for it. In cases where it is used, it is very much required. Can be plain-text.
| ||||||||||||||||||||||||||
Description<Description> | Type: String | Default: null | ||||||||||||||||||||||||
| Optional. If the object defined here is shown with a description in the game GUI (Hotbar/G-menu, HUD, etc) then this is the place to write it. Can be plain-text.
{0}, {1}, etc, then they will replaced by kb&m control binds defined in <DescriptionArgs>. | ||||||||||||||||||||||||||
DescriptionArgs<DescriptionArgs> | Type: String | Default: null | ||||||||||||||||||||||||
Optional. A comma-separated list of control IDs which are referenced in <Description> by {number} tags, which then get replaced by the keyboard or mouse bind that the viewer has for those controls.Example: <Description>Press {0} to fire, {1} to change color, {2} to interact.</description>
<DescriptionArgs>PRIMARY_TOOL_ACTION,CUBE_COLOR_CHANGE,USE</DescriptionArgs>
And each player will see their current binds for those actions. | ||||||||||||||||||||||||||
Icon<Icon> | Type: String[] | Default: null | ||||||||||||||||||||||||
| Icon(s) for the definition which may or may not be used depending on the definition type. Path to a .dds or .png file relative to current mod's folder. Falls back to game folder if not found in current mod.
Referencing assets in other mods Can be declared multiple times which will stack icons on top of eachother, however it will not work for all definitions. Known definitions to work or not work with multiple icons
| ||||||||||||||||||||||||||
DLC<DLC> | Type: String[] | Default: null | ||||||||||||||||||||||||
| Optional. The DLC subtypeId that this definition will require. For the IDs, refer to <SE>\Content\Data\Game\DLCs.sbc. | ||||||||||||||||||||||||||
AvailableInSurvival<AvailableInSurvival> | Type: Boolean | Default: true | ||||||||||||||||||||||||
| Depends on the definition if it uses this, and if it does then this determines whether it can be accessible in survival game mode.
Currently known definitions that do use this:
| ||||||||||||||||||||||||||
Public<Public> | Type: Boolean | Default: true | ||||||||||||||||||||||||
| If the definition is visible or accessible in some cases. For blocks, this only hides them and they can still be built using projectors and other means. | ||||||||||||||||||||||||||
EnabledEnabled (attribute[1]) | Type: Boolean | Default: true | ||||||||||||||||||||||||
If set to false it will remove the definition after it's been loaded.Example usage: <Definition Enabled="false">
The "Definition" above is the opening element that for the entire definition, not an inner node like Note: One known case where it doesn't "fully" remove a definition is removing another mod's blocks only for one size, leaving the other size referencing the removed definition. The solution to that is to append something to the <BlockPairName> to make it unique and not link itself with the other size anymore. The block is otherwise removed from other systems: cannot be found in blocks menu and pasting a blueprint that had the block spawns without it (which is good). | ||||||||||||||||||||||||||
xsi:typexsi:type (attribute[1]) | Type: string | Default: null | ||||||||||||||||||||||||
Name of an object that this definition will be deserialized as. This attribute is available on all elements and comes from the XML specification. This game relies on this attribute to change which sub-definition object is used to deserialize that element's contents. It's what allows, for example, a thruster to have unique elements (such as For more details on how this relates to the TypeId, and usage examples, see: Things to know about SBC - TypeId vs xsi:type. | ||||||||||||||||||||||||||