Revision Difference
duplicator.RegisterConstraint#561437
<function name="RegisterConstraint" parent="duplicator" type="libraryfunc">
<description>Register a function used for creating a duplicated constraint.</description>
<realm>Shared</realm>
<file line="367-L374">lua/includes/modules/duplicator.lua</file>
<args>
<arg name="name" type="string">The unique name of new constraint</arg>
<arg name="callback" type="function">Function to be called when this constraint is created</arg>
<arg name="..." type="any">Arguments passed to the callback function</arg>
<arg name="customData" type="vararg">Arguments passed to the callback function</arg>
</args>
</function>
<example>
<description>This is from lua/includes/modules/constraint.lua, it registers the Weld Constraint.</description>
<code>duplicator.RegisterConstraint( "Weld", Weld, "Ent1", "Ent2", "Bone1", "Bone2", "forcelimit", "nocollide", "deleteonbreak" )</code>⤶
<description>Example of how to define a custom constraint. You apply the constraint via the custom `constraint_MyCustomConstraint` function, and it will automatically support duplicator.</description>
<code>⤶
function constraint_MyCustomConstraint( Ent1, Ent2, MyCoolData )⤶
if ( !IsValid( Ent1 ) ) then return end⤶
if ( !IsValid( Ent2 ) ) then return end⤶
⤶
-- Your custom constraint code here, you can use "MyCoolData" here, as well as any custom arguments⤶
-- Just make sure to save each custom argument in the Ent2 table below,⤶
-- and add them to duplicator.RegisterConstraint below as well⤶
⤶
constraint.AddConstraintTable( Ent1, Ent2, Ent2 )⤶
⤶
Ent2:SetTable( {⤶
Type = "MyCustomConstraint",⤶
Ent1 = Ent1,⤶
Ent2 = Ent2,⤶
MyCoolData = MyCoolData⤶
} )⤶
⤶
return Ent2⤶
end⤶
duplicator.RegisterConstraint( "MyCustomConstraint", constraint_MyCustomConstraint, "Ent1", "Ent2", "MyCoolData" )⤶
</code>⤶
</example>