• Bonemerging thirdperson issues for entities
    4 replies, posted
After merging a entity's model with an NPC to give it the appearance of the entity's model, I ran into an issue with the old model. If I'm in thirdperson, the old model appears no matter what. Now, if you're blending models on players and have this same issue, it can be fixed by calling SetBlend in both GM.PrePlayerDraw and GM.PostPlayerDraw. For entities, however, I'm not sure how to achieve this. [code]function ENT:Initialize() self:SetSolid(SOLID_NONE) self:SetMoveType(MOVETYPE_NONE) self:AddEffects(EF_BONEMERGE) local pPlayer = self:GetOwner() if pPlayer:IsValid() then self:SetRenderMode(pPlayer:GetRenderMode()) pPlayer:SetRenderMode(RENDERMODE_NONE) end end if CLIENT then local SetBlend = render.SetBlend function ENT:Draw() local owner = self:GetOwner() if IsValid(owner) and (owner:Health() > 0) then local col = owner.OldColor or owner:GetColor() self:SetColor(col) owner:RemoveAllDecals() if owner:GetRenderMode() ~= RENDERMODE_NONE then owner:SetRenderMode(RENDERMODE_NONE) end SetBlend(0.5) --if not MySelf:InThirdPerson() then self:DrawModel() --end SetBlend(1) end end end[/code]
Bump. Am I the only person who's run into this issue?
The issue is that child entities only draw when the parent does. You need to manually draw the entity, so it would go something like: [code]function ENT:Initialize( ) self:AddEffects( EF_BONEMERGE + EF_NODRAW ) ... if CLIENT then hook.Add( "PreDrawPlayer", self, self.PreDrawPlayer ) end end function ENT:PreDrawPlayer( pl ) pl:SetRenderMode( RENDERMODE_NONE ) self:Draw( ) end[/code] Not tested, but you get the idea.
Yes, I understand the concept of how PreDrawing players works, but I'm talking about doing this on npc_zombie. Edit: Maybe if you avatar stopped shaking his head for two seconds he could have read it properl- nevermind.
Jumped the gun when I read the post and got to the PreDrawPlayer stuff. The real issue is still that you need to control the drawing since this is expected engine behavior. Maybe something more along the lines of [code]function ENT:PreDrawTranslucentRenderables( ) self:Draw( ) end[/code] in place of PreDrawPlayer would work. Might need to SetNoDraw on the parented npc as well when you stick the entity on it.
Sorry, you need to Log In to post a reply to this thread.