dot 3 lighting

Blitz3D Forums/Blitz3D Programming/dot 3 lighting

Function entityLight(entity,light,inten#=0.5,hull=False)
ox#=EntityX(light)
oy#=EntityY(light)
oz#=EntityZ(light)
inten =0.5
;If Not hull inten=1.-inten
tp=CreatePivot()
PositionEntity tp,EntityX(light),EntityY(light),EntityZ(light)
TFormPoint ox,oy,oz,tp,entity
;FreeEntity tp
light=tp

PositionEntity light,TFormedX(),TFormedY(),TFormedZ() ;Transpose light into 
dx# =(EntityX(light)-EntityX( entity));*inten
dy# =(EntityY(light)-EntityY( entity));*inten
dz# =(EntityZ(light)-EntityZ( entity));*inten

nl#=Sqr(dx*dx+dy*dy+dz*dz)
nx#=dx/nl
ny#=dy/nl
nz#=dz/nl
nl#=(nl*10.-255.)/255.

nl=1.-nl

If nl>1. nl=1
If nl<0. nl=0
nl=in

nx=nx;*inten
ny=ny;*inten
nz=nz;*inten

;nz=(Sgn(nz))+nz
;nx=(Sgn(nx))+nx
;ny=(Sgn(ny))+ny

;If nx<0 nx


FreeEntity tp
EntityColor entity,128.+(128.*nx),128.+(128.*nz),128.+(128.*ny)


;EntityColor entity,256+(256*nx),256.0+(256*ny),256.0+(256*nt)

;PositionEntity light,ox,oy,oz ;return light.
End Function
 


ripped it from some old code of mine..could do with cleaning up a little, but it worked fine for me. Light = light pivot, entity =entity to light, inten =light strength, hull=internal or exteneral.