KX_ReplaceMeshActuator
Classe base: SCA_IActuator
Atuador Edit Object, no modo Replace Mesh.
# Nível de detalhe# Troca a malha de um game object conforme a profundidade dele na vista da câmera.# +----------+ +-----------+ +-------------------------------------+# | Always +-----+ Python +-----+ Edit Object (Replace Mesh) LOD.Mesh |# +----------+ +-----------+ +-------------------------------------+from Range import logic
# Liste aqui as malhas de detalhe# Malha (nome, perto, longe)# As malhas se sobrepõem para não "pipocar" na borda da distância.meshes = ((".Hi", 0.0, -20.0), (".Med", -15.0, -50.0), (".Lo", -40.0, -100.0) )
cont = logic.getCurrentController()object = cont.owneractuator = cont.actuators["LOD." + obj.name]camera = logic.getCurrentScene().active_camera
def Depth(pos, plane): return pos[0]*plane[0] + pos[1]*plane[1] + pos[2]*plane[2] + plane[3]
# A profundidade é negativa e diminui conforme se afasta da câmeradepth = Depth(object.position, camera.world_to_camera[2])
newmesh = Nonecurmesh = None# Acha a malha de menor detalhe para a profundidadefor mesh in meshes: if depth < mesh[1] and depth > mesh[2]: newmesh = mesh if "ME" + object.name + mesh[0] == actuator.getMesh(): curmesh = mesh
if newmesh != None and "ME" + object.name + newmesh[0] != actuator.mesh: # A malha é diferente - troca. # Confere se a malha atual não serve melhor. if curmesh == None or curmesh[1] < depth or curmesh[2] > depth: actuator.mesh = object.name + newmesh[0] cont.activate(actuator)MeshProxy ou o nome da malha que vai substituir a atual.
Use None para desligar o atuador.
Tipo: MeshProxy or None if no mesh is set
useDisplayMesh
Seção intitulada “useDisplayMesh”com true, a malha exibida é substituída.
Tipo: boolean
usePhysicsMesh
Seção intitulada “usePhysicsMesh”com true, a malha de física é substituída.
Tipo: boolean
instantReplaceMesh()
Seção intitulada “instantReplaceMesh()”Substitui a malha na hora, sem atraso.
