def GenGeometry(self): """ Generates the geometry for the scaling tool. """ scalingGeo = dungeonEditorToolGeometry.geometry(self.primitiveScene) wBox = dungeonEditorToolGeometry.area('w', dungeonEditorToolGeometry.CYAN) wBox.AddToSolidSet(dungeonEditorToolGeometry.CUBE_TRIS) xBox = dungeonEditorToolGeometry.area('x', dungeonEditorToolGeometry.RED) transform = geo2.MatrixTranslation(1.0, 0.0, 0.0) x_tris = geo2.Vec3TransformCoordArray( dungeonEditorToolGeometry.CUBE_TRIS, transform) xBox.AddToSolidSet(x_tris) xBox.AddToLineSet(((0.0, 0.0, 0.0), (1.0, 0.0, 0.0))) transform = geo2.MatrixTranslation(0.0, 1.0, 0.0) y_tris = geo2.Vec3TransformCoordArray( dungeonEditorToolGeometry.CUBE_TRIS, transform) yBox = dungeonEditorToolGeometry.area('y', dungeonEditorToolGeometry.GREEN) yBox.AddToSolidSet(y_tris) yBox.AddToLineSet(((0.0, 0.0, 0.0), (0.0, 1.0, 0.0))) transform = geo2.MatrixTranslation(0.0, 0.0, 1.0) z_tris = geo2.Vec3TransformCoordArray( dungeonEditorToolGeometry.CUBE_TRIS, transform) zBox = dungeonEditorToolGeometry.area('z', dungeonEditorToolGeometry.BLUE) zBox.AddToSolidSet(z_tris) zBox.AddToLineSet(((0.0, 0.0, 0.0), (0.0, 0.0, 1.0))) scalingGeo.AppendArea(xBox) scalingGeo.AppendArea(yBox) scalingGeo.AppendArea(zBox) scalingGeo.AppendArea(wBox) return scalingGeo
def GenGeometry(self): """ Generates the geometry for the rotation tool. """ xCircleAreas = [] yCircleAreas = [] zCircleAreas = [] if not trinity.IsRightHanded(): effectPath = 'res:/Graphics/Effect/Managed/Utility/LinesRotationToolLH.fx' else: effectPath = 'res:/Graphics/Effect/Managed/Utility/LinesRotationTool.fx' unit_circle = dungeonEditorToolGeometry.GenCirclePoints(1.0, 60) mat = geo2.MatrixRotationY(math.pi / 2) x_circle = geo2.Vec3TransformCoordArray(unit_circle, mat) xRotationHandleCircle = dungeonEditorToolGeometry.area( 'x', dungeonEditorToolGeometry.RED) xRotationHandleCircle.AddToLineSet(x_circle, True) xRotationHandleCircle._lineset.effect.effectFilePath = effectPath mat = geo2.MatrixRotationX(math.pi / 2) y_circle = geo2.Vec3TransformCoordArray(unit_circle, mat) yRotationHandleCircle = dungeonEditorToolGeometry.area( 'y', dungeonEditorToolGeometry.GREEN) yRotationHandleCircle.AddToLineSet(y_circle, True) yRotationHandleCircle._lineset.effect.effectFilePath = effectPath zRotationHandleCircle = dungeonEditorToolGeometry.area( 'z', dungeonEditorToolGeometry.BLUE) zRotationHandleCircle.AddToLineSet(unit_circle, True) zRotationHandleCircle._lineset.effect.effectFilePath = effectPath w_circle = dungeonEditorToolGeometry.GenCirclePoints(1.2, 60) wArea = dungeonEditorToolGeometry.area('w', dungeonEditorToolGeometry.CYAN) wArea.AddToLineSet(w_circle, True) wArea._lineset.viewOriented = True wwArea = dungeonEditorToolGeometry.area( 'ww', dungeonEditorToolGeometry.LIGHT_GRAY) wwArea.AddToLineSet(dungeonEditorToolGeometry.GenCirclePoints(1.0, 60)) wwArea._lineset.viewOriented = True picking_tris = dungeonEditorToolGeometry.GenCircleTriangles(1.0, 60) if not trinity.IsRightHanded(): picking_tris.reverse() wwArea.AddToPickingSet(picking_tris) rotationGeo = dungeonEditorToolGeometry.geometry(self.primitiveScene) rotationGeo.AppendArea(xRotationHandleCircle) rotationGeo.AppendArea(yRotationHandleCircle) rotationGeo.AppendArea(zRotationHandleCircle) rotationGeo.AppendArea(wArea) rotationGeo.AppendArea(wwArea) return rotationGeo
def Cull(self, areas): pos = geo2.Vector(self.frontPlaneTranslation[3][0], self.frontPlaneTranslation[3][1], self.frontPlaneTranslation[3][2]) viewMat = trinity.GetViewTransform() lookat = geo2.Vector(-viewMat[0][2], -viewMat[1][2], -viewMat[2][2]) x_area = dungeonEditorToolGeometry.area('x', 4294771202L) y_area = dungeonEditorToolGeometry.area('y', 4278385922L) z_area = dungeonEditorToolGeometry.area('z', 4278321917L) x_lines = [] y_lines = [] z_lines = [] for each in iter(areas): name = each.name if name not in ('x', 'y', 'z'): continue b = pos - (each.bounds.updated_center - lookat * each.bounds.radius) if geo2.Vec3Dot(geo2.Vec3Normalize(b), lookat) < 0.0 or not self.axisCulling: if name == 'x': x_area.SetColor(each.GetColor()) x_area.lineset.transform = each.lineset.transform x_lines.extend(each.lines) elif name == 'y': y_area.SetColor(each.GetColor()) y_area.lineset.transform = each.lineset.transform y_lines.extend(each.lines) elif name == 'z': z_area.SetColor(each.GetColor()) z_area.lineset.transform = each.lineset.transform z_lines.extend(each.lines) self.geometry.visible_areas.append(each) x_area.AddToLineSet(x_lines) x_area.lineset.zEnable = False y_area.AddToLineSet(y_lines) y_area.lineset.zEnable = False z_area.AddToLineSet(z_lines) z_area.lineset.zEnable = False return [x_area, y_area, z_area, self.geometry.GetArea('w'), self.geometry.GetArea('ww')]
def GenGeometry(self): xCircleAreas = [] yCircleAreas = [] zCircleAreas = [] if not trinity.IsRightHanded(): effectPath = 'res:/Graphics/Effect/Managed/Utility/LinesRotationToolLH.fx' else: effectPath = 'res:/Graphics/Effect/Managed/Utility/LinesRotationTool.fx' unit_circle = dungeonEditorToolGeometry.GenCirclePoints(1.0, 60) mat = geo2.MatrixRotationY(math.pi / 2) x_circle = geo2.Vec3TransformCoordArray(unit_circle, mat) xRotationHandleCircle = dungeonEditorToolGeometry.area('x', dungeonEditorToolGeometry.RED) xRotationHandleCircle.AddToLineSet(x_circle, True) xRotationHandleCircle._lineset.effect.effectFilePath = effectPath mat = geo2.MatrixRotationX(math.pi / 2) y_circle = geo2.Vec3TransformCoordArray(unit_circle, mat) yRotationHandleCircle = dungeonEditorToolGeometry.area('y', dungeonEditorToolGeometry.GREEN) yRotationHandleCircle.AddToLineSet(y_circle, True) yRotationHandleCircle._lineset.effect.effectFilePath = effectPath zRotationHandleCircle = dungeonEditorToolGeometry.area('z', dungeonEditorToolGeometry.BLUE) zRotationHandleCircle.AddToLineSet(unit_circle, True) zRotationHandleCircle._lineset.effect.effectFilePath = effectPath w_circle = dungeonEditorToolGeometry.GenCirclePoints(1.2, 60) wArea = dungeonEditorToolGeometry.area('w', dungeonEditorToolGeometry.CYAN) wArea.AddToLineSet(w_circle, True) wArea._lineset.viewOriented = True wwArea = dungeonEditorToolGeometry.area('ww', dungeonEditorToolGeometry.LIGHT_GRAY) wwArea.AddToLineSet(dungeonEditorToolGeometry.GenCirclePoints(1.0, 60)) wwArea._lineset.viewOriented = True picking_tris = dungeonEditorToolGeometry.GenCircleTriangles(1.0, 60) if not trinity.IsRightHanded(): picking_tris.reverse() wwArea.AddToPickingSet(picking_tris) rotationGeo = dungeonEditorToolGeometry.geometry(self.primitiveScene) rotationGeo.AppendArea(xRotationHandleCircle) rotationGeo.AppendArea(yRotationHandleCircle) rotationGeo.AppendArea(zRotationHandleCircle) rotationGeo.AppendArea(wArea) rotationGeo.AppendArea(wwArea) return rotationGeo
def GenGeometry(self): scalingGeo = dungeonEditorToolGeometry.geometry(self.primitiveScene) wBox = dungeonEditorToolGeometry.area('w', dungeonEditorToolGeometry.CYAN) wBox.AddToSolidSet(dungeonEditorToolGeometry.CUBE_TRIS) xBox = dungeonEditorToolGeometry.area('x', dungeonEditorToolGeometry.RED) transform = geo2.MatrixTranslation(1.0, 0.0, 0.0) x_tris = geo2.Vec3TransformCoordArray(dungeonEditorToolGeometry.CUBE_TRIS, transform) xBox.AddToSolidSet(x_tris) xBox.AddToLineSet(((0.0, 0.0, 0.0), (1.0, 0.0, 0.0))) transform = geo2.MatrixTranslation(0.0, 1.0, 0.0) y_tris = geo2.Vec3TransformCoordArray(dungeonEditorToolGeometry.CUBE_TRIS, transform) yBox = dungeonEditorToolGeometry.area('y', dungeonEditorToolGeometry.GREEN) yBox.AddToSolidSet(y_tris) yBox.AddToLineSet(((0.0, 0.0, 0.0), (0.0, 1.0, 0.0))) transform = geo2.MatrixTranslation(0.0, 0.0, 1.0) z_tris = geo2.Vec3TransformCoordArray(dungeonEditorToolGeometry.CUBE_TRIS, transform) zBox = dungeonEditorToolGeometry.area('z', dungeonEditorToolGeometry.BLUE) zBox.AddToSolidSet(z_tris) zBox.AddToLineSet(((0.0, 0.0, 0.0), (0.0, 0.0, 1.0))) scalingGeo.AppendArea(xBox) scalingGeo.AppendArea(yBox) scalingGeo.AppendArea(zBox) scalingGeo.AppendArea(wBox) return scalingGeo
def GenGeometry(self): rotateMat = geo2.MatrixRotationZ(-math.pi / 2.0) transform = geo2.MatrixTranslation(0.0, 1.0, 0.0) transform = geo2.MatrixMultiply(transform, rotateMat) c_tris = geo2.Vec3TransformCoordArray(dungeonEditorToolGeometry.CONE_TRIS, transform) xTransAreaCone = dungeonEditorToolGeometry.area('x', dungeonEditorToolGeometry.RED) xTransAreaCone.AddToSolidSet(c_tris) xTransAreaAxis = dungeonEditorToolGeometry.area('x', dungeonEditorToolGeometry.RED) xTransAreaAxis.AddToLineSet([(0.0, 0.0, 0.0), (1.0, 0.0, 0.0)]) t = dungeonEditorToolGeometry.GetSolidAroundLine([(0.3, 0.0, 0.0), (1.0, 0.0, 0.0)], 0.08) xTransAreaAxis.AddToPickingSet(t) transform = geo2.MatrixTranslation(0.0, 1.0, 0.0) c_tris = geo2.Vec3TransformCoordArray(dungeonEditorToolGeometry.CONE_TRIS, transform) yTransAreaCone = dungeonEditorToolGeometry.area('y', dungeonEditorToolGeometry.GREEN) yTransAreaCone.AddToSolidSet(c_tris) yTransAreaAxis = dungeonEditorToolGeometry.area('y', dungeonEditorToolGeometry.GREEN) yTransAreaAxis.AddToLineSet([(0.0, 0.0, 0.0), (0.0, 1.0, 0.0)]) t = dungeonEditorToolGeometry.GetSolidAroundLine([(0.0, 0.3, 0.0), (0.0, 1.0, 0.0)], 0.08) yTransAreaAxis.AddToPickingSet(t) transform = geo2.MatrixTranslation(0.0, 1.0, 0.0) rotateMat = geo2.MatrixRotationX(math.pi / 2.0) transform = geo2.MatrixMultiply(transform, rotateMat) c_tris = geo2.Vec3TransformCoordArray(dungeonEditorToolGeometry.CONE_TRIS, transform) zTransAreaCone = dungeonEditorToolGeometry.area('z', dungeonEditorToolGeometry.BLUE) zTransAreaCone.AddToSolidSet(c_tris) zTransAreaAxis = dungeonEditorToolGeometry.area('z', dungeonEditorToolGeometry.BLUE) zTransAreaAxis.AddToLineSet([(0.0, 0.0, 0.0), (0.0, 0.0, 1.0)]) t = dungeonEditorToolGeometry.GetSolidAroundLine([(0.0, 0.0, 0.3), (0.0, 0.0, 1.0)], 0.08) zTransAreaAxis.AddToPickingSet(t) wTransAreaPlane = dungeonEditorToolGeometry.area('w', dungeonEditorToolGeometry.CYAN) wTransAreaPlane.AddToLineSet(dungeonEditorToolGeometry.CIRCLE_POINTS_QUART) wTransAreaPlane._lineset.viewOriented = True picking_tris = dungeonEditorToolGeometry.GenCircleTriangles(0.25) if not trinity.IsRightHanded(): picking_tris.reverse() wTransAreaPlane.AddToPickingSet(picking_tris) translationGeo = dungeonEditorToolGeometry.geometry(self.primitiveScene) translationGeo.AppendArea(wTransAreaPlane) translationGeo.AppendArea(xTransAreaCone) translationGeo.AppendArea(xTransAreaAxis) translationGeo.AppendArea(yTransAreaCone) translationGeo.AppendArea(yTransAreaAxis) translationGeo.AppendArea(zTransAreaCone) translationGeo.AppendArea(zTransAreaAxis) self.cones.append(xTransAreaCone) self.cones.append(yTransAreaCone) self.cones.append(zTransAreaCone) self.axes.append(xTransAreaAxis) self.axes.append(yTransAreaAxis) self.axes.append(zTransAreaAxis) return translationGeo