FP can have different FOV for VM, debug spawner has preferred order
This commit is contained in:
parent
a7825e495a
commit
32d7bee0ec
|
@ -9,6 +9,7 @@ local cam_u = CreateConVar( "b-cam_u", 12 )
|
||||||
local cam_fov = CreateConVar( "b-cam_fov", 75 )
|
local cam_fov = CreateConVar( "b-cam_fov", 75 )
|
||||||
|
|
||||||
local cam_fp = CreateConVar( "b-cam_fp", 0 )
|
local cam_fp = CreateConVar( "b-cam_fp", 0 )
|
||||||
|
local cam_fp_fov = CreateConVar( "b-cam_fp_fov", 75 )
|
||||||
local lastfp
|
local lastfp
|
||||||
|
|
||||||
local m = 3
|
local m = 3
|
||||||
|
@ -35,6 +36,43 @@ function CamSpot( ang, pos )
|
||||||
return tr.HitPos
|
return tr.HitPos
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Convert( fovDegrees, ratio )
|
||||||
|
local halfAngleRadians = fovDegrees * ( 0.5 * math.pi / 180 )
|
||||||
|
local t = math.tan( halfAngleRadians )
|
||||||
|
t = t * ratio
|
||||||
|
local retDegrees = ( 180 / math.pi ) * math.atan( t )
|
||||||
|
return retDegrees * 2
|
||||||
|
end
|
||||||
|
|
||||||
|
function QConvert( fovDegrees )
|
||||||
|
return Convert( fovDegrees, (3/4)/(ScrH()/ScrW()) )
|
||||||
|
end
|
||||||
|
|
||||||
|
function GM:PreDrawViewModels()
|
||||||
|
local fp = cam_fp:GetBool()
|
||||||
|
if fp then
|
||||||
|
cam.Start3D( nil, nil, QConvert( cam_fp_fov:GetFloat() ) )
|
||||||
|
cam.IgnoreZ( true )
|
||||||
|
local p = LocalPlayer()
|
||||||
|
p.IWantDraw = true
|
||||||
|
p:DrawModel()
|
||||||
|
local w = p:HandlerCheck()
|
||||||
|
if w:GetActiveR():IsValid() then
|
||||||
|
w:GetActiveR():DrawModel()
|
||||||
|
end
|
||||||
|
p.IWantDraw = false
|
||||||
|
cam.IgnoreZ( false )
|
||||||
|
cam.End3D()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function GM:PrePlayerDraw( ply, flags )
|
||||||
|
local fp = cam_fp:GetBool()
|
||||||
|
if fp and ply == LocalPlayer() and !ply.IWantDraw then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function GM:CalcView( ply, pos, ang, fov )
|
function GM:CalcView( ply, pos, ang, fov )
|
||||||
local view = {
|
local view = {
|
||||||
origin = CamSpot(TPSOverride), -- pos includes the smoothstair offset which looks stupid here
|
origin = CamSpot(TPSOverride), -- pos includes the smoothstair offset which looks stupid here
|
||||||
|
|
|
@ -60,6 +60,7 @@ local function painterly( self, w, h )
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local preferredcategoryorder = { "pistol", "smg", "assaultrifle", "machinegun", "shotgun", "utility" }
|
||||||
|
|
||||||
local function OpenDebugMenu()
|
local function OpenDebugMenu()
|
||||||
if IsValid(DebugMenu) then DebugMenu:Remove() end
|
if IsValid(DebugMenu) then DebugMenu:Remove() end
|
||||||
|
@ -253,6 +254,19 @@ local function OpenDebugMenu()
|
||||||
|
|
||||||
local categories = {}
|
local categories = {}
|
||||||
|
|
||||||
|
-- preferred order
|
||||||
|
for index, category in SortedPairs( preferredcategoryorder ) do
|
||||||
|
if category == "base" then continue end
|
||||||
|
if !categories[category] then
|
||||||
|
local cate = opt:Add("DCollapsibleCategory")
|
||||||
|
cate:Dock(TOP)
|
||||||
|
cate:SetLabel(category)
|
||||||
|
local plist = vgui.Create("DPanelList")
|
||||||
|
cate:SetContents(plist)
|
||||||
|
categories[category] = plist
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for iname, idata in SortedPairs( ITEMS ) do
|
for iname, idata in SortedPairs( ITEMS ) do
|
||||||
if idata.Category == "base" then continue end
|
if idata.Category == "base" then continue end
|
||||||
if !categories[idata.Category] then
|
if !categories[idata.Category] then
|
||||||
|
@ -338,7 +352,7 @@ local function recursebones( ent, O_id, level )
|
||||||
local gap = ""
|
local gap = ""
|
||||||
for i=1, level do gap = gap .. " " end
|
for i=1, level do gap = gap .. " " end
|
||||||
for index, id in ipairs( ent:GetChildBones( O_id ) ) do
|
for index, id in ipairs( ent:GetChildBones( O_id ) ) do
|
||||||
chat.AddText( gap, c_id, tostring(id), c_white, " - ", c_name, ent:GetBoneName(id) )
|
MsgC( gap, c_id, tostring(id), c_white, " - ", c_name, ent:GetBoneName(id) .. "\n" )
|
||||||
recursebones( ent, id, level+1 )
|
recursebones( ent, id, level+1 )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -349,7 +363,7 @@ function printallbones( ent )
|
||||||
for id=0, ent:GetBoneCount()-1 do
|
for id=0, ent:GetBoneCount()-1 do
|
||||||
if ent:GetBoneName(id) == "__INVALIDBONE__" then continue end
|
if ent:GetBoneName(id) == "__INVALIDBONE__" then continue end
|
||||||
if ent:GetBoneParent(id) != -1 then continue end
|
if ent:GetBoneParent(id) != -1 then continue end
|
||||||
chat.AddText( gap, c_id, tostring(id), c_white, " - ", c_name, ent:GetBoneName(id) )
|
MsgC( c_id, tostring(id), c_white, " - ", c_name, ent:GetBoneName(id) .. "\n" )
|
||||||
recursebones( ent, id, 1 )
|
recursebones( ent, id, 1 )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,18 +7,19 @@ local function qpaint( self, w, h )
|
||||||
surface.SetDrawColor( COLOR_MAIN )
|
surface.SetDrawColor( COLOR_MAIN )
|
||||||
surface.DrawOutlinedRect( 1, 1, w-2, h-2, 1 )
|
surface.DrawOutlinedRect( 1, 1, w-2, h-2, 1 )
|
||||||
|
|
||||||
draw.SimpleText( self.text, "HUD_24", w/2, 6, COLOR_MAIN, TEXT_ALIGN_CENTER )
|
draw.SimpleText( self.text, "HUD_36", w/2, 4, COLOR_MAIN, TEXT_ALIGN_CENTER )
|
||||||
end
|
end
|
||||||
|
|
||||||
local settings = {
|
local settings = {
|
||||||
{
|
{
|
||||||
name = "Camera",
|
name = "Camera",
|
||||||
items = {
|
items = {
|
||||||
{ type = TYPE_BOOL, cvar = "b-cam_fp", name = "First-person Mode" },
|
|
||||||
{ type = TYPE_NUMBER, cvar = "b-cam_f", min = -200, max = 200, name = "Camera Forward" },
|
{ type = TYPE_NUMBER, cvar = "b-cam_f", min = -200, max = 200, name = "Camera Forward" },
|
||||||
{ type = TYPE_NUMBER, cvar = "b-cam_r", min = -30, max = 30, name = "Camera Right" },
|
{ type = TYPE_NUMBER, cvar = "b-cam_r", min = -30, max = 30, name = "Camera Right" },
|
||||||
{ type = TYPE_NUMBER, cvar = "b-cam_u", min = -30, max = 30, name = "Camera Up" },
|
{ type = TYPE_NUMBER, cvar = "b-cam_u", min = -30, max = 30, name = "Camera Up" },
|
||||||
{ type = TYPE_NUMBER, cvar = "b-cam_fov", min = 1, max = 140, name = "Camera FOV" },
|
{ type = TYPE_NUMBER, cvar = "b-cam_fov", min = 30, max = 120, name = "Camera FOV" },
|
||||||
|
{ type = TYPE_BOOL, cvar = "b-cam_fp", name = "First-person Mode" },
|
||||||
|
{ type = TYPE_NUMBER, cvar = "b-cam_fp_fov", min = 30, max = 120, name = "FP weapon FOV" },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -111,9 +112,10 @@ local function StartPauseMenu()
|
||||||
if PauseMenu and PauseMenu:IsValid() then PauseMenu:Remove() return end
|
if PauseMenu and PauseMenu:IsValid() then PauseMenu:Remove() return end
|
||||||
|
|
||||||
PauseMenu = vgui.Create("EditablePanel")
|
PauseMenu = vgui.Create("EditablePanel")
|
||||||
PauseMenu:SetSize( 300, 500 )
|
PauseMenu:SetSize( 300, 300 )
|
||||||
PauseMenu:SetPos( 100, ScrH() - 500 - 100 )
|
PauseMenu:SetPos( ScrW()/2 - 300 - 5, ScrH()/2 - 300/2 )
|
||||||
PauseMenu:MakePopup()
|
PauseMenu:MakePopup()
|
||||||
|
PauseMenu:SetKeyboardInputEnabled( true )
|
||||||
|
|
||||||
local p = LocalPlayer()
|
local p = LocalPlayer()
|
||||||
local myteam = p:Team()
|
local myteam = p:Team()
|
||||||
|
@ -145,7 +147,7 @@ local function StartPauseMenu()
|
||||||
button:Dock(TOP)
|
button:Dock(TOP)
|
||||||
button:DockMargin( 0, 0, 0, 10 )
|
button:DockMargin( 0, 0, 0, 10 )
|
||||||
button:SetText( "" )
|
button:SetText( "" )
|
||||||
button:SetTall( 32 )
|
button:SetTall( 40 )
|
||||||
button.text = data.name
|
button.text = data.name
|
||||||
button.Paint = qpaint
|
button.Paint = qpaint
|
||||||
button.DoClick = data.DoClick
|
button.DoClick = data.DoClick
|
||||||
|
|
Loading…
Reference in New Issue