Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 7
0
 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