def InitGraphics(self, handle):
        """Creates the Direct3D device which is used to render the scene.  Pops
        up a message box and returns False on failure (returns True on success).
        """
        params = Direct3D.PresentParameters()
        params.Windowed = True
        params.SwapEffect = Direct3D.SwapEffect.Discard
        params.EnableAutoDepthStencil = True
        params.AutoDepthStencilFormat = Direct3D.DepthFormat.D16

        self.Device = Direct3D.Device(
            0, Direct3D.DeviceType.Hardware, handle,
            Direct3D.CreateFlags.SoftwareVertexProcessing, params)

        self.Device.RenderState.ZBufferEnable = True
        self.Device.Transform.Projection = DirectX.Matrix.PerspectiveFovLH(
            System.Math.PI / 4.0, 1, 1, 100)
        self.Device.Transform.View = DirectX.Matrix.LookAtLH(
            DirectX.Vector3(0, 3, -5), DirectX.Vector3(0, 0, 0),
            DirectX.Vector3(0, 1, 0))
        self.Device.RenderState.Ambient = Drawing.Color.White

        # ensure we are not paused
        self.Paused = False

        return True
 def LookAt(self, position, up=DirectX.Vector3(0, 1, 0)):
     """Takes in a position to look at and an up vector to use to look at
     it with.  The up vector will normally be the positive Y axis, but in
     the case where the position is directly above or below the position
     of the camera, you will need to set which direction up is in this
     case."""
     zero = DirectX.Vector3(0, 0, 0)
     direction = Vectorize(position) - self.Position
     up = Vectorize(up)
     self.LookAtMatrix = DirectX.Matrix.LookAtLH(zero, direction, up)
     self.RotationMatrix = DirectX.Matrix.Identity
def Vectorize(v):
    "Converts v from a sequence into a Vector3."
    if operator.isSequenceType(v):
        v = DirectX.Vector3(System.Single(v[0]), System.Single(v[1]),
                            System.Single(v[2]))

    return v
 def __DelPosition(self):
     self.__Position = DirectX.Vector3(0, 0, 0)
     self.PositionMatrix = DirectX.Matrix.Identity
 def LookAt(self, pos, up=DirectX.Vector3(0, 1, 0)):
     pos, up = Vectorize(pos), Vectorize(up)
     self.RotationMatrix = DirectX.Matrix.LookAtLH(self.Position, pos, up) * \
                           DirectX.Matrix.Translation(-self.Position)
def Vectorize(v):
    if type(v) == list:
        v = DirectX.Vector3(v[0], v[1], v[2])
    return v
 def __UpdateMatrix(self):
     self.Matrix = DirectX.Matrix.LookAtLH(self.__Position,
                                           self.__LookAtVector,
                                           DirectX.Vector3(0, 1, 0))
 def __init__(self, name):
     self.Name = name
     self.__LookAtVector = DirectX.Vector3(0, 0, -1)
     self.__Position = DirectX.Vector3(0, 0, 0)
 def __DelPosition(self):
     self.__Position = DirectX.Vector3(0, 0, 0)
 def __init__(self):
     self.__Position = DirectX.Vector3(0, 0, 0)