private void SmallGridIntersect(MyEntity ent) { var grid = (MyCubeGrid)ent; if (ent == null || grid == null || grid.MarkedForClose || grid.Closed) { return; } if (GridInside(grid, MyOrientedBoundingBoxD.CreateFromBoundingBox(grid.PositionComp.WorldAABB))) { return; } EntIntersectInfo entInfo; WebEnts.TryGetValue(ent, out entInfo); if (entInfo == null) { return; } if (_isServer) { CustomCollision.SmallIntersect(entInfo, FewDmgBlocks, DestroyedBlocks, ForceData, ImpulseData, grid, DetectMatrixOutside, DetectMatrixOutsideInv, Session.Enforced.DisableBlockDamage == 0); } else { CustomCollision.ClientSmallIntersect(entInfo, grid, DetectMatrixOutside, DetectMatrixOutsideInv, Eject); } var contactpoint = entInfo.ContactPoint; entInfo.ContactPoint = Vector3D.NegativeInfinity; if (contactpoint != Vector3D.NegativeInfinity) { entInfo.Touched = true; WebDamage = true; if (!_isServer) { return; } var damage = entInfo.Damage * DsState.State.ModulateEnergy; if (_mpActive) { if (_isServer) { AddShieldHit(grid.EntityId, damage, Session.Instance.MPKinetic, null, false, contactpoint); } } else { Absorb += damage; ImpactSize = entInfo.Damage; WorldImpactPosition = contactpoint; } entInfo.Damage = 0; } }