13/12/2011
por João Pedro
Olá
Eu fiz um esquema simples do tipo DrawSelect, no qual a pessoa pode “desenhar” quadrados, e futuramente se transformar em um esquema de seleção pra bge.
O esquema ainda não é muito util mas pode abrir portas para quem deseja desenterrar algum projeto

import bge
logic = bge.logic
render = bge.render
cont = logic.getCurrentController()
cena = logic.getCurrentScene()
obj = cont.owner
mouse = cont.sensors["mouseAny"]
mouseclick = cont.sensors["mouseClick"]
clickactive = cont.sensors["clickActive"]
mouseSourceX = mouse.raySource[0]
mouseSourceY = mouse.raySource[1]
if mouseclick.positive:
obj["ClickPosX"] = mouseSourceX
obj["ClickPosY"] = mouseSourceY
if clickactive.positive:
render.drawLine([obj["ClickPosX"], obj["ClickPosY"], 0], [mouseSourceX, obj["ClickPosY"], 0], [0, 0, 0.5])
render.drawLine([obj["ClickPosX"], obj["ClickPosY"], 0], [obj["ClickPosX"], mouseSourceY, 0], [0, 0, 0.5])
render.drawLine([obj["ClickPosX"], mouseSourceY, 0], [mouseSourceX, mouseSourceY, 0], [0, 0, 0.2])
render.drawLine([mouseSourceX, obj["ClickPosY"], 0], [mouseSourceX, mouseSourceY, 0], [0, 0, 0.2])
#A partir daqui e feita a programacao do quadrado
quad = cena.objects["quad"]
quad_mesh = quad.meshes[0]
quad_vertex1 = quad_mesh.getVertex(0, 0)
quad_vertex2 = quad_mesh.getVertex(0, 1)
quad_vertex3 = quad_mesh.getVertex(0, 2)
quad_vertex4 = quad_mesh.getVertex(0, 3)
if clickactive.positive:
quad_vertex1.XYZ = (obj["ClickPosX"], mouseSourceY, 0)
quad_vertex2.XYZ = (mouseSourceX, mouseSourceY, 0)
quad_vertex3.XYZ = (mouseSourceX, obj["ClickPosY"], 0)
quad_vertex4.XYZ = (obj["ClickPosX"], obj["ClickPosY"], 0)
quad.visible = True
else:
quad.visible = False
Download
Gostar disso:
Seja o primeiro a gostar disso post.