MetaCoreEngineV2/classes/point_marker.py
2026-01-13 17:06:06 +08:00

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()