def generatePet(self): self.loadModel('phase_4/models/char/TT_pets-mod') self.loadAnims({'toBeg': 'phase_5/models/char/TT_pets-intoBeg', 'beg': 'phase_5/models/char/TT_pets-beg', 'fromBeg': 'phase_5/models/char/TT_pets-begOut', 'backflip': 'phase_5/models/char/TT_pets-backflip', 'dance': 'phase_5/models/char/TT_pets-heal', 'toDig': 'phase_5/models/char/TT_pets-intoDig', 'dig': 'phase_5/models/char/TT_pets-dig', 'fromDig': 'phase_5/models/char/TT_pets-digToNeutral', 'disappear': 'phase_5/models/char/TT_pets-disappear', 'eat': 'phase_5.5/models/char/TT_pets-eat', 'jump': 'phase_5/models/char/TT_pets-jump', 'neutral': 'phase_4/models/char/TT_pets-neutral', 'neutralHappy': 'phase_4/models/char/TT_pets-neutralHappy', 'neutralSad': 'phase_4/models/char/TT_pets-neutral_sad', 'toPet': 'phase_5.5/models/char/TT_pets-petin', 'pet': 'phase_5.5/models/char/TT_pets-petloop', 'fromPet': 'phase_5.5/models/char/TT_pets-petend', 'playDead': 'phase_5/models/char/TT_pets-playdead', 'fromPlayDead': 'phase_5/models/char/TT_pets-deadend', 'reappear': 'phase_5/models/char/TT_pets-reappear', 'run': 'phase_5.5/models/char/TT_pets-run', 'rollover': 'phase_5/models/char/TT_pets-rollover', 'walkSad': 'phase_5.5/models/char/TT_pets-sadwalk', 'speak': 'phase_5/models/char/TT_pets-speak', 'swallow': 'phase_5.5/models/char/TT_pets-swallow', 'swim': 'phase_5.5/models/char/TT_pets-swim', 'toBall': 'phase_5.5/models/char/TT_pets-toBall', 'walk': 'phase_5.5/models/char/TT_pets-walk', 'walkHappy': 'phase_5.5/models/char/TT_pets-walkHappy'}) self.setHeight(2) color = None colorIndex = self.style[5] color = AllPetColors[colorIndex] self.color = color bodyType = self.style[4] body = self.find('**/body') tex = loader.loadTexture(BodyTextures[BodyTypes[bodyType]]) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) body.setTexture(tex, 1) body.setColor(color) leftFoot = self.find('**/leftFoot') rightFoot = self.find('**/rightFoot') texName = getFootTexture(bodyType) tex = loader.loadTexture(texName) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) leftFoot.setTexture(tex, 1) rightFoot.setTexture(tex, 1) leftFoot.setColor(color) rightFoot.setColor(color) for part in HeadParts + EarParts + NoseParts + TailParts: self.find('**/' + part).stash() colorScale = ColorScales[self.style[6]] partColor = self.amplifyColor(color, colorScale) headIndex = self.style[0] if headIndex != -1: head = self.find('**/@@' + HeadParts[headIndex]) head.setColor(partColor) head.unstash() earsIndex = self.style[1] if earsIndex != -1: ears = self.find('**/@@' + EarParts[earsIndex]) ears.setColor(partColor) texName = getEarTexture(bodyType, EarParts[earsIndex]) if texName: tex = loader.loadTexture(texName) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) ears.setTexture(tex, 1) ears.unstash() noseIndex = self.style[2] if noseIndex != -1: nose = self.find('**/@@' + NoseParts[noseIndex]) nose.setColor(partColor) nose.unstash() tailIndex = self.style[3] if tailIndex != -1: tail = self.find('**/@@' + TailParts[tailIndex]) tail.setColor(partColor) texName = TailTextures[TailParts[tailIndex]] if texName: if BodyTypes[bodyType] == 'giraffe': texName = GiraffeTail elif BodyTypes[bodyType] == 'leopard': texName = LeopardTail tex = loader.loadTexture(texName) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) tail.setTexture(tex, 1) tail.unstash() if not self.forGui: self.drawInFront('eyeWhites', 'body', 1) self.drawInFront('rightPupil', 'eyeWhites', 2) self.drawInFront('leftPupil', 'eyeWhites', 2) self.drawInFront('rightHighlight', 'rightPupil', 3) self.drawInFront('leftHighlight', 'leftPupil', 3) else: self.drawInFront('eyeWhites', 'body', -2) self.drawInFront('rightPupil', 'eyeWhites', -2) self.drawInFront('leftPupil', 'eyeWhites', -2) self.find('**/rightPupil').adjustAllPriorities(1) self.find('**/leftPupil').adjustAllPriorities(1) eyes = self.style[7] eyeColor = PetEyeColors[eyes] self.eyes = self.find('**/eyeWhites') self.rightPupil = self.find('**/rightPupil') self.leftPupil = self.find('**/leftPupil') self.rightHighlight = self.find('**/rightHighlight') self.leftHighlight = self.find('**/leftHighlight') self.rightBrow = self.find('**/rightBrow') self.leftBrow = self.find('**/leftBrow') self.eyes.setColor(1, 1, 1, 1) self.rightPupil.setColor(eyeColor, 2) self.leftPupil.setColor(eyeColor, 2) self.rightHighlight.setColor(1, 1, 1, 1) self.leftHighlight.setColor(1, 1, 1, 1) self.rightBrow.setColor(0, 0, 0, 1) self.leftBrow.setColor(0, 0, 0, 1) self.eyes.setTwoSided(1, 1) self.rightPupil.setTwoSided(1, 1) self.leftPupil.setTwoSided(1, 1) self.rightHighlight.setTwoSided(1, 1) self.leftHighlight.setTwoSided(1, 1) self.rightBrow.setTwoSided(1, 1) self.leftBrow.setTwoSided(1, 1) if self.forGui: self.rightHighlight.hide() self.leftHighlight.hide() if self.style[8]: self.eyesOpenTexture = loader.loadTexture('phase_4/maps/BeanEyeBoys2.jpg', 'phase_4/maps/BeanEyeBoys2_a.rgb') self.eyesClosedTexture = loader.loadTexture('phase_4/maps/BeanEyeBoysBlink.jpg', 'phase_4/maps/BeanEyeBoysBlink_a.rgb') else: self.eyesOpenTexture = loader.loadTexture('phase_4/maps/BeanEyeGirlsNew.jpg', 'phase_4/maps/BeanEyeGirlsNew_a.rgb') self.eyesClosedTexture = loader.loadTexture('phase_4/maps/BeanEyeGirlsBlinkNew.jpg', 'phase_4/maps/BeanEyeGirlsBlinkNew_a.rgb') self.eyesOpenTexture.setMinfilter(Texture.FTLinear) self.eyesOpenTexture.setMagfilter(Texture.FTLinear) self.eyesClosedTexture.setMinfilter(Texture.FTLinear) self.eyesClosedTexture.setMagfilter(Texture.FTLinear) self.eyesOpen() return None
def generatePet(self): self.loadModel('phase_4/models/char/TT_pets-mod') self.loadAnims({ 'toBeg': 'phase_5/models/char/TT_pets-intoBeg', 'beg': 'phase_5/models/char/TT_pets-beg', 'fromBeg': 'phase_5/models/char/TT_pets-begOut', 'backflip': 'phase_5/models/char/TT_pets-backflip', 'dance': 'phase_5/models/char/TT_pets-heal', 'toDig': 'phase_5/models/char/TT_pets-intoDig', 'dig': 'phase_5/models/char/TT_pets-dig', 'fromDig': 'phase_5/models/char/TT_pets-digToNeutral', 'disappear': 'phase_5/models/char/TT_pets-disappear', 'eat': 'phase_5.5/models/char/TT_pets-eat', 'jump': 'phase_5/models/char/TT_pets-jump', 'neutral': 'phase_4/models/char/TT_pets-neutral', 'neutralHappy': 'phase_4/models/char/TT_pets-neutralHappy', 'neutralSad': 'phase_4/models/char/TT_pets-neutral_sad', 'toPet': 'phase_5.5/models/char/TT_pets-petin', 'pet': 'phase_5.5/models/char/TT_pets-petloop', 'fromPet': 'phase_5.5/models/char/TT_pets-petend', 'playDead': 'phase_5/models/char/TT_pets-playdead', 'fromPlayDead': 'phase_5/models/char/TT_pets-deadend', 'reappear': 'phase_5/models/char/TT_pets-reappear', 'run': 'phase_5.5/models/char/TT_pets-run', 'rollover': 'phase_5/models/char/TT_pets-rollover', 'walkSad': 'phase_5.5/models/char/TT_pets-sadwalk', 'speak': 'phase_5/models/char/TT_pets-speak', 'swallow': 'phase_5.5/models/char/TT_pets-swallow', 'swim': 'phase_5.5/models/char/TT_pets-swim', 'toBall': 'phase_5.5/models/char/TT_pets-toBall', 'walk': 'phase_5.5/models/char/TT_pets-walk', 'walkHappy': 'phase_5.5/models/char/TT_pets-walkHappy' }) self.setHeight(2) color = None colorIndex = self.style[5] color = AllPetColors[colorIndex] self.color = color bodyType = self.style[4] body = self.find('**/body') tex = loader.loadTexture(BodyTextures[BodyTypes[bodyType]]) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) body.setTexture(tex, 1) body.setColor(color) leftFoot = self.find('**/leftFoot') rightFoot = self.find('**/rightFoot') texName = getFootTexture(bodyType) tex = loader.loadTexture(texName) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) leftFoot.setTexture(tex, 1) rightFoot.setTexture(tex, 1) leftFoot.setColor(color) rightFoot.setColor(color) for part in HeadParts + EarParts + NoseParts + TailParts: self.find('**/' + part).stash() colorScale = ColorScales[self.style[6]] partColor = self.amplifyColor(color, colorScale) headIndex = self.style[0] if headIndex != -1: head = self.find('**/@@' + HeadParts[headIndex]) head.setColor(partColor) head.unstash() earsIndex = self.style[1] if earsIndex != -1: ears = self.find('**/@@' + EarParts[earsIndex]) ears.setColor(partColor) texName = getEarTexture(bodyType, EarParts[earsIndex]) if texName: tex = loader.loadTexture(texName) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) ears.setTexture(tex, 1) ears.unstash() noseIndex = self.style[2] if noseIndex != -1: nose = self.find('**/@@' + NoseParts[noseIndex]) nose.setColor(partColor) nose.unstash() tailIndex = self.style[3] if tailIndex != -1: tail = self.find('**/@@' + TailParts[tailIndex]) tail.setColor(partColor) texName = TailTextures[TailParts[tailIndex]] if texName: if BodyTypes[bodyType] == 'giraffe': texName = GiraffeTail elif BodyTypes[bodyType] == 'leopard': texName = LeopardTail tex = loader.loadTexture(texName) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) tail.setTexture(tex, 1) tail.unstash() if not self.forGui: self.drawInFront('eyeWhites', 'body', 1) self.drawInFront('rightPupil', 'eyeWhites', 2) self.drawInFront('leftPupil', 'eyeWhites', 2) self.drawInFront('rightHighlight', 'rightPupil', 3) self.drawInFront('leftHighlight', 'leftPupil', 3) else: self.drawInFront('eyeWhites', 'body', -2) self.drawInFront('rightPupil', 'eyeWhites', -2) self.drawInFront('leftPupil', 'eyeWhites', -2) self.find('**/rightPupil').adjustAllPriorities(1) self.find('**/leftPupil').adjustAllPriorities(1) eyes = self.style[7] eyeColor = PetEyeColors[eyes] self.eyes = self.find('**/eyeWhites') self.rightPupil = self.find('**/rightPupil') self.leftPupil = self.find('**/leftPupil') self.rightHighlight = self.find('**/rightHighlight') self.leftHighlight = self.find('**/leftHighlight') self.rightBrow = self.find('**/rightBrow') self.leftBrow = self.find('**/leftBrow') self.eyes.setColor(1, 1, 1, 1) self.rightPupil.setColor(eyeColor, 2) self.leftPupil.setColor(eyeColor, 2) self.rightHighlight.setColor(1, 1, 1, 1) self.leftHighlight.setColor(1, 1, 1, 1) self.rightBrow.setColor(0, 0, 0, 1) self.leftBrow.setColor(0, 0, 0, 1) self.eyes.setTwoSided(1, 1) self.rightPupil.setTwoSided(1, 1) self.leftPupil.setTwoSided(1, 1) self.rightHighlight.setTwoSided(1, 1) self.leftHighlight.setTwoSided(1, 1) self.rightBrow.setTwoSided(1, 1) self.leftBrow.setTwoSided(1, 1) if self.forGui: self.rightHighlight.hide() self.leftHighlight.hide() if self.style[8]: self.eyesOpenTexture = loader.loadTexture( 'phase_4/maps/BeanEyeBoys2.jpg', 'phase_4/maps/BeanEyeBoys2_a.rgb') self.eyesClosedTexture = loader.loadTexture( 'phase_4/maps/BeanEyeBoysBlink.jpg', 'phase_4/maps/BeanEyeBoysBlink_a.rgb') else: self.eyesOpenTexture = loader.loadTexture( 'phase_4/maps/BeanEyeGirlsNew.jpg', 'phase_4/maps/BeanEyeGirlsNew_a.rgb') self.eyesClosedTexture = loader.loadTexture( 'phase_4/maps/BeanEyeGirlsBlinkNew.jpg', 'phase_4/maps/BeanEyeGirlsBlinkNew_a.rgb') self.eyesOpenTexture.setMinfilter(Texture.FTLinear) self.eyesOpenTexture.setMagfilter(Texture.FTLinear) self.eyesClosedTexture.setMinfilter(Texture.FTLinear) self.eyesClosedTexture.setMagfilter(Texture.FTLinear) self.eyesOpen() return None
def generatePet(self): """ create a pet from dna """ self.loadModel('phase_4/models/char/TT_pets-mod') self.loadAnims({ 'toBeg': 'phase_5/models/char/TT_pets-intoBeg', 'beg': 'phase_5/models/char/TT_pets-beg', 'fromBeg': 'phase_5/models/char/TT_pets-begOut', 'backflip': 'phase_5/models/char/TT_pets-backflip', 'dance': 'phase_5/models/char/TT_pets-heal', 'toDig': 'phase_5/models/char/TT_pets-intoDig', 'dig': 'phase_5/models/char/TT_pets-dig', 'fromDig': 'phase_5/models/char/TT_pets-digToNeutral', 'disappear': 'phase_5/models/char/TT_pets-disappear', 'eat': 'phase_5.5/models/char/TT_pets-eat', 'jump': 'phase_5/models/char/TT_pets-jump', 'neutral': 'phase_4/models/char/TT_pets-neutral', 'neutralHappy': 'phase_4/models/char/TT_pets-neutralHappy', 'neutralSad': 'phase_4/models/char/TT_pets-neutral_sad', 'toPet': 'phase_5.5/models/char/TT_pets-petin', 'pet': 'phase_5.5/models/char/TT_pets-petloop', 'fromPet': 'phase_5.5/models/char/TT_pets-petend', 'playDead': 'phase_5/models/char/TT_pets-playdead', 'fromPlayDead': 'phase_5/models/char/TT_pets-deadend', 'reappear': 'phase_5/models/char/TT_pets-reappear', 'run': 'phase_5.5/models/char/TT_pets-run', 'rollover': 'phase_5/models/char/TT_pets-rollover', 'walkSad': 'phase_5.5/models/char/TT_pets-sadwalk', 'speak': 'phase_5/models/char/TT_pets-speak', 'swallow': 'phase_5.5/models/char/TT_pets-swallow', 'swim': 'phase_5.5/models/char/TT_pets-swim', 'toBall': 'phase_5.5/models/char/TT_pets-toBall', 'walk': 'phase_5.5/models/char/TT_pets-walk', 'walkHappy': 'phase_5.5/models/char/TT_pets-walkHappy', }) self.setHeight(2) # name is set by user or subclass # determine the color color = None colorIndex = self.style[5] color = AllPetColors[colorIndex] # remember this for blinks self.color = color # set the body and foot texture bodyType = self.style[4] assert (bodyType < len(BodyTypes)) body = self.find("**/body") tex = loader.loadTexture(BodyTextures[BodyTypes[bodyType]]) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) body.setTexture(tex, 1) body.setColor(color) # set the appropriate foot texture leftFoot = self.find("**/leftFoot") rightFoot = self.find("**/rightFoot") texName = getFootTexture(bodyType) tex = loader.loadTexture(texName) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) leftFoot.setTexture(tex, 1) rightFoot.setTexture(tex, 1) leftFoot.setColor(color) rightFoot.setColor(color) # stash all parts for part in HeadParts + EarParts + NoseParts + TailParts: self.find("**/" + part).stash() # # unstash the appropriate parts # # scale the color slightly to accent misc. body parts colorScale = ColorScales[self.style[6]] partColor = self.amplifyColor(color, colorScale) headIndex = self.style[0] # if we have a head decoration if headIndex != -1: assert (headIndex < len(HeadParts)) head = self.find("**/@@" + HeadParts[headIndex]) head.setColor(partColor) head.unstash() earsIndex = self.style[1] # if we have ears if earsIndex != -1: assert (earsIndex < len(EarParts)) ears = self.find("**/@@" + EarParts[earsIndex]) ears.setColor(partColor) texName = getEarTexture(bodyType, EarParts[earsIndex]) if texName: tex = loader.loadTexture(texName) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) ears.setTexture(tex, 1) ears.unstash() noseIndex = self.style[2] # if we have a nose if noseIndex != -1: assert (noseIndex < len(NoseParts)) nose = self.find("**/@@" + NoseParts[noseIndex]) nose.setColor(partColor) nose.unstash() tailIndex = self.style[3] # if we have a tail if tailIndex != -1: assert (tailIndex < len(TailParts)) tail = self.find("**/@@" + TailParts[tailIndex]) tail.setColor(partColor) texName = TailTextures[TailParts[tailIndex]] if texName: # check to see if we have a special tail texture if BodyTypes[bodyType] == 'giraffe': texName = GiraffeTail elif BodyTypes[bodyType] == 'leopard': texName = LeopardTail tex = loader.loadTexture(texName) tex.setMinfilter(Texture.FTLinear) tex.setMagfilter(Texture.FTLinear) tail.setTexture(tex, 1) tail.unstash() # Reorder the eyes so they don't do any Z-fighting with the # head or with each other. if not self.forGui: # In the 3-D world, we can fix the eyes by putting them # all in the fixed bin. self.drawInFront("eyeWhites", "body", 1) self.drawInFront("rightPupil", "eyeWhites", 2) self.drawInFront("leftPupil", "eyeWhites", 2) self.drawInFront("rightHighlight", "rightPupil", 3) self.drawInFront("leftHighlight", "leftPupil", 3) else: # In the 2-D panel, we have to reparent them. This also # means we have to elevate the priorities on the pupils so # they don't inherit the wrong texture from above. self.drawInFront("eyeWhites", "body", -2) self.drawInFront("rightPupil", "eyeWhites", -2) self.drawInFront("leftPupil", "eyeWhites", -2) self.find('**/rightPupil').adjustAllPriorities(1) self.find('**/leftPupil').adjustAllPriorities(1) # set eye color eyes = self.style[7] eyeColor = PetEyeColors[eyes] self.eyes = self.find("**/eyeWhites") self.rightPupil = self.find("**/rightPupil") self.leftPupil = self.find("**/leftPupil") self.rightHighlight = self.find("**/rightHighlight") self.leftHighlight = self.find("**/leftHighlight") self.rightBrow = self.find("**/rightBrow") self.leftBrow = self.find("**/leftBrow") self.eyes.setColor(1, 1, 1, 1) # we need to increase priority on eyeColor so pupils show self.rightPupil.setColor(eyeColor, 2) self.leftPupil.setColor(eyeColor, 2) self.rightHighlight.setColor(1, 1, 1, 1) self.leftHighlight.setColor(1, 1, 1, 1) self.rightBrow.setColor(0, 0, 0, 1) self.leftBrow.setColor(0, 0, 0, 1) self.eyes.setTwoSided(1, 1) self.rightPupil.setTwoSided(1, 1) self.leftPupil.setTwoSided(1, 1) self.rightHighlight.setTwoSided(1, 1) self.leftHighlight.setTwoSided(1, 1) self.rightBrow.setTwoSided(1, 1) self.leftBrow.setTwoSided(1, 1) if self.forGui: # HACK: highlights look awful in the GUI # There is probably a way to make them look better # but for know. Bye bye... self.rightHighlight.hide() self.leftHighlight.hide() # set eye texture based on gender if self.style[8]: self.eyesOpenTexture = loader.loadTexture( 'phase_4/maps/BeanEyeBoys2.jpg', 'phase_4/maps/BeanEyeBoys2_a.rgb') self.eyesClosedTexture = loader.loadTexture( 'phase_4/maps/BeanEyeBoysBlink.jpg', 'phase_4/maps/BeanEyeBoysBlink_a.rgb', ) else: self.eyesOpenTexture = loader.loadTexture( 'phase_4/maps/BeanEyeGirlsNew.jpg', 'phase_4/maps/BeanEyeGirlsNew_a.rgb', ) self.eyesClosedTexture = loader.loadTexture( 'phase_4/maps/BeanEyeGirlsBlinkNew.jpg', 'phase_4/maps/BeanEyeGirlsBlinkNew_a.rgb') self.eyesOpenTexture.setMinfilter(Texture.FTLinear) self.eyesOpenTexture.setMagfilter(Texture.FTLinear) self.eyesClosedTexture.setMinfilter(Texture.FTLinear) self.eyesClosedTexture.setMagfilter(Texture.FTLinear) self.eyesOpen()