I found out that if you override the Tick() function from GameInfo, even if you call back the superclass function, most logs will not be shown.
But now, the problem is another similar one, I'm using screen logs (BroadcastMessages). I placed them into a function:
Spoiler
Code: Select all
function Link()
{
local GRInterpolationPoint GRIP;
local int HighestPos;
if (!bInitialized)
{
HighestPos = -1;
Level.Game.BroadcastMessage("<GRInterpolationPoint> [Link] - Self:"@Self);
bFlipFlop = RacePractice(Level.Game).bFlipFlop;
foreach AllActors(class'GRInterpolationPoint', GRIP)
{
if ((GRIP != Self) && (GRIP.Position > HighestPos))
HighestPos = GRIP.Position;
Level.Game.BroadcastMessage("<GRInterpolationPoint> [Link] - SELF:"$Self@"OTHER_GRIP:"$GRIP@"OTHER_GRIP.Position:"$GRIP.Position); //Always on pos 0.
}
Level.Game.BroadcastMessage("<GRInterpolationPoint> [Link] - The function is continuing"); //This doesn't always appear.
Level.Game.BroadcastMessage("<GRInterpolationPoint> [Link] - HighestPosition:"@HighestPos);
if (HighestPos != -1)
{
//This is NOT the first GRIP.
foreach AllActors(class'GRInterpolationPoint', GRIP)
{
Level.Game.BroadcastMessage((GRIP != Self)@(GRIP.Position == HighestPos)@(GRIP.Owner == Owner)@(GRIP.bFlipFlop == RacePractice(Level.Game).bFlipFlop));
if ((GRIP != Self) && (GRIP.Position == HighestPos) && (GRIP.Owner == Owner) && (GRIP.bFlipFlop == RacePractice(Level.Game).bFlipFlop))
{
Position = (GRIP.Position + 1);
Level.Game.BroadcastMessage("<GRInterpolationPoint> [Link] - Position:"@Position);
Prev = GRIP;
Level.Game.BroadcastMessage("<GRInterpolationPoint> [Link] - Prev:"@Prev);
GRIP.Next = Self;
}
}
}
}
}
Now, If I get this message to work "Level.Game.BroadcastMessage("<GRInterpolationPoint> [Link] - Self:"@Self);", I will get this other message to work too "Level.Game.BroadcastMessage("<GRInterpolationPoint> [Link] - The function is continuing");".
But it doesn't happen. I only get the first message to work and the second one gets lazy.
Another proof of this weird behaviour is the function that spawns the above class. Indeed, I put some logs over there too:
Spoiler
Code: Select all
function SpawnGRIP(float PrevDistFrames)
{
local GRInterpolationPoint GRIP;
Level.Game.BroadcastMessage("<RacerThread> [SpawnGRIP] - SPAWNING");
GRIP = Spawn(class'GRInterpolationPoint', racer);
if (GRIP != None)
{
Level.Game.BroadcastMessage("<RacerThread> [SpawnGRIP] - SPAWNED:"@GRIP);
Level.Game.BroadcastMessage("<RacerThread> [SpawnGRIP] - GRIP.Prev:"@GRIP.Prev);
//GRIP.calcDistSeconds(PrevDistFrames);
// The rate of an InterpolationPoint is made of frames.
if (GRIP.Prev != None)
{
Level.Game.BroadcastMessage("<RacerThread> [SpawnGRIP] - NOT DESTROYING:"@GRIP);
GRIP.Prev.RateModifier = PrevDistFrames / 100;
GRIP.setLocation(racer.Location);
GRIP.setRotation(racer.Rotation);
}
else
{
if (GRIP.Position != 0)
{
Level.Game.BroadcastMessage("<RacerThread> [SpawnGRIP] - DESTROYING:"@GRIP);
GRIP.Destroy();
}
}
}
else
{
Level.Game.BroadcastMessage("<RacerThread> [SpawnGRIP] - GRIP is None");
}
Level.Game.BroadcastMessage("<RacerThread> [SpawnGRIP] - Function end");
}
Here's a screenshoot: