class WodPlaceable(util.BlueClassNotifyWrap('trinity.WodPlaceable'), graphicWrappers.TrinityTransformMatrixMixinWrapper):
    __guid__ = 'graphicWrappers.WodPlaceable'

    @staticmethod
    def Wrap(triObject, resPath):
        WodPlaceable(triObject)
        triObject.AddNotify('transform', triObject._TransformChange)
        return triObject

    @staticmethod
    def ConvertToInterior(triObject, resPath):
        returnObject = trinity.Tr2InteriorPlaceable()
        returnObject.placeableResPath = triObject.placeableResPath
        return returnObject

    def AddToScene(self, scene):
        scene.AddPlaceableToScene(self)

    def RemoveFromScene(self, scene):
        scene.RemovePlaceableFromScene(self)

    def _TransformChange(self, transform):
        self.OnTransformChange()

    def OnTransformChange(self):
        """
        Called back on a transform change
        """
        pass
Example #2
0
class Tr2InteriorBoxLight(
        util.BlueClassNotifyWrap('trinity.Tr2InteriorBoxLight')):
    __guid__ = 'graphicWrappers.Tr2InteriorBoxLight'

    @staticmethod
    def Wrap(triObject, resPath):
        Tr2InteriorBoxLight(triObject)
        triObject.AddNotify('color', triObject._TransformChange)
        triObject.AddNotify('rotation', triObject._TransformChange)
        triObject.AddNotify('transform', triObject._TransformChange)
        triObject.AddNotify('falloff', triObject._TransformChange)
        triObject.scene = None
        return triObject

    def AddToScene(self, scene):
        if self.scene and self.scene():
            scene.RemoveLight(self.scene())
        scene.AddLight(self)
        self.scene = weakref.ref(scene)

    def RemoveFromScene(self, scene):
        scene.RemoveLight(self)
        self.scene = None

    def _TransformChange(self, transform):
        self.OnTransformChange()

    def OnTransformChange(self):
        pass

    def SetPosition(self, position):
        self.position = position

    def GetPosition(self):
        return self.position

    def GetRotationYawPitchRoll(self):
        return geo2.QuaternionRotationGetYawPitchRoll(self.rotation)

    def SetRotationYawPitchRoll(self, ypr):
        self.rotation = geo2.QuaternionRotationSetYawPitchRoll(*ypr)

    def SetScaling(self, scaling):
        self.scaling = scaling

    def GetScaling(self):
        return self.scaling

    def GetColor(self):
        return self.color[:3]

    def SetColor(self, color):
        self.color = (color[0], color[1], color[2], 1)

    def GetFalloff(self):
        return self.falloff

    def SetFalloff(self, falloff):
        self.falloff = falloff
class Tr2InteriorPhysicalPortal(
        util.BlueClassNotifyWrap('trinity.Tr2InteriorPhysicalPortal')):
    __guid__ = 'graphicWrappers.Tr2InteriorPhysicalPortal'

    @staticmethod
    def Wrap(triObject, resPath):
        Tr2InteriorPhysicalPortal(triObject)
        triObject.AddNotify('position', triObject._TransformChange)
        triObject.AddNotify('rotation', triObject._TransformChange)
        triObject.AddNotify('maxBounds', triObject._TransformChange)
        triObject.AddNotify('minBounds', triObject._TransformChange)
        triObject.scene = None
        return triObject

    def AddToScene(self, scene):
        scene.AddPhysicalPortal(self)
        self.scene = weakref.ref(scene)

    def RemoveFromScene(self, scene):
        scene.RemovePhysicalPortal(self)
        self.scene = None

    def _TransformChange(self, transform):
        self.OnTransformChange()

    def OnTransformChange(self):
        pass

    def GetPosition(self):
        return self.position

    def SetPosition(self, pos):
        self.position = pos

    def GetRotationYawPitchRoll(self):
        return geo2.QuaternionRotationGetYawPitchRoll(self.rotation)

    def SetRotationYawPitchRoll(self, ypr):
        self.rotation = geo2.QuaternionRotationSetYawPitchRoll(*ypr)

    def GetScale(self):
        return (self.maxBounds[0], self.maxBounds[1], self.maxBounds[2])

    def SetScale(self, scale):
        self.maxBounds = scale
        self.minBounds = (-scale[0], -scale[1], -scale[2])

    def GetName(self):
        return self.name

    def SetName(self, name):
        self.name = str(name)

    def GetBoundingBoxInLocalSpace(self):
        min = trinity.TriVector(*self.minBounds)
        max = trinity.TriVector(*self.maxBounds)
        return (min, max)
Example #4
0
class Tr2InteriorLightSource(
        util.BlueClassNotifyWrap('trinity.Tr2InteriorLightSource')):
    __guid__ = 'graphicWrappers.Tr2InteriorLightSource'
    _alwaysEditableMembers = ['renderDebugInfo', 'renderDebugType']

    @staticmethod
    def Wrap(triObject, resPath):
        Tr2InteriorLightSource(triObject)
        triObject.AddNotify('position', triObject._TransformChange)
        triObject.AddNotify('radius', triObject._TransformChange)
        triObject.AddNotify('color', triObject._TransformChange)
        triObject.AddNotify('falloff', triObject._TransformChange)
        triObject.scene = None
        return triObject

    def AddToScene(self, scene):
        scene.AddLight(self)
        self.scene = weakref.ref(scene)

    def RemoveFromScene(self, scene):
        scene.RemoveLight(self)
        self.scene = None

    def _TransformChange(self, transform):
        self.OnTransformChange()

    def OnTransformChange(self):
        """
        Called back on a transform change
        """
        pass

    def GetPosition(self):
        return self.position

    def SetPosition(self, pos):
        self.position = pos

    def GetColor(self):
        return self.color[:3]

    def SetColor(self, color):
        self.color = (color[0], color[1], color[2], 1)

    def GetRadius(self):
        return self.radius

    def SetRadius(self, radius):
        self.radius = radius

    def GetFalloff(self):
        return self.falloff

    def SetFalloff(self, falloff):
        self.falloff = falloff
Example #5
0
class Tr2InteriorOccluder(util.BlueClassNotifyWrap('trinity.Tr2InteriorOccluder'), graphicWrappers.TrinityTransformMatrixMixinWrapper):
    __guid__ = 'graphicWrappers.Tr2InteriorOccluder'

    @staticmethod
    def Wrap(triObject, resPath):
        Tr2InteriorOccluder(triObject)
        triObject.InitTransformMatrixMixinWrapper()
        triObject.AddNotify('transform', triObject._TransformChange)
        triObject.cellName = ''
        triObject.scene = None
        return triObject

    def SetCell(self, cellName):
        if self.cellName != cellName:
            self.cellName = cellName
            if self.scene and self.scene():
                self.AddToScene(self.scene())

    def AddToScene(self, scene):
        if self.scene and self.scene():
            scene.RemoveOccluder(self)
        scene.AddOccluder(self, self.cellName)
        self.scene = weakref.ref(scene)

    def RemoveFromScene(self, scene):
        scene.RemoveOccluder(self)
        self.scene = None
        self.cellName = None

    def _TransformChange(self, transform):
        self.OnTransformChange()

    def OnTransformChange(self):
        pass

    def OnPositionChange(self):
        pass

    def OnRotationChange(self):
        pass

    def OnScaleChange(self):
        """
        # TODO: Ensure we don't get negative scale
        xvec = geo2.Vector(self.transform[0][0], self.transform[0][1], self.transform[0][2])
        yvec = geo2.Vector(self.transform[1][0], self.transform[1][1], self.transform[1][2])
        zvec = geo2.Vector(self.transform[2][0], self.transform[2][1], self.transform[2][2])
        
        lx = xvec.Vec3Length(xvec)
        ly = xvec.Vec3Length(xvec)
        lz = xvec.Vec3Length(xvec)
        print lx, ly, lz
        # TODO: Ensure we don't get negative scale
        """
        pass
class Tr2IntSkinnedObject(
        util.BlueClassNotifyWrap('trinity.Tr2IntSkinnedObject'),
        WodExtSkinnedObject):
    __guid__ = 'graphicWrappers.Tr2IntSkinnedObject'

    @staticmethod
    def Wrap(triObject, resPath):
        Tr2IntSkinnedObject(triObject)
        triObject.InitTransformMatrixMixinWrapper()
        triObject.AddNotify('transform', triObject._TransformChange)
        return triObject
Example #7
0
class WodExtSkinnedObject(
        util.BlueClassNotifyWrap('trinity.WodExtSkinnedObject'),
        TrinityTransformMatrixMixinWrapper):
    __guid__ = 'graphicWrappers.WodExtSkinnedObject'

    @staticmethod
    def Wrap(triObject, resPath):
        WodExtSkinnedObject(triObject)
        triObject.AddNotify('transform', triObject._TransformChange)
        return triObject

    @staticmethod
    def ConvertToInterior(triObject, resPath):
        returnObject = trinity.Tr2IntSkinnedObject()
        returnObject.visualModel = triObject.visualModel
        returnObject.animationUpdater = triObject.animationUpdater
        returnObject.lowDetailModel = triObject.lowDetailModel
        returnObject.mediumDetailModel = triObject.mediumDetailModel
        returnObject.highDetailModel = triObject.highDetailModel
        return returnObject

    def AddToScene(self, scene):
        scene.AddAvatarToScene(self)
        if hasattr(self.animationUpdater, 'grannyRes'):

            def PlayAnimation():
                while not (self.animationUpdater.grannyRes.isGood
                           and self.animationUpdater.grannyRes.isPrepared):
                    blue.synchro.SleepWallclock(50)

                if self.animationUpdater.grannyRes.animationCount:
                    clipName = self.animationUpdater.grannyRes.GetAnimationName(
                        0)
                    self.animationUpdater.PlayAnimationEx(clipName, 0, 0, 1)

            uthread.new(
                PlayAnimation
            ).context = 'graphicWrappers.WodExtSkinnedObject::PlayAnimation'

    def RemoveFromScene(self, scene):
        scene.RemoveAvatarFromScene(self)

    def _TransformChange(self, transform):
        self.OnTransformChange()

    def OnTransformChange(self):
        """
        Called back on a transform change
        """
        pass
Example #8
0
class Tr2InteriorProbeVolume(
        util.BlueClassNotifyWrap('trinity.Tr2InteriorProbeVolume'),
        graphicWrappers.TrinityTransformMatrixMixinWrapper):
    __guid__ = 'graphicWrappers.Tr2InteriorProbeVolume'

    @staticmethod
    def Wrap(triObject, resPath):
        Tr2InteriorProbeVolume(triObject)
        triObject.InitTransformMatrixMixinWrapper()
        triObject.AddNotify('transform', triObject._TransformChange)
        triObject.cellName = ''
        triObject.scene = None
        return triObject

    def SetCell(self, cellName):
        if self.cellName != cellName:
            if self.scene and self.scene():
                self.scene().RemoveProbeVolume(self)
            self.cellName = cellName
            if self.scene and self.scene():
                self.AddToScene(self.scene())

    def AddToScene(self, scene):
        if self.scene and self.scene():
            scene.RemoveProbeVolume(self)
        scene.AddProbeVolume(self, self.cellName)
        self.scene = weakref.ref(scene)

    def RemoveFromScene(self, scene):
        scene.RemoveProbeVolume(self)
        self.scene = None

    def _TransformChange(self, transform):
        self.OnTransformChange()

    def OnTransformChange(self):
        pass

    def OnPositionChange(self):
        pass

    def OnRotationChange(self):
        pass

    def OnScaleChange(self):
        pass

    def SetResolution(self, res):
        self.resolutionX, self.resolutionY, self.resolutionZ = res
class Tr2InteriorPlaceable(
        util.BlueClassNotifyWrap('trinity.Tr2InteriorPlaceable'),
        graphicWrappers.TrinityTransformMatrixMixinWrapper):
    __guid__ = 'graphicWrappers.Tr2InteriorPlaceable'

    @staticmethod
    def Wrap(triObject, resPath):
        Tr2InteriorPlaceable(triObject)
        triObject.InitTransformMatrixMixinWrapper()
        triObject.AddNotify('transform', triObject._TransformChange)
        triObject.scene = None
        return triObject

    def AddToScene(self, scene):
        if self.scene and self.scene():
            self.RemoveFromScene(self.scene())
        scene.AddDynamicToScene(self)
        self.scene = weakref.ref(scene)

    def RemoveFromScene(self, scene):
        scene.RemoveDynamicFromScene(self)
        self.scene = None

    def _TransformChange(self, transform):
        self.InitTransformMatrixMixinWrapper()
        self.OnTransformChange()

    def IsLoading(self):
        if self.placeableRes:
            if self.placeableRes.visualModel and util.IsTr2ModelLoading(
                    self.placeableRes.visualModel):
                return True
        return False

    def OnTransformChange(self):
        pass

    def OnPositionChange(self):
        pass

    def OnRotationChange(self):
        pass

    def OnScaleChange(self):
        pass
class Tr2InteriorStatic(util.BlueClassNotifyWrap('trinity.Tr2InteriorStatic'),
                        graphicWrappers.TrinityTranslationRotationMixinWrapper
                        ):
    __guid__ = 'graphicWrappers.Tr2InteriorStatic'

    @staticmethod
    def Wrap(triObject, resPath):
        Tr2InteriorStatic(triObject)
        triObject.AddNotify('worldPosition', triObject._PositionChange)
        triObject.AddNotify('rotation', triObject._RotationChange)
        triObject.cellName = '0'
        triObject.systemName = 0
        triObject.scene = None
        triObject.resPath = resPath
        return triObject

    def SetCell(self, cellName):
        if self.cellName != cellName:
            self.cellName = cellName
            if self.scene and self.scene():
                self.AddToScene(self.scene())

    def SetSystem(self, systemName):
        if self.systemName != systemName:
            self.systemName = systemName
            if self.scene and self.scene():
                self.AddToScene(self.scene())

    def AddToScene(self, scene):
        if self.scene and self.scene():
            self.RemoveFromScene(scene)
        scene.AddStatic(self, self.cellName, self.systemName)
        self.scene = weakref.ref(scene)
        blue.resMan.Wait()
        self.BindLowLevelShaders()

    def RemoveFromScene(self, scene):
        scene.RemoveStatic(self)
        self.scene = None

    def OnTransformChange(self):
        pass

    def _PositionChange(self, pos):
        self.OnPositionChange()

    def OnPositionChange(self):
        pass

    def _RotationChange(self, rot):
        self.OnRotationChange()

    def OnRotationChange(self):
        pass

    def OnScaleChange(self):
        pass

    def GetBoundingBoxInLocalSpace(self):
        if self.geometry.meshCount > 0:
            min, max = self.geometry.GetBoundingBox(0)
            for i in xrange(self.geometry.meshCount - 1):
                cMin, cMax = self.geometry.GetBoundingBox(i + 1)
                min.Minimize(cMin)
                max.Maximize(cMax)

            return (min, max)
        return (trinity.TriVector(), trinity.TriVector())

    def IsLoading(self):
        for area in self.enlightenAreas:
            if util.IsAreaLoading(area):
                return True

        for mesh in self.detailMeshes:
            if util.IsTr2MeshLoading(mesh):
                return True

        return False
class Tr2InteriorCylinderLight(
        util.BlueClassNotifyWrap('trinity.Tr2InteriorCylinderLight')):
    """
    Wrapper for trinity interior cylinder light object.
    """
    __guid__ = 'graphicWrappers.Tr2InteriorCylinderLight'

    @staticmethod
    def Wrap(triObject, resPath):
        """
        Wraps trinity object.
        """
        Tr2InteriorCylinderLight(triObject)
        triObject.scene = None
        return triObject

    def AddToScene(self, scene):
        """
        Adds light source to the scene.
        """
        if self.scene and self.scene():
            scene.RemoveLight(self.scene())
        scene.AddLight(self)
        self.scene = weakref.ref(scene)

    def RemoveFromScene(self, scene):
        """
        Removes light source from the scene.
        """
        scene.RemoveLight(self)
        self.scene = None

    def _TransformChange(self, transform):
        """
        Called back on a transform change
        """
        self.OnTransformChange()

    def OnTransformChange(self):
        """
        Called back on a transform change
        """
        pass

    def SetPosition(self, position):
        """
        Assigns new position to the light source.
        """
        self.position = position

    def GetPosition(self):
        """
        Returns light source position.
        """
        return self.position

    def GetRotationYawPitchRoll(self):
        """
        Returns light source rotation as Euler angles.
        """
        return geo2.QuaternionRotationGetYawPitchRoll(self.rotation)

    def SetRotationYawPitchRoll(self, ypr):
        """
        Assigns light source rotation passed as Euler angles.
        """
        self.rotation = geo2.QuaternionRotationSetYawPitchRoll(*ypr)

    def GetRadius(self):
        """
        Returns light source radius.
        """
        return self.radius

    def SetRadius(self, radius):
        """
        Assigns light source radius.
        """
        self.radius = radius

    def GetLength(self):
        """
        Returns light source length.
        """
        return self.length

    def SetLength(self, length):
        """
        Assigns light source length.
        """
        self.length = length

    def GetColor(self):
        """
        Returns light source color.
        """
        return self.color[:3]

    def SetColor(self, color):
        """
        Assigns light source color.
        """
        self.color = (color[0], color[1], color[2], 1)

    def GetFalloff(self):
        """
        Returns light source falloff power.
        """
        return self.falloff

    def SetFalloff(self, falloff):
        """
        Assigns light source falloff power.
        """
        self.falloff = falloff