mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 01:07:51 -04:00
*** empty log message ***
This commit is contained in:
parent
1a928e113f
commit
d7ef955fb4
@ -751,16 +751,22 @@ class Actor(PandaObject, NodePath):
|
||||
return None
|
||||
|
||||
|
||||
def loadModel(self, modelPath, partName="modelRoot", lodName="lodRoot"):
|
||||
"""loadModel(self, string, string="modelRoot", string="base")
|
||||
def loadModel(self, modelPath, partName="modelRoot", lodName="lodRoot",
|
||||
copy = 1):
|
||||
"""loadModel(self, string, string="modelRoot", string="lodRoot",
|
||||
bool = 0)
|
||||
Actor model loader. Takes a model name (ie file path), a part
|
||||
name(defaults to "modelRoot") and an lod name(defaults to "lodRoot").
|
||||
If copy is set to 0, do a lodModelOnce instead of a loadModelCopy.
|
||||
"""
|
||||
Actor.notify.info("in loadModel: %s , part: %s, lod: %s" % \
|
||||
(modelPath, partName, lodName))
|
||||
Actor.notify.info("in loadModel: %s , part: %s, lod: %s, copy: %s" % \
|
||||
(modelPath, partName, lodName, copy))
|
||||
|
||||
# load the model and extract its part bundle
|
||||
model = loader.loadModelCopy(modelPath)
|
||||
if (copy):
|
||||
model = loader.loadModelCopy(modelPath)
|
||||
else:
|
||||
model = loader.loadModelOnce(modelPath)
|
||||
bundle = NodePath(model, "**/+PartBundleNode")
|
||||
if (bundle.isEmpty()):
|
||||
Actor.notify.warning("%s is not a character!" % (modelPath))
|
||||
|
@ -22,7 +22,7 @@ class Frame:
|
||||
del(self.frame)
|
||||
|
||||
def __str__(self):
|
||||
return "Frame: %s = %s" % self.name, self.items
|
||||
return "Frame: %s = %s" % (self.name, self.items)
|
||||
|
||||
# accessing
|
||||
def getName(self):
|
||||
@ -52,6 +52,9 @@ class Frame:
|
||||
|
||||
def recompute(self):
|
||||
self.frame.recompute()
|
||||
|
||||
def clearAllPacking(self):
|
||||
self.frame.clearAllPacking()
|
||||
|
||||
# content functions
|
||||
def addItem(self, item):
|
||||
@ -68,18 +71,23 @@ class Frame:
|
||||
def printItems(self):
|
||||
print "frame items: %s" % (self.items)
|
||||
|
||||
def packItem(self, itemNum, relation, otherItemNum):
|
||||
self.frame.packItem(self.items[itemNum].getGuiItem(), relation,
|
||||
self.items[otherItemNum].getGuiItem(), self.offset)
|
||||
|
||||
def packItem(self, item, relation, otherItem):
|
||||
if (item in self.items) and (otherItem in self.items):
|
||||
self.frame.packItem(item.getGuiItem(), relation,
|
||||
otherItem.getGuiItem(), self.offset)
|
||||
else:
|
||||
print "warning: tried to pack item that aren't in frame"
|
||||
|
||||
# convenience functions
|
||||
def makeVertical(self):
|
||||
# remove any previous packing
|
||||
self.frame.clearAllPacking()
|
||||
# make each item (except first) align under the last
|
||||
for itemNum in range(1, len(self.items)):
|
||||
self.packItem(itemNum, GuiFrame.GuiFrame.UNDER, itemNum - 1)
|
||||
self.packItem(itemNum, GuiFrame.GuiFrame.ALIGNLEFT, itemNum - 1)
|
||||
for itemNum in range(1, len(self.items)):
|
||||
self.packItem(self.items[itemNum], GuiFrame.GuiFrame.UNDER,
|
||||
self.items[itemNum - 1])
|
||||
self.packItem(self.items[itemNum], GuiFrame.GuiFrame.ALIGNLEFT,
|
||||
self.items[itemNum - 1])
|
||||
self.frame.recompute()
|
||||
|
||||
def makeHorizontal(self):
|
||||
@ -87,8 +95,10 @@ class Frame:
|
||||
self.frame.clearAllPacking()
|
||||
# make each item (except first) align right of the last
|
||||
for itemNum in range(1, len(self.items)):
|
||||
self.packItem(itemNum, GuiFrame.GuiFrame.RIGHT, itemNum - 1)
|
||||
self.packItem(itemNum, GuiFrame.GuiFrame.ALIGNABOVE, itemNum - 1)
|
||||
self.packItem(self.items[itemNum], GuiFrame.GuiFrame.RIGHT,
|
||||
self.items[itemNum - 1])
|
||||
self.packItem(self.items[itemNum], GuiFrame.GuiFrame.ALIGNABOVE,
|
||||
self.items[itemNum - 1])
|
||||
self.frame.recompute()
|
||||
|
||||
def makeWideAsWidest(self):
|
||||
|
@ -126,8 +126,6 @@ class PickList(PandaObject.PandaObject):
|
||||
for choice in self.choiceList:
|
||||
if not (self.choiceList.index(choice) == self.choice):
|
||||
choice.getGuiItem().exit()
|
||||
# throw a rollover event
|
||||
messenger.send(self.name + "-rollover")
|
||||
|
||||
def __exitChoice(self):
|
||||
# reset choice when mouse exits a button
|
||||
@ -148,10 +146,11 @@ class PickList(PandaObject.PandaObject):
|
||||
task = Task.Task(buttonUp)
|
||||
task.choice = self.choiceList[self.choice]
|
||||
taskMgr.spawnTaskNamed(Task.doLater(.035, task,
|
||||
"buttonUp-Later"),
|
||||
"buttonUp-later"),
|
||||
"doLater-buttonUp-later")
|
||||
# let everyone know a choice was made
|
||||
messenger.send(self.eventName, [self.choice])
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -19,21 +19,21 @@ class ScrollingLabel(PandaObject.PandaObject):
|
||||
self.frame.setOffset(0.015)
|
||||
self.item = 0
|
||||
self.items = []
|
||||
|
||||
# display the name of the scrolling label
|
||||
self.keyFocus = 1
|
||||
|
||||
# create the new title
|
||||
label = GuiLabel.GuiLabel.makeSimpleTextLabel(self.name, font)
|
||||
label.setForegroundColor(1., 0., 0., 1.)
|
||||
label.setBackgroundColor(1., 1., 1., 0.)
|
||||
name = Sign.Sign(self.name, label)
|
||||
self.frame.addItem(name)
|
||||
self.title = Sign.Sign(self.name, label)
|
||||
self.frame.addItem(self.title)
|
||||
|
||||
# create a sign for each item in itemList
|
||||
for item in itemList:
|
||||
#thisLabel = GuiLabel.GuiLabel.makeSimpleTextLabel(item, font)
|
||||
#thisLabel.setForegroundColor(0., 0., 0., 1.)
|
||||
#thisLabel.setBackgroundColor(1., 1., 1., 1.)
|
||||
#thisSign = Sign.Sign(item, thisLabel)
|
||||
thisSign = Button.Button(item)
|
||||
thisLabel = GuiLabel.GuiLabel.makeSimpleTextLabel(item, font)
|
||||
thisLabel.setForegroundColor(0., 0., 0., 1.)
|
||||
thisLabel.setBackgroundColor(1., 1., 1., 1.)
|
||||
thisSign = Sign.Sign(item, thisLabel)
|
||||
self.items.append(thisSign)
|
||||
# add each item temporarily
|
||||
self.frame.addItem(thisSign)
|
||||
@ -46,24 +46,34 @@ class ScrollingLabel(PandaObject.PandaObject):
|
||||
self.frame.removeItem(self.items[itemNum])
|
||||
|
||||
# pack the first label under the name
|
||||
self.frame.packItem(1, GuiFrame.GuiFrame.UNDER, 0)
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.ALIGNLEFT,
|
||||
self.title)
|
||||
|
||||
# create the scroll buttons
|
||||
leftButton = Button.Button(self.name + "-left", " < ")
|
||||
leftButton.getGuiItem().setDownRolloverEvent(self.name + "-left")
|
||||
self.frame.addItem(leftButton)
|
||||
self.frame.packItem(2, GuiFrame.GuiFrame.UNDER ,0)
|
||||
self.frame.packItem(2, GuiFrame.GuiFrame.LEFT ,0)
|
||||
rightButton = Button.Button(self.name + "-right", " > ")
|
||||
rightButton.getGuiItem().setDownRolloverEvent(self.name + "-right")
|
||||
self.frame.addItem(rightButton)
|
||||
self.frame.packItem(3, GuiFrame.GuiFrame.UNDER ,0)
|
||||
self.frame.packItem(3, GuiFrame.GuiFrame.RIGHT ,0)
|
||||
self.leftButton = Button.Button(self.name + "-left", " < ")
|
||||
self.leftButton.getGuiItem().setDownRolloverEvent(self.name + "-left")
|
||||
self.frame.addItem(self.leftButton)
|
||||
self.frame.packItem(self.leftButton, GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.leftButton, GuiFrame.GuiFrame.LEFT,
|
||||
self.title)
|
||||
self.rightButton = Button.Button(self.name + "-right", " > ")
|
||||
self.rightButton.getGuiItem().setDownRolloverEvent(self.name +
|
||||
"-right")
|
||||
self.frame.addItem(self.rightButton)
|
||||
self.frame.packItem(self.rightButton, GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.rightButton, GuiFrame.GuiFrame.RIGHT,
|
||||
self.title)
|
||||
|
||||
# listen for the scroll buttons
|
||||
self.accept(self.name + "-left", self.handleLeftButton)
|
||||
self.accept(self.name + "-right", self.handleRightButton)
|
||||
|
||||
# listen for keyboard hits
|
||||
self.setKeyFocus(1)
|
||||
|
||||
# refresh the frame
|
||||
self.frame.recompute()
|
||||
|
||||
@ -77,14 +87,25 @@ class ScrollingLabel(PandaObject.PandaObject):
|
||||
# ignore events
|
||||
self.ignore(self.name + "-left")
|
||||
self.ignore(self.name + "-right")
|
||||
|
||||
self.setKeyFocus(0)
|
||||
|
||||
# accessing
|
||||
def getName(self):
|
||||
def getTitle(self):
|
||||
return self.name
|
||||
|
||||
def setTitle(self, name):
|
||||
self.name = name
|
||||
self.title.setText(name)
|
||||
self.frame.recompute()
|
||||
|
||||
def getItem(self):
|
||||
return self.item
|
||||
return self.items[self.item]
|
||||
|
||||
def setItem(self, item):
|
||||
self.frame.removeItem(self.items[self.item])
|
||||
self.item = item
|
||||
self.addItem()
|
||||
|
||||
def getEventName(self):
|
||||
return self.eventName
|
||||
|
||||
@ -93,12 +114,30 @@ class ScrollingLabel(PandaObject.PandaObject):
|
||||
|
||||
def setPos(self, x, y):
|
||||
self.frame.setPos(x, y)
|
||||
self.frame.recompute()
|
||||
|
||||
def setScale(self, scale):
|
||||
self.frame.setScale(scale)
|
||||
self.frame.recompute()
|
||||
|
||||
def getKeyFocus(self):
|
||||
return self.keyFocus
|
||||
|
||||
def setKeyFocus(self, focus):
|
||||
self.keyFocus = focus
|
||||
if (focus == 1):
|
||||
# listen for keyboard hits
|
||||
self.accept("left-up", self.handleLeftArrow)
|
||||
self.accept("right-up", self.handleRightArrow)
|
||||
else:
|
||||
# ignore keyboard hits
|
||||
self.ignore("left-up")
|
||||
self.ignore("right-up")
|
||||
|
||||
# actions
|
||||
def recompute(self):
|
||||
self.frame.recompute()
|
||||
|
||||
def manage(self):
|
||||
self.frame.manage()
|
||||
|
||||
@ -121,12 +160,38 @@ class ScrollingLabel(PandaObject.PandaObject):
|
||||
self.item = 0
|
||||
self.addItem()
|
||||
|
||||
def handleLeftArrow(self):
|
||||
# make the button toggle
|
||||
self.leftButton.getGuiItem().down()
|
||||
self.spawnButtonUpTask(self.leftButton)
|
||||
# then act like a mouse click
|
||||
self.handleLeftButton()
|
||||
|
||||
def handleRightArrow(self):
|
||||
# make the button toggle
|
||||
self.rightButton.getGuiItem().down()
|
||||
self.spawnButtonUpTask(self.rightButton)
|
||||
# then act like a mouse click
|
||||
self.handleRightButton()
|
||||
|
||||
def spawnButtonUpTask(self, button):
|
||||
def buttonUp(state):
|
||||
state.button.getGuiItem().up()
|
||||
return Task.done
|
||||
task = Task.Task(buttonUp)
|
||||
task.button = button
|
||||
taskMgr.spawnTaskNamed(Task.doLater(.035, task, "buttonUp-later"),
|
||||
"doLater-buttonUp-later")
|
||||
|
||||
def addItem(self):
|
||||
self.frame.addItem(self.items[self.item])
|
||||
self.frame.packItem(3, GuiFrame.GuiFrame.UNDER, 0)
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.UNDER,
|
||||
self.title)
|
||||
self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.ALIGNLEFT,
|
||||
self.title)
|
||||
self.items[self.item].manage()
|
||||
self.frame.recompute()
|
||||
messenger.send(self.eventName + str(self.item))
|
||||
messenger.send(self.eventName, [self.item])
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user