Garry's Mod Wiki

Revision Difference

Entity:EnableCustomCollisions#543877

<function name="EnableCustomCollisions" parent="Entity" type="classfunc"> <description>Flags an entity as using custom lua defined collisions. Fixes entities having spongy player collisions or not hitting traces, such as after <page>Entity:PhysicsFromMesh</page> Internally identical to `Entity:AddSolidFlags( bit.bor( FSOLID_CUSTOMRAYTEST, FSOLID_CUSTOMBOXTEST ) )` Do not confuse this function with <page>Entity:SetCustomCollisionCheck</page>, they are not the same. </description> <realm>Shared</realm> <args> <arg name="useCustom" type="boolean">True to flag this entity</arg> </args> </function> <example> <description>Creates a mesh table, and assigns it as the entity's collisions</description> <code> function ENT:ProceduralPlatform() local VERTICES = {}, for x = 1, 32, 1, do for y = 1, 32, do table.insert( VERTICES, { pos = ( self:GetPos() + Vector( 0, 0, 1 ) ) } ); table.insert( VERTICES, { pos = ( self:GetPos() + Vector( 0, y, 1 ) ) } ); table.insert( VERTICES, { pos = ( self:GetPos() + Vector( x, y, 1 ) ) } ); table.insert( VERTICES, { pos = ( self:GetPos() + Vector( 0, 0, 1 ) ) } ); table.insert( VERTICES, { pos = ( self:GetPos() + Vector( x, y, 1 ) ) } ); table.insert( VERTICES, { pos = ( self:GetPos() + Vector( x, 0, 1 ) ) } ); local VERTICES = {} for x = 1, 32 do for y = 1, 32 do table.insert( VERTICES, { pos = ( self:GetPos() + Vector( 0, 0, 1 ) ) } ) table.insert( VERTICES, { pos = ( self:GetPos() + Vector( 0, y, 1 ) ) } ) table.insert( VERTICES, { pos = ( self:GetPos() + Vector( x, y, 1 ) ) } ) table.insert( VERTICES, { pos = ( self:GetPos() + Vector( 0, 0, 1 ) ) } ) table.insert( VERTICES, { pos = ( self:GetPos() + Vector( x, y, 1 ) ) } ) table.insert( VERTICES, { pos = ( self:GetPos() + Vector( x, 0, 1 ) ) } ) end end self:PhysicsFromMesh( VERTICES ); self:GetPhysicsObject():EnableMotion( false ); self:EnableCustomCollisions( true ); self:PhysicsFromMesh( VERTICES ) self:GetPhysicsObject():EnableMotion( false ) self:EnableCustomCollisions( true ) end </code> </example>