/// <summary>
///
/// </summary>
private static bool ConfigureCameraController() {
if (!AreNecessaryPackagesInstalled())
return false;
var mainCamera = Camera.main;
if (mainCamera == null)
return false;
var cameraController = mainCamera.GetComponent<CameraController>();
if (cameraController == null)
return false;
var componentItemsConfigured = 0;
var focusedZoomGuid = "";
var focusedZoomPreset = FindPreset("WAS_FocusedZoomFirstPersonCombatPreset", out focusedZoomGuid);
var zoomGuid = "";
var zoomPreset = FindPreset("WAS_ZoomFirstPersonCombatPreset", out zoomGuid);
var viewTypes = cameraController.ViewTypes;
var viewTypeIndex = Array.FindIndex<ViewType>(viewTypes, 0, viewType => viewType.GetType() == typeof(Combat));
var states = viewTypes[viewTypeIndex].States;
var focusedZoomStateFound = false;
var zoomStateFound = false;
if (states.Length > 1) {
for (int i = 0; i < states.Length; i++) {
if (states[i].Name.Equals("FocusedZoom") && focusedZoomPreset != null) {
focusedZoomStateFound = true;
states[i].Preset = focusedZoomPreset;
states[i].BlockList = new string[0];
states[i].Default = false;
} else if (states[i].Name.Equals("Zoom") && zoomPreset != null) {
zoomStateFound = true;
states[i].Preset = zoomPreset;
states[i].BlockList = new string[1] {
"FocusedZoom"
};
states[i].Default = false;
}
}
}
var viewStatesAdded = 0;
if (!zoomStateFound) {
Array.Resize(ref states, states.Length + 1);
states[states.Length - 1] = new State("Zoom", zoomPreset, new string[1] { "FocusedZoom" });
viewStatesAdded++;
}
if (!focusedZoomStateFound) {
Array.Resize(ref states, states.Length + 1);
states[states.Length - 1] = new State("FocusedZoom", focusedZoomPreset, null);
viewStatesAdded++;
}
if (viewStatesAdded > 0) {
viewTypes[viewTypeIndex].States = states;
cameraController.ViewTypes = viewTypes;
ViewTypeBuilder.SerializeViewTypes(cameraController);
}
var startingViewFound = false;
foreach (var viewType in cameraController.ViewTypeData) {
if (viewType.ObjectType == typeof(WAS_OpsiveUCCFirstPersonStartingView).ToString()) {
startingViewFound = true;
break;
}
}
if (!startingViewFound) {
var addedViewType = ViewTypeBuilder.AddViewType(cameraController, typeof(WAS_OpsiveUCCFirstPersonStartingView));
if (addedViewType == null) {
return false;
} else {
componentItemsConfigured++;
}
}
if (cameraController.ActiveViewType.GetType() != typeof(WAS_OpsiveUCCFirstPersonStartingView)) {
cameraController.SetViewType(typeof(WAS_OpsiveUCCFirstPersonStartingView), true);
}
if (!ConfigurePersistantEvenListener(m_uccCameraController.OnChangePerspectivesEvent, m_weaponAttachmentsController.OnChangePerspectives)) {
Debug.LogWarning("Unable to configure persistant event listener for CameraController.OnChangePerspectivesEvent!");
} else {
componentItemsConfigured++;
}
if (!ConfigurePersistantEvenListener(m_uccCameraController.OnChangeViewTypesEvent, m_weaponAttachmentsController.OnChangeViewTypes)) {
Debug.LogWarning("Unable to configure persistant event listener for CameraController.OnChangeViewTypesEvent!");
} else {
componentItemsConfigured++;
}
if (!ConfigurePersistantEvenListener(m_uccCameraController.OnZoomEvent, m_weaponAttachmentsController.OnZoom)) {
Debug.LogWarning("Unable to configure persistant event listener for CameraController.OnZoomEvent!");
} else {
componentItemsConfigured++;
}
return componentItemsConfigured > 0;
}