Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // The following code is licensed under Creative Commons Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0)
- // See: http://creativecommons.org/licenses/by-nc/3.0/
- // Credit MUST be given to Saul Rennison and the CSProMod Team.
- static ConVar cl_player_shadows("cl_player_shadows", "1", FCVAR_CHEAT, "Enable player shadows", true, 0, true, 1);
- ShadowType_t C_BasePlayer::ShadowCastType()
- {
- if(cl_player_shadows.GetBool())
- return SHADOWS_SIMPLE; // blob shadows
- return SHADOWS_NONE;
- }
- bool C_BasePlayer::GetShadowCastDirection(Vector *pDirection, ShadowType_t shadowType ) const
- {
- // Force player shadows to be straight down
- *pDirection = Vector(0, 0, -1);
- return true;
- }
- bool C_BasePlayer::ShouldDraw()
- {
- return BaseClass::ShouldDraw();
- }
- static ConVar cl_legs("cl_legs", "1", FCVAR_CHEAT, "Enable or disable player leg rendering", true, 0, true, 1);
- static ConVar cl_legs_origin_shift("cl_legs_origin_shift", "-16.5", FCVAR_CHEAT, "Amount in game units to shift the player model relative to the direction the player is facing");
- static ConVar cl_legs_clip_height("cl_legs_clip_height", "0", FCVAR_CHEAT, "Amount in game units of the player model to render up to [0 = disable]", true, 0, false, 0);
- const Vector& C_BasePlayer::GetRenderOrigin( void )
- {
- // If we're not observing this player, or if we're not drawing it at the
- // moment then use the normal absolute origin.
- // NOTE: the GetCurrentlyDrawingEntity check is here to make sure the
- // shadow is rendered from the correct origin
- if(!IsInEye() || view->GetCurrentlyDrawingEntity() != this)
- return BaseClass::GetRenderOrigin();
- // Get the forward vector
- static Vector forward; // static because this method returns a reference
- AngleVectors(GetRenderAngles(), &forward);
- // Shift the render origin by a fixed amount
- forward *= cl_legs_origin_shift.GetFloat();
- forward += GetAbsOrigin();
- return forward;
- }
- int C_BasePlayer::DrawModel( int flags )
- {
- // No need for clipping or render origin shifting if we aren't a local
- // player
- if(!IsInEye())
- return BaseClass::DrawModel(flags);
- // If we aren't drawing legs, return
- if(!cl_legs.GetBool())
- return 0;
- CMatRenderContextPtr context(materials);
- // Don't render above a certain height of the body
- if(cl_legs_clip_height.GetInt() > 0)
- {
- context->SetHeightClipMode(MATERIAL_HEIGHTCLIPMODE_RENDER_BELOW_HEIGHT);
- context->SetHeightClipZ(GetAbsOrigin().z+cl_legs_clip_height.GetFloat());
- }
- // Draw the model
- int nDrawRes = BaseClass::DrawModel(flags);
- // Remove height clipping
- context->SetHeightClipMode(MATERIAL_HEIGHTCLIPMODE_DISABLE);
- return nDrawRes;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement