From acb83273fe170c70e1fa27e67a79481f64a55d7a Mon Sep 17 00:00:00 2001 From: Ansariel Date: Fri, 5 Sep 2014 14:09:33 +0200 Subject: [PATCH] Brute force ugly code duplication to fix the dislayed camera state in the Phototools camera floater... --- indra/newview/llfloatercamera.cpp | 68 +++++++++++++++++++++++++++++++ indra/newview/llfloatercamera.h | 2 + 2 files changed, 70 insertions(+) diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index 65d1bd0e15..13e54d2c02 100755 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -258,6 +258,12 @@ void LLFloaterCamera::resetCameraMode() LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); if (!floater_camera) return; floater_camera->switchMode(CAMERA_CTRL_MODE_PAN); + + // Phototools camera + floater_camera = LLFloaterCamera::findPhototoolsInstance(); + if (!floater_camera) return; + floater_camera->switchMode(CAMERA_CTRL_MODE_PAN); + // } void LLFloaterCamera::onAvatarEditingAppearance(bool editing) @@ -266,6 +272,12 @@ void LLFloaterCamera::onAvatarEditingAppearance(bool editing) LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); if (!floater_camera) return; floater_camera->handleAvatarEditingAppearance(editing); + + // Phototools camera + floater_camera = LLFloaterCamera::findPhototoolsInstance(); + if (!floater_camera) return; + floater_camera->handleAvatarEditingAppearance(editing); + // } void LLFloaterCamera::handleAvatarEditingAppearance(bool editing) @@ -302,6 +314,18 @@ void LLFloaterCamera::toPrevMode() activate_camera_tool(); } } + + // Phototools camera + floater_camera = LLFloaterCamera::findPhototoolsInstance(); + if (floater_camera) + { + floater_camera->updateItemsSelection(); + if(floater_camera->inFreeCameraMode()) + { + activate_camera_tool(); + } + } + // } LLFloaterCamera* LLFloaterCamera::findInstance() @@ -309,6 +333,13 @@ LLFloaterCamera* LLFloaterCamera::findInstance() return LLFloaterReg::findTypedInstance("camera"); } +// Phototools camera +LLFloaterCamera* LLFloaterCamera::findPhototoolsInstance() +{ + return LLFloaterReg::findTypedInstance("phototools_camera"); +} +// + void LLFloaterCamera::onOpen(const LLSD& key) { LLFirstUse::viewPopup(); @@ -653,6 +684,43 @@ void LLFloaterCamera::onClickCameraItem(const LLSD& param) camera_floater->updateItemsSelection(); camera_floater->fromFreeToPresets(); } + + // Phototools camera + camera_floater = LLFloaterCamera::findPhototoolsInstance(); + + if ("reset_view" == name) + { + gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW); + gAgentCamera.changeCameraToDefault(); + if (camera_floater) + camera_floater->switchMode(CAMERA_CTRL_MODE_PAN); + } + else if ("mouselook_view" == name) + { + gAgentCamera.changeCameraToMouselook(); + } + else if ("object_view" == name && camera_floater) + { + if (camera_floater->mUseFlatUI) + { + camera_floater->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA ? camera_floater->switchMode(CAMERA_CTRL_MODE_PAN) : camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA); + } + else + { + camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA); + } + } + else + { + switchToPreset(name); + } + + if (camera_floater) + { + camera_floater->updateItemsSelection(); + camera_floater->fromFreeToPresets(); + } + // } /*static*/ diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h index 10c73103cc..866c518975 100755 --- a/indra/newview/llfloatercamera.h +++ b/indra/newview/llfloatercamera.h @@ -90,6 +90,8 @@ private: /* return instance if it exists - created by LLFloaterReg */ static LLFloaterCamera* findInstance(); + // Phototools camera + static LLFloaterCamera* findPhototoolsInstance(); /*virtual*/ BOOL postBuild();