Я пытаюсь сделать "эдитор" для ursina engine. Когда я начал делать стрелки scale мне понадобился класс Draggable, вот код который я написал:
class DragCube(Draggable):
def __init__(self, scene, Color=color.green, Visible=True, Scale=(1, 0.25, 0.25),
Position=Vec3(0, 0, 0), Collider='box', Lock=(1, 0, 0)):
super().__init__(
color = Color,
visible = Visible,
model = 'cube',
parent = scene,
scale = Scale,
position = Position,
lock = Lock
)
class scaleRows():
def __init__(self, scene):
self.rows = []
self.scene = scene
def calculate_scale(self):
scale = ()
for i in rannge(3):
position = self.entity.position[i]
scale = self.entity.scale[i]
scaleCenter = scale / 2
offset = position + scaleCenter
row = self.rows[i]
rowPosition = row.position[i]
scalePlus = rowPosition - offset
scale.append(scalePlus)
return scale
def update(self):
if self.rows == []:
rowX = DragCube(self.scene, Position = self.entity.position + Vec3(1, 0, 0),
Lock = (0, 1, 0), Scale=(1, 0.25, 0.25))
self.rows.append(rowX)
rowY = DragCube(self.scene, Position = self.entity.position + Vec3(0, 1, 0),
Lock = (1, 0, 0), Scale=(0.25, 1, 0.25))
self.rows.append(rowY)
rowZ = DragCube(self.scene, Position = self.entity.position + Vec3(0, 0, 1),
Lock = (0, 0, 0), Scale=(0.25, 0.25, 1))
self.rows.append(rowZ)
класс scaleRows - скрипт, но когда я начил делать стрелку по направлению z, я столкнулся с проблемой: параметр Lock реагирует только на первые два значения, как я понял, класс Draggable можно использовать только в 2d.
Есть ли какие-то альтернативы но в 3d? Возможно уже есть редакторы 3д объектов в сети?
Буду рад вашим ответам!