Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Control
- export(Texture) var mira1
- var global
- var viewPort
- var enemyNode
- var visibles = []
- var verts = Array()
- var uvs = Array()
- var colors = [Color(1.0,1.0,1.0,1.0),Color(1.0,1.0,1.0,1.0),Color(1.0,1.0,1.0,1.0),Color(1.0,1.0,1.0,1.0)]
- var angle = 0
- var RAD = 210*PI/180
- var PIH = PI/2
- func _process(delta):
- var cam = global.current_camera
- if cam==null:
- return
- #print(cam.unproject_position( Vector3(0,0,0) ))
- var oudVSize = visibles.size()
- visibles.clear()
- var cOri = cam.get_global_transform().origin #basis.xform( Vector3(0,0,1) )
- var cBas = cam.get_global_transform().basis.xform( Vector3(0,0,1) )
- var rv = viewPort.get_rect()
- for enemy in enemyNode.get_children():
- var pos = cam.unproject_position( enemy.get_global_transform().origin )
- if pos.x>=0 and pos.x<rv.size.width:
- if pos.y>=0 and pos.y<rv.size.height:
- var eP = enemy.get_global_transform().origin - cOri
- if cBas.dot( eP.normalized() )<0:
- visibles.push_back(pos)
- if visibles.size()>0 or visibles.size() != oudVSize:
- angle += RAD*delta
- if angle>PI:
- angle = -PI + angle-PI
- update()
- func _draw():
- var d = Vector2(0,1).rotated(angle)
- var v
- uvs[0] = Vector2(0.5,0.5) + Vector2(0.5,0).rotated(angle)
- uvs[1] = Vector2(0.5,0.5) + Vector2(0.5,0).rotated(angle+PIH)
- uvs[2] = Vector2(0.5,0.5) + Vector2(0.5,0).rotated(angle+PI)
- uvs[3] = Vector2(0.5,0.5) + Vector2(0.5,0).rotated(angle-PIH)
- if visibles.size()>0:
- for p in visibles:
- verts[0] = p + Vector2(-32,-32)
- verts[1] = p + Vector2( 32,-32)
- verts[2] = p + Vector2( 32, 32)
- verts[3] = p + Vector2(-32, 32)
- #draw_set_transform(p, angle, Vector2(1,1))
- #draw_texture( mira1, Vector2(-32,-32) )
- #draw_colored_polygon( verts, Color(1.0,1.0,1.0,1.0), uvs, mira1 )
- draw_primitive( verts, colors, uvs, mira1 )
- func _ready():
- global = get_node("/root/Persistente")
- viewPort = get_viewport()
- enemyNode = get_node("/root").get_child( get_node("/root").get_child_count() -1 ).get_node("inimigos")
- # se objeto inimigos estiver vazio monta um fake
- if enemyNode==null:
- enemyNode = Node.new()
- # desenha retangulo
- verts.push_back( Vector2(-32,-32) )
- verts.push_back( Vector2(32,-32) )
- verts.push_back( Vector2(32,32) )
- verts.push_back( Vector2(-32,32) )
- uvs.push_back( Vector2(0,0) )
- uvs.push_back( Vector2(1,0) )
- uvs.push_back( Vector2(1,1) )
- uvs.push_back( Vector2(0,1) )
- #print(viewPort.get_global_canvas_transform())
- set_process(true)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement