mport BigWorld, Keys, Math
from gui.WindowsManager import g_windowsManager
import Vehicle
import os
from AvatarInputHandler.control_modes import SniperControlMode
from debug_utils import *
UPDATE_INTERVAL = 0.1
currTime = None
enableRenderModel = True
distancevalue = 300
togglekey = 'KEY_NUMPAD1'
sniperonly = False
color = Math.Vector4(0.5, 0.2, 0.2, 0.5)
enemyhigh = Math.Vector4(1, 0, 0, 0.9)
allyhigh = Math.Vector4(0, 1, 0, 0.5)
KEY_RENDER_MODEL = getattr(Keys, togglekey)
def silouhette():
global enableRenderModel
global currTime
if enableRenderModel:
BigWorld.wgSetEdgeDetectColors((color, enemyhigh, allyhigh))
player = BigWorld.player()
if player is not None:
if hasattr(player, 'isOnArena'):
curCtrl = getattr(getattr(BigWorld.player(), 'inputHandler', None), 'ctrl', None)
if player.isOnArena:
for v in BigWorld.entities.values():
if type(v) is Vehicle.Vehicle:
if v.isAlive():
if v.publicInfo['team'] is not BigWorld.player().team:
target = BigWorld.target()
distance = (BigWorld.entity(BigWorld.player().playerVehicleID).position - BigWorld.entity(v.id).position).length
if target is not None and target.id == v.id:
BigWorld.wgDelEdgeDetectEntity(v)
BigWorld.wgAddEdgeDetectEntity(v, 2)
elif int(v.id) != int(BigWorld.player().playerVehicleID) and distance <= distancevalue or sniperonly == True and not isinstance(curCtrl, SniperControlMode):
BigWorld.wgDelEdgeDetectEntity(v)
elif int(v.id) == int(BigWorld.player().playerVehicleID):
continue
else:
BigWorld.wgDelEdgeDetectEntity(v)
BigWorld.wgAddEdgeDetectEntity(v, 0)
else:
BigWorld.wgDelEdgeDetectEntity(v)
if currTime is None or currTime + 1 < BigWorld.time():
if BigWorld.isKeyDown(KEY_RENDER_MODEL):
currTime = BigWorld.time()
if enableRenderModel:
if g_windowsManager.battleWindow is not None:
g_windowsManager.battleWindow.call('battle.PlayerMessagesPanel.ShowMessage', ['0', 'Enemy Outlines OFF', 'gold'])
enableRenderModel = False
for v in BigWorld.entities.values():
if type(v) is Vehicle.Vehicle:
BigWorld.wgDelEdgeDetectEntity(v)
elif g_windowsManager.battleWindow is not None:
enableRenderModel = True
g_windowsManager.battleWindow.call('battle.PlayerMessagesPanel.ShowMessage', ['0', 'Enemy Outlines ON', 'green'])
BigWorld.callback(0.1, silouhette)
return
silouhette()