37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
import panda3d.core as p3d
|
|
|
|
class PointMarker():
|
|
def __init__(self,default_disable = False):
|
|
self.disable = default_disable
|
|
from direct.showbase import ShowBaseGlobal
|
|
self.base = ShowBaseGlobal.base
|
|
self.marker = ShowBaseGlobal.base.loader.loadModel("models/misc/sphere")
|
|
mat = p3d.Material('unlit')
|
|
mat.base_color = p3d.Vec4(1,1,1,1) * 0.1
|
|
mat.setEmission((1,0,1,1))
|
|
self.marker.setMaterial(mat)
|
|
self.marker.reparentTo(ShowBaseGlobal.base.render)
|
|
self.marker.hide()
|
|
|
|
def set_disable(self,state:bool):
|
|
self.disable = state
|
|
if not state:
|
|
self.marker.hide()
|
|
|
|
def update_point(self,point:p3d.LPoint3f):
|
|
if self.disable:
|
|
return
|
|
|
|
self.marker.show()
|
|
self.marker.setPos(point)
|
|
scale_factor = p3d.LPoint3f(self.base.cam.getPos() - point).length()
|
|
self.marker.setScale(scale_factor * 0.02)
|
|
|
|
def show(self):
|
|
if self.disable:
|
|
return
|
|
|
|
self.marker.show()
|
|
|
|
def hide(self):
|
|
self.marker.hide() |