"""Lines"""
from . import client
import warnings
from . import utils
from vbl_aquarium.models.urchin import LineModel
from vbl_aquarium.models.generic import IDData
counter = 0
lines = []
def clear():
"""Clear all custom meshes
"""
client.sio.emit('Clear','lines')
[docs]
class Line:
def __init__(self, positions= [[0.0,0.0,0.0]], color= [1, 1, 1]):
global counter
counter += 1
self.data = LineModel(
id = f'l{counter}',
positions = positions,
color=utils.formatted_color(color)
)
self._update()
self.in_unity = True
lines.append(line)
def _update(self):
client.sio.emit('urchin-line-update', self.data.to_json_string())
[docs]
def delete(self):
"""Deletes lines
Examples
>>>l1.delete()
"""
client.sio.emit('urchin-line-delete', IDData(id=self.data.id).to_json_string())
self.in_unity = False
[docs]
def set_positions(self, positions):
"""Set the positions of line renderer
Parameters
----------
position : list of vector3 [[ap,ml,dv],[ap,ml,dv]]
vertex positions of the line in the ReferenceAtlas space (um)
Examples
--------
>>>l1.set_position([[0, 0, 0],[13200,11400,8000]])
"""
if self.in_unity == False:
raise Exception("Line does not exist in Unity, call create method first.")
for i, vec3 in enumerate(positions):
positions[i] = utils.formatted_vector3(utils.sanitize_vector3(vec3))
self.data.positions = positions
self._update()
[docs]
def set_color(self, color):
"""Set the color of line renderer
Parameters
----------
color : string hex color
new color of the line
Examples
--------
>>>l1.set_color('#000000')
"""
if self.in_unity == False:
raise Exception("Line does not exist in Unity, call create method first.")
self.data.color = utils.formatted_color(utils.sanitize_color(color))
self._update()
[docs]
def create (n):
"""Create Line objects
Parameters
----------
n : int
Number of objects to create
"""
lines_list = []
for i in range(n):
line = Line()
lines_list.append(line)
return lines_list
[docs]
def delete (lines_list):
"""Deletes lines
Parameters
----------
lines_list : list of Line objects
list of lines to be deleted
Examples
--------
>>> lines.delete()
"""
for line in lines_list:
line.delete()
[docs]
def clear():
"""Clear all Line objects that have been created
"""
global line
for line in lines:
line.delete()
lines = []