def __init__(self, vehicle, engineState):
        if _ENABLE_VALUE_TRACKER or _ENABLE_VALUE_TRACKER_ENGINE or _ENABLE_PIXIE_TRACKER:
            from helpers.ValueTracker import ValueTracker
            self.__vt = ValueTracker.instance()
        else:
            self.__vt = None
        self.__selectors = []
        self.__variableArgs = dict()
        self.__vehicle = vehicle
        self.__engineState = engineState
        self.__prevWaterHeight = None
        self.__gearUP = False
        self.__engineState.setGearUpCallback(self.__gearUp)
        args = {}
        args['chassis'] = {}
        args['chassis']['model'] = self.__vehicle.appearance.compoundModel
        args['hull'] = {}
        args['hull']['model'] = self.__vehicle.appearance.compoundModel
        args['drawOrderBase'] = CustomEffectManager._DRAW_ORDER_IDX
        for desc in self.__vehicle.typeDescriptor.hull['customEffects']:
            if desc is not None:
                selector = desc.create(args)
                if selector is not None:
                    self.__selectors.append(selector)

        for desc in self.__vehicle.typeDescriptor.chassis['customEffects']:
            if desc is not None:
                selector = desc.create(args)
                if selector is not None:
                    self.__selectors.append(selector)

        self.__createChassisCenterNodes()
        PixieCache.incref()
        return
    def destroy(self):
        for effectSelector in self.__selectors:
            effectSelector.destroy()

        if self.__vehicle.isPlayer:
            PixieCache.clear()
        self.__engineState = None
        return
    def destroy(self):
        if self.__scrollUpdateID is None:
            return
        else:
            for effectSelector in self.__selectors:
                effectSelector.destroy()

            PixieCache.decref()
            BigWorld.cancelCallback(self.__scrollUpdateID)
            self.__scrollUpdateID = None
            self.__engineState.delGearUpCallback()
            self.__engineState = None
            if _ENABLE_PIXIE_TRACKER and self.__vehicle.isPlayerVehicle:
                self.__vt.addValue2('Pixie Count', PixieCache.pixiesCount)
            return
    def destroy(self):
        if self.__engineState is None:
            return
        else:
            for effectSelector in self.__selectors:
                effectSelector.destroy()

            PixieCache.decref()
            self.__engineState.delGearUpCallback()
            self.__engineState = None
            if _ENABLE_PIXIE_TRACKER and self.__vehicle.isPlayerVehicle:
                self.__vt.addValue2('Pixie Count', PixieCache.pixiesCount)
            if _ENABLE_VALUE_TRACKER or _ENABLE_VALUE_TRACKER_ENGINE or _ENABLE_PIXIE_TRACKER:
                self.__vt = None
            return
    def destroy(self):
        self.deactivate()
        for effectSelector in self.__selectors:
            effectSelector.destroy()

        PixieCache.decref()
        self.__engineState.delGearUpCallback()
        self.__trailParticleNodes = None
        self.__selectors = None
        self.__engineState = None
        self.__appearance = None
        self.__variableArgs = None
        if _ENABLE_PIXIE_TRACKER:
            self.__vt.addValue2('Pixie Count', PixieCache.pixiesCount)
        if _ENABLE_VALUE_TRACKER or _ENABLE_VALUE_TRACKER_ENGINE or _ENABLE_PIXIE_TRACKER:
            self.__vt = None
        return
    def __init__(self, vehicle, engineState):
        if _ENABLE_VALUE_TRACKER or _ENABLE_VALUE_TRACKER_ENGINE or _ENABLE_PIXIE_TRACKER:
            from helpers.ValueTracker import ValueTracker
            self.__vt = ValueTracker.instance()
        else:
            self.__vt = None
        self.__selectors = []
        self.__variableArgs = dict()
        self.__vehicle = vehicle
        self.__engineState = engineState
        self.__prevWaterHeight = None
        self.__gearUP = False
        self.__engineState.setGearUpCallback(self.__gearUp)
        weight = self.__vehicle.typeDescriptor.physics['weight']
        self.__leftScroll = TrackScrollingFilter(weight)
        self.__rightScroll = TrackScrollingFilter(weight)
        self.__scrollUpdateID = BigWorld.callback(self._SCROLL_TICK,
                                                  self.__scrollTick)
        args = {}
        args['chassis'] = {}
        args['chassis']['model'] = self.__vehicle.appearance.modelsDesc[
            'chassis']['model']
        args['hull'] = {}
        args['hull']['model'] = self.__vehicle.appearance.modelsDesc['hull'][
            'model']
        args['drawOrderBase'] = CustomEffectManager._DRAW_ORDER_IDX
        for desc in self.__vehicle.typeDescriptor.hull['customEffects']:
            if desc is not None:
                selector = desc.create(args)
                if selector is not None:
                    self.__selectors.append(selector)

        for desc in self.__vehicle.typeDescriptor.chassis['customEffects']:
            if desc is not None:
                selector = desc.create(args)
                if selector is not None:
                    self.__selectors.append(selector)

        self.__createChassisCenterNodes()
        PixieCache.incref()
        return
    def __init__(self, appearance):
        if _ENABLE_VALUE_TRACKER or _ENABLE_VALUE_TRACKER_ENGINE or _ENABLE_PIXIE_TRACKER:
            from helpers.ValueTracker import ValueTracker
            self.__vt = ValueTracker.instance()
        else:
            self.__vt = None
        self.__selectors = []
        self.__variableArgs = dict()
        self.__vehicle = None
        self.__appearance = appearance
        self.__engineState = appearance.detailedEngineState
        self.__prevWaterHeight = None
        self.__gearUP = False
        self.__trailParticleNodes = None
        self.__engineState.setGearUpCallback(self.__gearUp)
        args = {}
        args['chassis'] = {}
        args['chassis']['model'] = appearance.compoundModel
        args['hull'] = {}
        args['hull']['model'] = appearance.compoundModel
        args['drawOrderBase'] = CustomEffectManager._DRAW_ORDER_IDX
        for desc in appearance.typeDescriptor.hull['customEffects']:
            if desc is not None:
                selector = desc.create(args)
                if selector is not None:
                    self.__selectors.append(selector)

        for desc in appearance.typeDescriptor.chassis['customEffects']:
            if desc is not None:
                selector = desc.create(args)
                if selector is not None:
                    self.__selectors.append(selector)

        self.__createChassisCenterNodes()
        PixieCache.incref()
        return