def __init__(self): Widget.__init__(self, size=WH) self.bridgeMap = {} # ex)bridgeMap[id1] = {id2:[gate1ID, gate2ID], ...} self.gateMap = {} # ex)gateMap[gate1id] = [gate2id, (obj1ID, obj2ID)] self.pathMap = {} # ex)pathMap[id1] = {targetID:nextObjID, ...} self.generatePathList = set() self.bridge_texture = gResMgr.getTex("bridge") self.bridge_texture.wrap = "repeat"
def reset(self, parentObj, xml_data): if self == parentObj: return # init data self.xml_data = xml_data self.parentObj = parentObj self.childObj = [] self.pTouch = None self.bTouchMoved = False self.bRedrawBridge = False self.bMove = False self.bJump = False self.fJump = 0.0 self.vStartPos = [0, 0] self.vTargetPos = [0, 0] self.pTargetObj = None self.nTargetObjID = -1 self.pOldTargetObj = None self.nOldTargetObjID = -1 self.pPathList = [] self.pStartFromObj = None self.nStartFromObjID = -1 self.pCurArriveObj = None self.nCurArriveObjID = -1 self.pDrawOnObj = None self.vMoveDir = [0, 0] self.fMoveTime = 0.0 self.fMoveTimeAcc = 0.0 # set icon if self.icon: self.box.texture = gResMgr.getTex(self.icon) # create new data if xml_data == None: self.setNewName(self) self.setID(-1) self.setPos(cXY) # add door if self.bHasDoor: door = self.add_childObj("Door") door.center = mul(WH, (0.5, 0.15)) door.setPos(door.pos) # adjust loading data else: self.setID(int(xml_data.get("id"))) self.setName(xml_data.get("name")) # adjust screen ratio self.setPos(mul(eval(xml_data.get("pos")), (gWorldEdit.widthRatio, gWorldEdit.heightRatio))) self.setRotation(eval(xml_data.get("rotation"))) # set floor pos self.fFloorPos = self.getCurPos()[1] # add to worldedit if self.bDrawAlways: gWorldEdit.addDrawAlwaysObj(self) # regist object gWorldEdit.registObjID(self)