Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 63 additions & 2 deletions Classes/AerialController.uc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,59 @@ class AerialController extends xPlayer;
//Behindview stuff:
var CrosshairEmitter AerialCrosshair;
var ConstantColor Transparency;
var bool bRememberBehindView;

// Add replication block
replication
{
reliable if(Role == ROLE_Authority)
bRememberBehindView;
}

// Track user preference whenever they manually change camera
exec function BehindView(bool B)
{
Super.BehindView(B);
if(Vehicle(Pawn) == None)
bRememberBehindView = B;
}

// Capture camera state when pawn dies
function PawnDied(Pawn P)
{
if(P != None && Vehicle(P) == None)
bRememberBehindView = bBehindView;

Super.PawnDied(P);
}

// Override ClientRestart
function ClientRestart(Pawn NewPawn)
{
// Save state before entering vehicle
if(NewPawn != None && Vehicle(NewPawn) != None && Pawn != None)
{
bRememberBehindView = bBehindView;

// Clean up aerial crosshair when entering vehicle
if(AerialCrosshair != None)
{
AerialCrosshair.Destroy();
AerialCrosshair = None;
}
if(myHUD != None)
myHUD.bCrosshairShow = myHUD.Default.bCrosshairShow;
}

Super.ClientRestart(NewPawn);

// Restore camera after Super call completes
if(Vehicle(NewPawn) == None && bRememberBehindView)
{
bBehindView = true;
BehindView(true);
}
}

function ChangedWeapon()
{
Expand All @@ -21,8 +74,8 @@ function UpdateCrosshairs()
if(Level.GetLocalPlayerController() != self)
return;

//Spawn a special crosshair.
if(bBehindView && AerialCrosshair == None && Pawn != None && !Pawn.IsA('Vehicle'))
//Spawn a special crosshair (when not in a vehicle).
if(bBehindView && AerialCrosshair == None && Pawn != None && Vehicle(Pawn) == None)
AerialCrosshair = Spawn(class'CrosshairEmitter', self);

//Don't show normal crosshair if a special crosshair exists.
Expand All @@ -41,6 +94,14 @@ event PlayerCalcView(out actor ViewActor, out vector CameraLocation, out rotator
local float Distance;

Super.PlayerCalcView(ViewActor, CameraLocation, CameraRotation);

// Do not reposition camera when using ToggleBehindView as a free-floating spectator camera
if(Pawn == None && (ViewTarget == None || ViewTarget == self))
return;

// Let vehicles use their standard camera system
if(Vehicle(Pawn) != None)
return;

if(bBehindView)
{
Expand Down
24 changes: 22 additions & 2 deletions Classes/CrosshairEmitter.uc
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,34 @@ function SetNormalCrosshair()
//Use standard crosshair settings.
function SetStandardCrosshair()
{
local int CrosshairIndex;
local Material CrosshairMat;

Emitters[0].UseSizeScale = false;
Emitters[0].FadeIn = false;

CurrentCrosshairColor = C.myhud.CrossHairColor;
CurrentCrosshairScale = C.myhud.CrosshairScale;

if(C.Pawn != None && C.Pawn.Weapon != None)
CurrentCrosshairTexture = C.Pawn.Weapon.CustomCrosshairTexture;
// Get the user's selected crosshair
if(HudBase(C.myhud) != None)
{
CrosshairIndex = HudBase(C.myhud).CrosshairStyle;
if(CrosshairIndex >= 0 && CrosshairIndex < HudBase(C.myhud).Crosshairs.Length)
{
CrosshairMat = HudBase(C.myhud).Crosshairs[CrosshairIndex].WidgetTexture;
// Convert Material to Texture
CurrentCrosshairTexture = Texture(CrosshairMat);

// Fallback if conversion fails
if(CurrentCrosshairTexture == None)
CurrentCrosshairTexture = Texture'Crosshairs.HUD.Crosshair_Triad1';
}
else
CurrentCrosshairTexture = Texture'Crosshairs.HUD.Crosshair_Triad1';
}
else
CurrentCrosshairTexture = Texture'Crosshairs.HUD.Crosshair_Triad1';
}

//Use per-weapon custom crosshairs
Expand Down
2 changes: 2 additions & 0 deletions Classes/MutUTComp.uc
Original file line number Diff line number Diff line change
Expand Up @@ -1670,6 +1670,7 @@ static function FillPlayInfo (PlayInfo PlayInfo)
PlayInfo.AddSetting("UTComp Settings", "MaxMultiDodges", "Number of additional dodges",255, weight, "Text","2;0:99",);
PlayInfo.AddSetting("UTComp Settings", "SuicideInterval", "Minimum time between two suicides", security, weight, "Text", "0;0:1800",, False, False);
PlayInfo.AddSetting("UTComp Settings", "bDisableCameraShake", "Disable Camera Shake", security, weight, "Check");
PlayInfo.AddSetting("UTComp Settings", "bShowTeamScoresInServerBrowser", "Show team scores in server browser", security, weight, "Check");

weight++;
PlayInfo.AddSetting("UTComp Settings", "bShowSpawnsDuringWarmup", "Show Spawns during Warmup", security, weight,"Check");
Expand Down Expand Up @@ -1768,6 +1769,7 @@ static event string GetDescriptionText(string PropName)
case "TeamRadarCullDistance": return "Cull distance of team radar";
case "bAllowTeamRadarMap": return "Allow players to use minimap team radar";
case "bDisableCameraShake": return "Disable camera shake effects";
case "bShowTeamScoresInServerBrowser": return "Check this to show team scores in the server browser";

case "NewNetUpdateFrequency": return "NewNet Update Frequency (200)";
case "PingTweenTime": return "NewNet Ping Tween Time (3.0)";
Expand Down