瀏覽代碼

*** empty log message ***

Mark Mine 22 年之前
父節點
當前提交
75dd4f1771
共有 1 個文件被更改,包括 22 次插入12 次删除
  1. 22 12
      direct/src/gui/OnscreenText.py

+ 22 - 12
direct/src/gui/OnscreenText.py

@@ -19,6 +19,7 @@ class OnscreenText(PandaObject, NodePath):
     def __init__(self, text = '',
     def __init__(self, text = '',
                  style = Plain,
                  style = Plain,
                  pos = (0, 0),
                  pos = (0, 0),
+                 roll = 0,
                  scale = None,
                  scale = None,
                  fg = None,
                  fg = None,
                  bg = None,
                  bg = None,
@@ -151,6 +152,7 @@ class OnscreenText(PandaObject, NodePath):
         # Save some of the parameters for posterity.
         # Save some of the parameters for posterity.
         self.scale = scale
         self.scale = scale
         self.pos = pos
         self.pos = pos
+        self.roll = roll
 
 
         if font == None:
         if font == None:
             font = DirectGuiGlobals.getDefaultFont()
             font = DirectGuiGlobals.getDefaultFont()
@@ -185,9 +187,7 @@ class OnscreenText(PandaObject, NodePath):
         # We'd rather do it here, on the text itself, rather than on
         # We'd rather do it here, on the text itself, rather than on
         # our NodePath, so we have one fewer transforms in the scene
         # our NodePath, so we have one fewer transforms in the scene
         # graph.
         # graph.
-        mat = Mat4.scaleMat(
-            scale[0], 1, scale[1]) * Mat4.translateMat(pos[0], 0, pos[1])
-        textNode.setTransform(mat)
+        self.updateTransformMat()
 
 
         if drawOrder != None:
         if drawOrder != None:
             textNode.setBin('fixed')
             textNode.setBin('fixed')
@@ -270,14 +270,20 @@ class OnscreenText(PandaObject, NodePath):
         Position the onscreen text in 2d screen space
         Position the onscreen text in 2d screen space
         """
         """
         self.pos = (x, y)
         self.pos = (x, y)
-        mat = Mat4.scaleMat(
-            self.scale[0],
-            1,
-            self.scale[1]) * Mat4.translateMat(self.pos[0], 0, self.pos[1])
-        self.textNode.setTransform(mat)
+        self.updateTransformMat()
 
 
     def getPos(self):
     def getPos(self):
         return self.pos
         return self.pos
+
+    def setRoll(self, roll):
+        """setRoll(self, float)
+        Rotate the onscreen text around the screen's normal
+        """
+        self.roll = roll
+        self.updateTransformMat()
+
+    def getRoll(self):
+        return self.roll
         
         
     def setScale(self, sx, sy = None):
     def setScale(self, sx, sy = None):
         """setScale(self, float, float)
         """setScale(self, float, float)
@@ -292,10 +298,14 @@ class OnscreenText(PandaObject, NodePath):
                 self.scale = (sx, sx)
                 self.scale = (sx, sx)
         else:
         else:
             self.scale = (sx, sy)
             self.scale = (sx, sy)
-        mat = Mat4.scaleMat(
-            self.scale[0],
-            1,
-            self.scale[1]) * Mat4.translateMat(self.pos[0], 0, self.pos[1])
+        self.updateTransformMat()
+
+    def updateTransformMat(self):
+        mat = (
+            Mat4.scaleMat(self.scale[0],1,self.scale[1]) *
+            Mat4.rotateMat(self.roll, Vec3(0,-1,0)) *
+            Mat4.translateMat(self.pos[0], 0, self.pos[1])
+            )
         self.textNode.setTransform(mat)
         self.textNode.setTransform(mat)
 
 
     def getScale(self):
     def getScale(self):