diff --git a/camera.py b/camera.py index e72f334..c1af010 100644 --- a/camera.py +++ b/camera.py @@ -84,7 +84,7 @@ class Camera: self.oscClient = oscClient self.additionalPictures = 0 # How many additional pictures to take self.addPicsMinGap = 0 # How long to wait between multi-shot batches - self._cameraEnabled = False + self._lastMode = 0 self._newPictureObserver = createNewPictureObserver(self._newPicture) self._multiPictureOngoing = False self._onEnabledCallback = onCameraEnabled @@ -103,6 +103,10 @@ class Camera: def _newPicture(self, _, timeGap: float): if self._multiPictureOngoing: return + + # Don't perform multishot in print mode + if self._lastMode == 5: + return if timeGap < self.addPicsMinGap: return @@ -119,12 +123,15 @@ class Camera: time.sleep(0.5) self._multiPictureOngoing = False - def _onModeChange(self, _: str, mode: int): + def _onModeChange(self, _: str, newMode: int): """ Gets called every time the camera mode changes in VRChat. """ - self.cameraEnabled = mode != 0 + enabledFlag = self._lastMode = 0 and newMode != 0 + self._lastMode = newMode + if enabledFlag: + self._onCameraEnabled() def _onCameraEnabled(self): if self._onEnabledCallback is not None: @@ -136,13 +143,4 @@ class Camera: Returns True if the camera is enabled """ - return self._cameraEnabled - - @cameraEnabled.setter - def cameraEnabled(self, value: bool): - if value == self._cameraEnabled: - return - - self._cameraEnabled = value - if value: - self._onCameraEnabled() + return self._lastMode != 0