Bug from v469 closed betatester forum:
[win][08Aug2020][Regression]UT stop render CoopTranslocator tiles after some time
Reproduce:
1. Start UT.
2. Enter to BarbieWorld MH server (81.169.240.101:7777) when exists another players.
3. Respawn, switch to CoopTranslocator (press 1).
4. Activate it by fire button.
5. Now you must see other players tiles.
6. Watch and wait.
Expected result: Tiles visible all time. When you press fire, selection red border switch between players (if tiles > 2 of course).
Actual result: After some time (usually near minute) all tiles disappear. When you press fire, nothing changes expect selection sound. Only one fix - reconnect to server. All other not help. Reconnect help temporary.
v436: not bugged.
v469: bugged.
I use D3D9 Render. In both UT (v436 and v469).
No any log messages in game log window. Tiles just stop draw.
I try reproduce this without Barbie server with CoopTranslocator2 mutator, but fail.
IDK where is problem reason.
-------
Tiles disappear after announcer message with random reward message.
------
Code from BarbieWorld.u for render tiles:
Code: Select all
simulated function PostRender(Canvas C) {
local Actor actor;
local Pawn tp;
local Pawn player[32];
local int i, j, cnt, tiles, tileX, tileY, x, y, size;
local string label;
if (!bTTargetOut) {
if (true) { // draw texture for distinguish CoopTranslocator from usual translocator
y = c.ClipY/8;
C.Style = ERenderStyle.STY_Translucent;
C.SetPos(c.ClipX/16, c.ClipY - y);
C.DrawRect(Texture'UnrealShare.MenuBarrier', C.ClipX*3/8, y);
}
return;
}
if (FirstFont == None) FirstFont = class'FontInfo'.Static.GetStaticSmallFont(C.ClipX);
if (FirstFont != C.Font) C.Font = FirstFont;
C.Style = ERenderStyle.STY_Normal;
cnt = 0;
ForEach AllActors(TargetPawnClass, actor) {
if (!canBeTarget(Pawn(actor))) continue;
player[cnt++] = Pawn(actor);
}
tiles = 2;
if (cnt > 3) tiles = 3;
if (cnt > 8) tiles = 4;
tileX = c.ClipX/tiles;
tileY = c.ClipY/tiles;
for (i = 0; i < cnt; i++) {
if (player[i].PlayerReplicationInfo == TargetPRI) {
if (i > 15) {
tp = player[15];
player[15] = player[i];
player[i] = tp;
i = 15;
}
j = i;
break;
}
}
for (i = 0; i < cnt; i++) {
if (i <= 15) {
x = ((i + 1) % tiles)*tileX;
y = ((i + 1)/tiles)*tileY;
C.DrawPortal(x, y, tileX, tileY, player[i], player[i].Location - 100*(vect(1,0,0) >> player[i].Rotation), player[i].Rotation);
if (j == i) { // selection
size = 5;
C.DrawColor.R = 255; C.DrawColor.G = 0; C.DrawColor.B = 0;
C.SetPos(x, y + 20);
C.DrawRect(Texture'Botpack.AmmoCountJunk', TileX, size);
C.SetPos(x, y + TileY - size);
C.DrawRect(Texture'Botpack.AmmoCountJunk', TileX, size);
C.SetPos(x, y + 20);
C.DrawRect(Texture'Botpack.AmmoCountJunk', size, TileY - 20 - size);
C.SetPos(x + TileX - size, y + 20);
C.DrawRect(Texture'Botpack.AmmoCountJunk', size, TileY - 20 - size);
}
C.SetPos(x, y);
C.DrawColor.R = 0; C.DrawColor.G = 0; C.DrawColor.B = 0;
C.DrawRect(Texture'Botpack.AmmoCountJunk', TileX, 20);
C.SetPos(x, y);
C.DrawColor.R = 255; C.DrawColor.G = 255; C.DrawColor.B = 0;
label = " " $ player[i].PlayerReplicationInfo.PlayerName $ " (" $
int(player[i].PlayerReplicationInfo.Score) $ ") " $ player[i].Health $ "hp";
if (player[i].Weapon != None) label = label @ player[i].Weapon.class.name;
C.DrawText(label);
}
}
}
------
Also even if tiles disappear I can select cooptrans and see green texture around it.
So code in
if (!bTTargetOut) {
run properly.
----
Anth found cause. And fix it for next build of v469.