Poodletooth-iLand/panda/direct/leveleditor/ObjectHandler.py

77 lines
2 KiB
Python
Raw Normal View History

2015-03-03 22:10:12 +00:00
"""
This is just a sample code.
LevelEditor, ObjectHandler, ObjectPalette should be rewritten
to be game specific.
"""
from direct.actor import Actor
import ObjectGlobals as OG
class ObjectHandler:
""" ObjectHandler will create and update objects """
def __init__(self, editor):
self.editor = editor
def createDoubleSmiley(self, horizontal=True):
root = render.attachNewNode('doubleSmiley')
a = loader.loadModel('models/smiley.egg')
b = loader.loadModel('models/smiley.egg')
if horizontal:
a.setName('left')
b.setName('right')
a.setPos(-1, 0, 0)
b.setPos(1, 0, 0)
else:
a.setName('top')
b.setName('bottom')
a.setPos(0, 0, 1)
b.setPos(0, 0, -1)
a.reparentTo(root)
b.reparentTo(root)
return root
def updateDoubleSmiley(self, val, obj):
objNP = obj[OG.OBJ_NP]
if objNP.find('left'):
objNP.find('left').setPos(-1 * val, 0, 0)
objNP.find('right').setPos(val, 0, 0)
else:
objNP.find('top').setPos(0, 0, 1 * val)
objNP.find('bottom').setPos(0, 0, -1 * val)
def updateSmiley(self, val, obj):
objNP = obj[OG.OBJ_NP]
if base.direct:
base.direct.deselectAllCB()
for child in objNP.findAllMatches("+GeomNode"):
child.removeNode()
for i in range(val):
a = loader.loadModel(obj[OG.OBJ_MODEL])
b = a.find("+GeomNode")
b.setPos(0, i*2, 0)
b.reparentTo(objNP)
a.removeNode()
def createPanda(self):
pandaActor = PandaActor()
return pandaActor
def createGrass(self):
environ = loader.loadModel("models/environment.egg")
environ.setScale(0.25,0.25,0.25)
environ.setPos(-8,42,0)
return environ
class PandaActor(Actor.Actor):
def __init__(self):
Actor.Actor.__init__(self, "models/panda-model.egg")
self.setScale(0.005)