M MY Multiplayer: Wiki
Lado
Tipo

dxDrawSpotLight

Cliente

Ilumina un cono durante un solo fotograma, sin crear un elemento.

bool dxDrawSpotLight(float x, y, z, float dirX, dirY, dirZ, float radius, color color [, float cone = 30, float hardness = 0.5, float intensity = 1, float falloff = 4, float sourceRadius = 0.1, bool castShadow = false])

Parámetros

NombreTipoDescripción
x, y, zfloatPosición de la luz en el mundo, tres números o un vec3.
dirX, dirY, dirZfloatHacia dónde apunta la luz. Tres números o un vec3, finito y no nulo; se normaliza.
radiusfloatAlcance en metros, mayor que 0 y hasta 1000.
colorcolorTres números r, g, b (enteros de 0 a 255) o un valor de tocolor. El alfa se ignora.
conefloatMitad de la apertura del cono, en grados desde su eje, mayor que 0 y hasta 90.por defecto 30
hardnessfloatFracción del cono iluminada por completo, de 0 a 1. Por encima de 0.99 cuenta como 0.99.por defecto 0.5
intensityfloatMultiplicador de brillo, de 0 a 1000. En 1, una luz blanca brilla con una radiancia HDR de 12.por defecto 1
fallofffloatExponente del desvanecimiento hacia el radio, de 0.1 a 32. Valores mayores mantienen la luz fuerte más cerca del borde.por defecto 4
sourceRadiusfloatRadio de la bombilla en metros, de 0 hasta el alcance de la luz. Si se omite, 0.1 o el alcance, lo que sea menor.por defecto 0.1
castShadowboolSi la luz proyecta sombras.por defecto false

Retorno

true si la luz entró en la cola del fotograma. false cuando ya hay 256 luces en la cola, o con un argumento incorrecto.

La luz dura un fotograma. Una llamada hecha antes de dibujar el mundo (por ejemplo en onClientPreRender u onClientRender) ilumina ese fotograma; una hecha después ilumina el siguiente. Las llamadas hechas mientras no corre ningún fotograma se descartan. Pasar de 256 luces en un fotograma registra un aviso una vez, hasta que un fotograma deja sitio en la cola.

Ejemplo

addEventHandler("onClientPreRender", root, function()
    local pos = getElementPosition(localPlayer)
    local a = math.rad(getElementRotation(localPlayer).z)
    dxDrawSpotLight(pos.x, pos.y, pos.z + 0.6, -math.sin(a), math.cos(a), -0.2, 30, 255, 250, 230, 20)
end)
Si vienes de MTAMTA no tiene luces dinámicas.

Ver también