NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

portraitMaker.py (4309B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\login\charcreation_new\portraitMaker.py
      2 import blue
      3 import charactercreator.const as ccConst
      4 import trinity
      5 from eve.client.script.ui.camera.charCreationCamera import CharCreationCamera
      6 
      7 class PortraitMaker(object):
      8 
      9     def __init__(self, camera, backdropPath):
     10         self.camera = camera
     11         self.backdropPath = backdropPath
     12 
     13     def GetPortraitTexture(self, portraitID):
     14         size = 512
     15         sceneManager = sm.GetService('sceneManager')
     16         scene = sceneManager.GetActiveScene()
     17         backdropPath = self.backdropPath
     18         if backdropPath:
     19             backdropScene = trinity.Tr2Sprite2dScene()
     20             backdropScene.displayWidth = size
     21             backdropScene.displayHeight = size
     22             sprite = trinity.Tr2Sprite2d()
     23             sprite.texturePrimary = trinity.Tr2Sprite2dTexture()
     24             sprite.texturePrimary.resPath = backdropPath
     25             sprite.displayWidth = size
     26             sprite.displayHeight = size
     27             backdropScene.children.append(sprite)
     28         target = trinity.Tr2RenderTarget(size, size, 1, trinity.PIXEL_FORMAT.B8G8R8X8_UNORM)
     29         depth = trinity.Tr2DepthStencil(size, size, trinity.DEPTH_STENCIL_FORMAT.AUTO)
     30         renderJob = trinity.CreateRenderJob('TakeSnapShot')
     31         renderJob.PushRenderTarget(target)
     32         renderJob.PushDepthStencil(depth)
     33         projection = trinity.TriProjection()
     34         projection.PerspectiveFov(self.camera.fieldOfView, 1, 0.1, 5.0)
     35         view = self.camera.viewMatrix
     36         renderJob.Clear((0.0, 0.0, 0.0, 1.0), 1.0)
     37         renderJob.SetProjection(projection)
     38         renderJob.SetView(view)
     39         if backdropPath:
     40             renderJob.Update(backdropScene)
     41             renderJob.RenderScene(backdropScene)
     42         renderJob.RenderScene(scene)
     43         trinity.WaitForResourceLoads()
     44         renderJob.PopDepthStencil()
     45         renderJob.PopRenderTarget()
     46         renderJob.ScheduleOnce()
     47         renderJob.WaitForFinish()
     48         filename = self.GetPortraitSnapshotPath(portraitID)
     49         trinity.Tr2HostBitmap(target).Save(filename)
     50         path = 'cache:/Pictures/Portraits/PortraitSnapshot_%s_%s.jpg' % (portraitID, session.userid)
     51         blue.motherLode.Delete(path)
     52         tex = blue.resMan.GetResource(path, 'atlas')
     53         return tex
     54 
     55     def GetPortraitSnapshotPath(self, portraitID):
     56         return blue.paths.ResolvePathForWriting(u'cache:/Pictures/Portraits/PortraitSnapshot_%s_%s.jpg' % (portraitID, session.userid))
     57 
     58 
     59 class PortraitCameraConfigurator:
     60 
     61     def SetupPortraitCamera(self, camera, avatar, cameraPos = None, storedPortraitCameraSettings = None):
     62         self.camera = camera
     63         if self.camera is None:
     64             self.camera = CharCreationCamera(avatar, ccConst.CAMERA_MODE_PORTRAIT)
     65             self.SetupCameraUpdateJob()
     66         else:
     67             self.camera.ToggleMode(ccConst.CAMERA_MODE_PORTRAIT, avatar=avatar, transformTime=0)
     68         if cameraPos:
     69             self.camera.PlacePortraitCamera(self.cameraPos, self.cameraPoi)
     70             xFactor, yFactor = self.camera.GetCorrectCameraXandYFactors(self.cameraPos, self.cameraPoi)
     71             self.camera.xFactor = self.camera.xTarget = xFactor
     72             self.camera.yFactor = self.camera.yTarget = yFactor
     73         if storedPortraitCameraSettings:
     74             self.camera.SetPointOfInterest(self.storedPortraitCameraSettings['poi'])
     75             self.camera.pitch = self.storedPortraitCameraSettings['pitch']
     76             self.camera.yaw = self.storedPortraitCameraSettings['yaw']
     77             self.camera.distance = self.storedPortraitCameraSettings['distance']
     78             self.camera.xFactor = self.storedPortraitCameraSettings['xFactor']
     79             self.camera.yFactor = self.storedPortraitCameraSettings['yFactor']
     80             self.camera.fieldOfView = self.storedPortraitCameraSettings['fieldOfView']
     81 
     82     def RevertToNormalCamera(self, camera, avatar):
     83         self.camera = camera
     84         self.camera.ToggleMode(ccConst.CAMERA_MODE_DEFAULT, avatar=avatar)
     85         self.camera.fieldOfView = 0.3
     86         self.camera.distance = 8.0
     87         self.camera.frontClip = 0.5
     88         self.camera.backclip = 100.0
     89         self.camera.SetPointOfInterest((0.0, self.camera.avatarEyeHeight / 2.0, 0.0))