Attaching props to the body + Creating a realistic laser pointer attachment for a gun

I recently created a way to add entities that can be used as hats / backpacks like pointshop but it gives modelers who don’t have the LUA knowledge to be able to rig it to the body. However i fear that there is a more optimized way to do it because the rotation isn’t particularly fluid when the player moves.
What is the easiest way to attach the prop to the body and then ensure that it rotates perfectly after altering the angle of the prop itself to align with the rotation of the body part.

I have tried Entity:FollowBone to attach the prop to the bone but when the player moved, the prop would rotate in strange directions that doesn’t match what the player was doing.
To get it to be somewhat usable, i used PostPlayerDraw to create clientside models, find the rotation of the player’s body part and then add whatever rotation value is in the config.

Is there a better, more refined way of doing this ?

Another question is that someone asked me to make the laser beam for a laser pointer attachment that would be enabled using body groups. Getting the attachment of the gun when the body group is active is easy but my issue is creating a realistic laser pointer, is it possible within GMOD? If not i’ll have to use a render beam and stuff right ?

Entity:FollowBone is just a mess, I never understood it. Put bone ID, they don’t work, put attachment ID, they don’t work, put in HitGroup ID, they don’t work, put in physics bone ID, they don’t work.
As much as it would be cool to follow individual bones, you would have to use
local AttachmentID = Player:LookupAttachment(“mouth”)
Ent:SetParent(Player, AttachmentID)

Attachments are not as many and detailed as bones, but you can make it work by moving it before parenting it and you got all you need.

As for the laser: Yup, gotta render a beam, that’s what a laser pointer is.

EDIT: For example, here’s how Wiremod does the beam on the laser pistol:

function SWEP:ViewModelDrawn()
if self.Weapon:GetNWBool(“Active”) and self.VM then
//Draw the laser beam.
render.SetMaterial( LASER )
render.DrawBeam(self.VM:GetAttachment(self.Attach).Pos, self:GetOwner():GetEyeTrace().HitPos, 2, 0, 12.5, Color(255, 0, 0, 255))

Ahh thank you, i wanted to create sort of a realistic laser pointer, but thank you for your input!