mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 01:07:51 -04:00
generalize image parameter
This commit is contained in:
parent
22416d34c5
commit
a4d06505c2
@ -123,9 +123,9 @@ class DirectFrame(DirectGuiWidget):
|
||||
if arg == None:
|
||||
# Passed in None
|
||||
imageList = (None,) * self['numStates']
|
||||
elif isinstance(arg, NodePath):
|
||||
imageList = (arg,) * self['numStates']
|
||||
elif isinstance(arg, types.StringTypes):
|
||||
elif isinstance(arg, NodePath) or \
|
||||
isinstance(arg, Texture) or \
|
||||
isinstance(arg, types.StringTypes):
|
||||
# Passed in a single node path, make a tuple out of it
|
||||
imageList = (arg,) * self['numStates']
|
||||
else:
|
||||
|
@ -40,34 +40,10 @@ class OnscreenImage(PandaObject, NodePath):
|
||||
"""
|
||||
# We ARE a node path. Initially, we're an empty node path.
|
||||
NodePath.__init__(self)
|
||||
|
||||
if parent == None:
|
||||
parent = aspect2d
|
||||
# Assign geometry
|
||||
self.sort = sort
|
||||
if isinstance(image, NodePath):
|
||||
self.assign(image.copyTo(parent, sort))
|
||||
elif type(image) == type(''):
|
||||
# Assume its a file name and create a texture card
|
||||
tex = loader.loadTexture(image)
|
||||
cm = CardMaker('OnscreenImage')
|
||||
cm.setFrame(-1, 1, -1, 1)
|
||||
self.assign(parent.attachNewNode(cm.generate(), sort))
|
||||
self.setTexture(tex)
|
||||
elif type(image) == type(()):
|
||||
# Assume its a file+node name, extract texture from node
|
||||
model = loader.loadModelOnce(image[0])
|
||||
if model:
|
||||
node = model.find(image[1])
|
||||
if node:
|
||||
#print 'assigning'
|
||||
self.assign(node.copyTo(parent, sort))
|
||||
else:
|
||||
print 'OnscreenImage: node %s not found' % image[1]
|
||||
return
|
||||
model.removeNode()
|
||||
else:
|
||||
print 'OnscreenImage: model %s not found' % image[0]
|
||||
return
|
||||
self.setImage(image, parent = parent, sort = sort)
|
||||
|
||||
# Adjust pose
|
||||
# Set pos
|
||||
@ -97,24 +73,48 @@ class OnscreenImage(PandaObject, NodePath):
|
||||
# Set color, if specified
|
||||
self.setColor(color[0], color[1], color[2], color[3])
|
||||
|
||||
def setImage(self, image):
|
||||
parent = self.getParent()
|
||||
# Assign geometry
|
||||
def setImage(self, image,
|
||||
parent = NodePath(),
|
||||
transform = TransformState.makeIdentity(),
|
||||
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()
|
||||
sort = self.getSort()
|
||||
|
||||
self.removeNode()
|
||||
|
||||
# Assign geometry
|
||||
if isinstance(image, NodePath):
|
||||
self.assign(image.copyTo(parent))
|
||||
elif type(image) == type(''):
|
||||
# Assume its a file name and create a texture card
|
||||
tex = loader.loadTexture(image)
|
||||
self.assign(image.copyTo(parent, sort))
|
||||
elif isinstance(image, types.StringTypes) or \
|
||||
isinstance(image, Texture):
|
||||
if isinstance(image, Texture):
|
||||
# It's a Texture
|
||||
tex = image
|
||||
else:
|
||||
# It's a Texture file name
|
||||
tex = loader.loadTexture(image)
|
||||
cm = CardMaker('OnscreenImage')
|
||||
cm.setFrame(-1, 1, -1, 1)
|
||||
self.assign(parent.attachNewNode(cm.generate(), self.sort))
|
||||
self.assign(parent.attachNewNode(cm.generate(), sort))
|
||||
self.setTexture(tex)
|
||||
elif type(image) == type(()):
|
||||
# Assume its a file+node name, extract texture from node
|
||||
model = loader.loadModelOnce(image[0])
|
||||
self.assign(model.find(image[1]))
|
||||
self.reparentTo(parent)
|
||||
model.removeNode()
|
||||
if model:
|
||||
node = model.find(image[1])
|
||||
if node:
|
||||
self.assign(node.copyTo(parent, sort))
|
||||
else:
|
||||
print 'OnscreenImage: node %s not found' % image[1]
|
||||
else:
|
||||
print 'OnscreenImage: model %s not found' % image[0]
|
||||
|
||||
if not self.isEmpty():
|
||||
self.setTransform(transform)
|
||||
|
||||
def getImage(self):
|
||||
return self
|
||||
|
Loading…
x
Reference in New Issue
Block a user