Browse Source

preserve transform of input geom/image

David Rose 20 years ago
parent
commit
2b6af7a68f
2 changed files with 16 additions and 7 deletions
  1. 9 4
      direct/src/gui/OnscreenGeom.py
  2. 7 3
      direct/src/gui/OnscreenImage.py

+ 9 - 4
direct/src/gui/OnscreenGeom.py

@@ -70,16 +70,20 @@ class OnscreenGeom(PandaObject, NodePath):
 
     def setGeom(self, geom,
                 parent = NodePath(),
-                transform = TransformState.makeIdentity(),
+                transform = None,
                 sort = 0,
                 color = None):
         # Get the original parent, transform, and sort, if any, so we can
         # preserve them across this call.
         if not self.isEmpty():
             parent = self.getParent()
-            transform = self.getTransform()
+            if transform == None:
+                # If we're replacing a previous image, we throw away
+                # the new image's transform in favor of the original
+                # image's transform.
+                transform = self.getTransform()
             sort = self.getSort()
-            if self.hasColor():
+            if color == None and self.hasColor():
                 color = self.getColor()
 
         self.removeNode()
@@ -92,7 +96,8 @@ class OnscreenGeom(PandaObject, NodePath):
             self.reparentTo(parent, sort)
 
         if not self.isEmpty():
-            self.setTransform(transform)
+            if transform:
+                self.setTransform(transform.compose(self.getTransform()))
 
             # Set color, if specified
             if color:

+ 7 - 3
direct/src/gui/OnscreenImage.py

@@ -75,13 +75,17 @@ class OnscreenImage(PandaObject, NodePath):
 
     def setImage(self, image,
                  parent = NodePath(),
-                 transform = TransformState.makeIdentity(),
+                 transform = None,
                  sort = 0):
         # Get the original parent, transform, and sort, if any, so we can
         # preserve them across this call.
         if not self.isEmpty():
             parent = self.getParent()
-            transform = self.getTransform()
+            if transform == None:
+                # If we're replacing a previous image, we throw away
+                # the new image's transform in favor of the original
+                # image's transform.
+                transform = self.getTransform()
             sort = self.getSort()
 
         self.removeNode()
@@ -113,7 +117,7 @@ class OnscreenImage(PandaObject, NodePath):
             else:
                 print 'OnscreenImage: model %s not found' % image[0]
 
-        if not self.isEmpty():
+        if transform and not self.isEmpty():
             self.setTransform(transform)
 
     def getImage(self):