hey, thanks this is the non-working parts of the LINEOFSIGHT3d function, any help would be more than welcome... you will need to replace the enemy with your own model
vd# = 100.0
va# = 90.0
visible2 = LineOfSight3D(enemy\entity,c4,vd,va)
Function LineOfSight3D(observer,target,viewrange#=10.0,viewangle# = 90.0)
Local dist# = EntityDistance(observer,target);
If dist<=viewrange
TFormVector 0,0,1,observer,0
Local ox# = TFormedX()
Local oy# = TFormedY()
Local oz# = TFormedZ()
Local dx# = (EntityX(target,True)-EntityX(observer,True))/dist#
Local dy# = (EntityY(target,True)-EntityY(observer,True))/dist#
Local dz# = (EntityZ(target,True)-EntityZ(observer,True))/dist#
Local dot# = ox*dx + oy*dy + oz*dz
If dot => Cos(viewangle/2.0)
If LinePick(EntityX(observer,True),EntityY(observer,True),EntityZ(observer,True),dx*viewrange,dy*viewrange,dz*viewrange,0.01)=target
Return True
End If
End If
End If
Return False
End Function
here is the enemy
Global enemy.enemy = New enemy
enemy\entity = LoadMD2("MODEL.md2")
ScaleEntity enemy\entity,0.04,0.04,0.04
pogo_tex = LoadTexture("mesh.bmp")
EntityTexture enemy\entity,pogo_tex
PositionEntity enemy\entity,25,6,120
RotateEntity enemy\entity,0,180,0
AnimateMD2 enemy\entity,1,0.1,41,46
EntityRadius enemy\entity,.9
EntityType enemy\entity,ENEMY_TYPE
EntityShininess enemy\entity,1
enemy\x# = 0
enemy\y# = 200
enemy\responce=IDLE
enemy\z# = 50
enemy\state = IDLE
enemy\life# = 100.0
enemy\range# = 50.0
enemy\botty=enemy\entity
enemy\current_waypoint=1
EntityPickMode enemy\entity,1
and here is a target
c4=CreateSphere()
EntityColor c4,128,50,50
PositionEntity c4,2,1,-6
EntityPickMode c4,2
HidePointer
vd# = 100.0
va# = 90.0
visible2 = LineOfSight3D(enemy\entity,c4,vd,va)
Function LineOfSight3D(observer,target,viewrange#=10.0,viewangle# = 90.0)
Local dist# = EntityDistance(observer,target);
If dist<=viewrange
TFormVector 0,0,1,observer,0
Local ox# = TFormedX()
Local oy# = TFormedY()
Local oz# = TFormedZ()
Local dx# = (EntityX(target,True)-EntityX(observer,True))/dist#
Local dy# = (EntityY(target,True)-EntityY(observer,True))/dist#
Local dz# = (EntityZ(target,True)-EntityZ(observer,True))/dist#
Local dot# = ox*dx + oy*dy + oz*dz
If dot => Cos(viewangle/2.0)
If LinePick(EntityX(observer,True),EntityY(observer,True),EntityZ(observer,True),dx*viewrange,dy*viewrange,dz*viewrange,0.01)=target
Return True
End If
End If
End If
Return False
End Function
here is the enemy
Global enemy.enemy = New enemy
enemy\entity = LoadMD2("MODEL.md2")
ScaleEntity enemy\entity,0.04,0.04,0.04
pogo_tex = LoadTexture("mesh.bmp")
EntityTexture enemy\entity,pogo_tex
PositionEntity enemy\entity,25,6,120
RotateEntity enemy\entity,0,180,0
AnimateMD2 enemy\entity,1,0.1,41,46
EntityRadius enemy\entity,.9
EntityType enemy\entity,ENEMY_TYPE
EntityShininess enemy\entity,1
enemy\x# = 0
enemy\y# = 200
enemy\responce=IDLE
enemy\z# = 50
enemy\state = IDLE
enemy\life# = 100.0
enemy\range# = 50.0
enemy\botty=enemy\entity
enemy\current_waypoint=1
EntityPickMode enemy\entity,1
and here is a target
c4=CreateSphere()
EntityColor c4,128,50,50
PositionEntity c4,2,1,-6
EntityPickMode c4,2
HidePointer