using UnityEngine; using System.Collections; using UnityEngine.Events; #if UNITY_EDITOR using UnityEditor; [CustomEditor (typeof (playerCamera))] public class playerCameraEditor : Editor { SerializedProperty playerCameraTransform; SerializedProperty mainCamera; SerializedProperty mainCameraTransform; SerializedProperty pivotCameraTransform; SerializedProperty pivotLeanTransform; SerializedProperty pivotLeanChildTransform; SerializedProperty mainCameraParent; SerializedProperty hipsTransform; SerializedProperty cameraRotationInputEnabled; SerializedProperty thirdPersonVerticalRotationSpeed; SerializedProperty thirdPersonHorizontalRotationSpeed; SerializedProperty firstPersonVerticalRotationSpeed; SerializedProperty firstPersonHorizontalRotationSpeed; SerializedProperty smoothBetweenState; SerializedProperty maxCheckDist; SerializedProperty movementLerpSpeed; SerializedProperty pivotCameraMovementLerpSpeed; SerializedProperty regularMovementOnBulletTime; SerializedProperty useUnscaledTimeOnBulletTime; SerializedProperty defaultNearClipPlane; SerializedProperty extraCameraCollisionDistance; SerializedProperty cameraCollisionAlwaysActive; SerializedProperty usePivotCameraCollisionEnabled; SerializedProperty pivotCameraCollisionHeightOffset; SerializedProperty changeCameraViewEnabled; SerializedProperty aimSide; SerializedProperty changeCameraSideActive; SerializedProperty toogleCameraViewToThirdFirstAndLockedEnabled; SerializedProperty useSmoothCameraRotation; SerializedProperty useSmoothCameraRotationThirdPerson; SerializedProperty smoothCameraRotationSpeedVerticalThirdPerson; SerializedProperty smoothCameraRotationSpeedHorizontalThirdPerson; SerializedProperty useSmoothCameraRotationFirstPerson; SerializedProperty smoothCameraRotationSpeedVerticalFirstPerson; SerializedProperty smoothCameraRotationSpeedHorizontalFirstPerson; SerializedProperty zoomSpeed; SerializedProperty fovChangeSpeed; SerializedProperty thirdPersonVerticalRotationSpeedZoomIn; SerializedProperty thirdPersonHorizontalRotationSpeedZoomIn; SerializedProperty firstPersonVerticalRotationSpeedZoomIn; SerializedProperty firstPersonHorizontalRotationSpeedZoomIn; SerializedProperty moveCameraPositionWithMouseWheelActive; SerializedProperty moveCameraPositionForwardWithMouseWheelSpeed; SerializedProperty moveCameraPositionBackwardWithMouseWheelSpeed; SerializedProperty maxExtraDistanceOnThirdPerson; SerializedProperty useCameraMouseWheelStates; SerializedProperty cameraMouseWheelStatesList; SerializedProperty reverseMouseWheelDirectionEnabled; SerializedProperty minDistanceToChangeToFirstPerson; SerializedProperty using2_5ViewActive; SerializedProperty cameraType; SerializedProperty useCameraLimit; SerializedProperty useWidthLimit; SerializedProperty widthLimitRight; SerializedProperty widthLimitLeft; SerializedProperty useHeightLimit; SerializedProperty heightLimitUpper; SerializedProperty heightLimitLower; SerializedProperty useDepthLimit; SerializedProperty depthLimitFront; SerializedProperty depthLimitBackward; SerializedProperty currentCameraLimitPosition; SerializedProperty clampAimDirections; SerializedProperty numberOfAimDirections; SerializedProperty minDistanceToCenterClampAim; SerializedProperty canRotateForwardOnZeroGravityModeOn; SerializedProperty rotateForwardOnZeroGravitySpeed; SerializedProperty resetCameraRotationAfterTime; SerializedProperty timeToResetCameraRotation; SerializedProperty resetCameraRotationSpeed; SerializedProperty setExtraCameraRotationEnabled; SerializedProperty extraCameraRotationAmount; SerializedProperty extraCameraRotationSpeed; SerializedProperty useCameraForwardDirection; SerializedProperty currentStateName; SerializedProperty fullBodyAwarenessEnabled; SerializedProperty fullBodyAwarenessActive; SerializedProperty defaultFullBodyAwarenessStateName; SerializedProperty defaultFullBodyAwarenessCrouchStateName; SerializedProperty defaultFullBodyAwarenessAimStateName; SerializedProperty defaultFullBodyAwarenessCrouchAimStateName; SerializedProperty defaultFullBodyAwarenessDualAimStateName; SerializedProperty defaultFullBodyAwarenessCrouchDualAimStateName; SerializedProperty defaultThirdPersonStateName; SerializedProperty defaultFirstPersonStateName; SerializedProperty defaultThirdPersonCrouchStateName; SerializedProperty defaultFirstPersonCrouchStateName; SerializedProperty defaultThirdPersonAimRightStateName; SerializedProperty defaultThirdPersonAimLeftStateName; SerializedProperty defaultMoveCameraAwayStateName; SerializedProperty defaultLockedCameraStateName; SerializedProperty defaultAICameraStateName; SerializedProperty defaultVehiclePassengerStateName; SerializedProperty defaultThirdPersonAimRightCrouchStateName; SerializedProperty defaultThirdPersonAimLeftCrouchStateName; SerializedProperty playerCameraStates; SerializedProperty useEventsOnCameraStateChange; SerializedProperty cameraStateEventInfoList; SerializedProperty onGround; SerializedProperty aimingInThirdPerson; SerializedProperty crouching; SerializedProperty leanActive; SerializedProperty leanToRightActive; SerializedProperty firstPersonActive; SerializedProperty usingZoomOn; SerializedProperty usingZoomOff; SerializedProperty cameraCanRotate; SerializedProperty cameraCanBeUsed; SerializedProperty lookingAtTarget; SerializedProperty lookingAtPoint; SerializedProperty useTopDownView; SerializedProperty horizontalInput; SerializedProperty verticalInput; SerializedProperty lookAngle; SerializedProperty playerNavMeshEnabled; SerializedProperty followingMultipleTargets; SerializedProperty useCustomThirdPersonAimActive; SerializedProperty lockedCameraSystemPrefab; SerializedProperty lockedCameraLimitSystemPrefab; SerializedProperty lockedCameraPrefabsTypesList; SerializedProperty cameraNoiseStateList; SerializedProperty usedByAI; SerializedProperty customOriginalLockedCameraPivotPosition; SerializedProperty useCustomOriginalLockedCameraPivotPositionTransform; SerializedProperty customOriginalLockedCameraPivotPositionTransform; SerializedProperty showLookTargetSettings; SerializedProperty showSettings; SerializedProperty showEventSettings; SerializedProperty layer; SerializedProperty useAcelerometer; SerializedProperty reverseVerticalAccelerometer; SerializedProperty reverseHorizontalAccelerometer; SerializedProperty zoomEnabled; SerializedProperty moveAwayCameraEnabled; SerializedProperty enableMoveAwayInAir; SerializedProperty enableShakeCamera; SerializedProperty showElements; SerializedProperty lockedCameraElementsParent; SerializedProperty lockedMainCameraTransform; SerializedProperty lockedCameraAxis; SerializedProperty lockedCameraPosition; SerializedProperty lockedCameraPivot; SerializedProperty lookCameraParent; SerializedProperty lookCameraPivot; SerializedProperty lookCameraDirection; SerializedProperty clampAimDirectionTransform; SerializedProperty lookDirectionTransform; SerializedProperty auxLockedCameraAxis; SerializedProperty setTransparentSurfacesManager; SerializedProperty playerControllerGameObject; SerializedProperty playerInput; SerializedProperty playerControllerManager; SerializedProperty powersManager; SerializedProperty gravityManager; SerializedProperty headBobManager; SerializedProperty grabObjectsManager; SerializedProperty scannerManager; SerializedProperty weaponsManager; SerializedProperty playerNavMeshManager; SerializedProperty characterStateIconManager; SerializedProperty mainCollider; SerializedProperty mainCameraCaptureSystem; SerializedProperty targetToFollow; SerializedProperty useEventOnMovingLockedCamera; SerializedProperty useEventOnFreeCamera; SerializedProperty eventOnStartMovingLockedCamera; SerializedProperty eventOnKeepMovingLockedCamera; SerializedProperty eventOnStopMovingLockedCamera; SerializedProperty useEventOnThirdFirstPersonViewChange; SerializedProperty setFirstPersonEvent; SerializedProperty setThirdPersonEvent; SerializedProperty setThirdPersonInEditorEvent; SerializedProperty setFirstPersonInEditorEvent; SerializedProperty useEventOnFBAViewChange; SerializedProperty eventOnEnableFBA; SerializedProperty eventOnDisableFBA; SerializedProperty eventOnEnableFBAInEditor; SerializedProperty eventOnDisableFBAInEditor; SerializedProperty useHeadColliderOnFBA; SerializedProperty headColliderOnFBA; SerializedProperty useHeadColliderOnThirdPerson; SerializedProperty eventToActivateHeadColliderOnFBA; SerializedProperty eventToDeactivateHeadColliderOnFBA; SerializedProperty eventToActivateHeadColliderOnFBAOnEditor; SerializedProperty eventToDeactivateHeadColliderOnFBAOnEditor; SerializedProperty cameraList; SerializedProperty updateReticleActiveState; SerializedProperty useCameraReticleThirdPerson; SerializedProperty useCameraReticleFirstPerson; SerializedProperty cameraReticleGameObject; SerializedProperty mainCameraReticleGameObject; SerializedProperty cameraReticleCurrentlyActive; SerializedProperty externalReticleCurrentlyActive; SerializedProperty mainCustomReticleParent; SerializedProperty customReticleInfoList; SerializedProperty adjustCameraToPreviousCharacterDirectionActive; SerializedProperty useSmoothCameraTransitionBetweenCharacters; SerializedProperty smoothCameraTransitionBetweenCharactersSpeed; SerializedProperty setNewCharacterAlwaysInPreviousCharacterView; SerializedProperty setNewCharacterAlwaysInThirdPerson; SerializedProperty setNewCharacterAlwaysInFirstPerson; SerializedProperty useMultipleTargetFov; SerializedProperty multipleTargetsMinFov; SerializedProperty multipleTargetsMaxFov; SerializedProperty multipleTargetsFovSpeed; SerializedProperty useMultipleTargetsYPosition; SerializedProperty multipleTargetsYPositionSpeed; SerializedProperty multipleTargetsMaxHeight; SerializedProperty multipleTargetsHeightMultiplier; SerializedProperty maxMultipleTargetHeight; SerializedProperty minMultipleTargetHeight; SerializedProperty showCameraGizmo; SerializedProperty gizmoRadius; SerializedProperty gizmoLabelColor; SerializedProperty linesColor; SerializedProperty lookAtTargetEnabled; SerializedProperty canActivateLookAtTargetEnabled; SerializedProperty canActiveLookAtTargetOnLockedCamera; SerializedProperty lookAtTargetTransform; SerializedProperty targetToLook; SerializedProperty maxDistanceToFindTarget; SerializedProperty useLayerToSearchTargets; SerializedProperty layerToLook; SerializedProperty lookOnlyIfTargetOnScreen; SerializedProperty checkObstaclesToTarget; SerializedProperty getClosestToCameraCenter; SerializedProperty useMaxDistanceToCameraCenter; SerializedProperty maxDistanceToCameraCenter; SerializedProperty activateStrafeModeIfNoTargetsToLookFound; SerializedProperty searchPointToLookComponents; SerializedProperty pointToLookComponentsLayer; SerializedProperty useTimeToStopAimAssist; SerializedProperty timeToStopAimAssist; SerializedProperty useTimeToStopAimAssistLockedCamera; SerializedProperty timeToStopAimAssistLockedCamera; SerializedProperty canChangeTargetToLookWithCameraAxis; SerializedProperty minimumCameraDragToChangeTargetToLook; SerializedProperty waitTimeToNextChangeTargetToLook; SerializedProperty useOnlyHorizontalCameraDragValue; SerializedProperty lookAtTargetSpeed; SerializedProperty lookCloserAtTargetSpeed; SerializedProperty lookAtTargetSpeed2_5dView; SerializedProperty lookAtTargetSpeedOthersLockedViews; SerializedProperty useLookTargetIcon; SerializedProperty lookAtTargetIcon; SerializedProperty lookAtTargetRegularIconGameObject; SerializedProperty lookAtTargetIconWhenNotAiming; SerializedProperty tagToLookList; SerializedProperty lookAtBodyPartsOnCharacters; SerializedProperty bodyPartsToLook; SerializedProperty useObjectToGrabFoundShader; SerializedProperty objectToGrabFoundShader; SerializedProperty shaderOutlineWidth; SerializedProperty shaderOutlineColor; SerializedProperty useRemoteEventsOnLockOn; SerializedProperty remoteEventOnLockOnStart; SerializedProperty remoteEventOnLockOnEnd; SerializedProperty useEventsOnLockOn; SerializedProperty eventOnLockOnStart; SerializedProperty eventOnLockOnEnd; SerializedProperty layerToCheckPossibleTargetsBelowCursor; SerializedProperty useSmoothCameraFollow; SerializedProperty smoothCameraFollowSpeed; SerializedProperty smoothCameraFollowSpeedOnAim; SerializedProperty smoothCameraFollowMaxDistance; SerializedProperty smoothCameraFollowMaxDistanceSpeed; SerializedProperty showDebugPrint; SerializedProperty showCameraDebugState; SerializedProperty smoothReturnSpeed; SerializedProperty checkCameraDistanceOnSmoothReturnEnabled; SerializedProperty smoothGoSpeed; SerializedProperty checkCameraDistanceOnSmoothGoEnabled; SerializedProperty useEventsOnLockAtTarget; SerializedProperty eventOnLockAtTargetStart; SerializedProperty eventOnLockAtTargetEnd; SerializedProperty ignoreExternalFovChangesEnabled; playerCamera camera; public string currentCamera; bool checkCamera; Color defBackgroundColor; bool expanded; string currentButtonString; GUIStyle style = new GUIStyle (); GUIStyle buttonStyle = new GUIStyle (); GUIStyle sectionStyle = new GUIStyle (); void OnEnable () { playerCameraTransform = serializedObject.FindProperty ("playerCameraTransform"); mainCamera = serializedObject.FindProperty ("mainCamera"); mainCameraTransform = serializedObject.FindProperty ("mainCameraTransform"); pivotCameraTransform = serializedObject.FindProperty ("pivotCameraTransform"); pivotLeanTransform = serializedObject.FindProperty ("pivotLeanTransform"); pivotLeanChildTransform = serializedObject.FindProperty ("pivotLeanChildTransform"); mainCameraParent = serializedObject.FindProperty ("mainCameraParent"); hipsTransform = serializedObject.FindProperty ("hipsTransform"); cameraRotationInputEnabled = serializedObject.FindProperty ("cameraRotationInputEnabled"); thirdPersonVerticalRotationSpeed = serializedObject.FindProperty ("thirdPersonVerticalRotationSpeed"); thirdPersonHorizontalRotationSpeed = serializedObject.FindProperty ("thirdPersonHorizontalRotationSpeed"); firstPersonVerticalRotationSpeed = serializedObject.FindProperty ("firstPersonVerticalRotationSpeed"); firstPersonHorizontalRotationSpeed = serializedObject.FindProperty ("firstPersonHorizontalRotationSpeed"); smoothBetweenState = serializedObject.FindProperty ("smoothBetweenState"); maxCheckDist = serializedObject.FindProperty ("maxCheckDist"); pivotCameraMovementLerpSpeed = serializedObject.FindProperty ("pivotCameraMovementLerpSpeed"); movementLerpSpeed = serializedObject.FindProperty ("movementLerpSpeed"); regularMovementOnBulletTime = serializedObject.FindProperty ("regularMovementOnBulletTime"); useUnscaledTimeOnBulletTime = serializedObject.FindProperty ("useUnscaledTimeOnBulletTime"); defaultNearClipPlane = serializedObject.FindProperty ("defaultNearClipPlane"); extraCameraCollisionDistance = serializedObject.FindProperty ("extraCameraCollisionDistance"); cameraCollisionAlwaysActive = serializedObject.FindProperty ("cameraCollisionAlwaysActive"); usePivotCameraCollisionEnabled = serializedObject.FindProperty ("usePivotCameraCollisionEnabled"); pivotCameraCollisionHeightOffset = serializedObject.FindProperty ("pivotCameraCollisionHeightOffset"); changeCameraViewEnabled = serializedObject.FindProperty ("changeCameraViewEnabled"); aimSide = serializedObject.FindProperty ("aimSide"); changeCameraSideActive = serializedObject.FindProperty ("changeCameraSideActive"); toogleCameraViewToThirdFirstAndLockedEnabled = serializedObject.FindProperty ("toogleCameraViewToThirdFirstAndLockedEnabled"); useSmoothCameraRotation = serializedObject.FindProperty ("useSmoothCameraRotation"); useSmoothCameraRotationThirdPerson = serializedObject.FindProperty ("useSmoothCameraRotationThirdPerson"); smoothCameraRotationSpeedVerticalThirdPerson = serializedObject.FindProperty ("smoothCameraRotationSpeedVerticalThirdPerson"); smoothCameraRotationSpeedHorizontalThirdPerson = serializedObject.FindProperty ("smoothCameraRotationSpeedHorizontalThirdPerson"); useSmoothCameraRotationFirstPerson = serializedObject.FindProperty ("useSmoothCameraRotationFirstPerson"); smoothCameraRotationSpeedVerticalFirstPerson = serializedObject.FindProperty ("smoothCameraRotationSpeedVerticalFirstPerson"); smoothCameraRotationSpeedHorizontalFirstPerson = serializedObject.FindProperty ("smoothCameraRotationSpeedHorizontalFirstPerson"); zoomSpeed = serializedObject.FindProperty ("zoomSpeed"); fovChangeSpeed = serializedObject.FindProperty ("fovChangeSpeed"); thirdPersonVerticalRotationSpeedZoomIn = serializedObject.FindProperty ("thirdPersonVerticalRotationSpeedZoomIn"); thirdPersonHorizontalRotationSpeedZoomIn = serializedObject.FindProperty ("thirdPersonHorizontalRotationSpeedZoomIn"); firstPersonVerticalRotationSpeedZoomIn = serializedObject.FindProperty ("firstPersonVerticalRotationSpeedZoomIn"); firstPersonHorizontalRotationSpeedZoomIn = serializedObject.FindProperty ("firstPersonHorizontalRotationSpeedZoomIn"); moveCameraPositionWithMouseWheelActive = serializedObject.FindProperty ("moveCameraPositionWithMouseWheelActive"); moveCameraPositionForwardWithMouseWheelSpeed = serializedObject.FindProperty ("moveCameraPositionForwardWithMouseWheelSpeed"); moveCameraPositionBackwardWithMouseWheelSpeed = serializedObject.FindProperty ("moveCameraPositionBackwardWithMouseWheelSpeed"); maxExtraDistanceOnThirdPerson = serializedObject.FindProperty ("maxExtraDistanceOnThirdPerson"); useCameraMouseWheelStates = serializedObject.FindProperty ("useCameraMouseWheelStates"); cameraMouseWheelStatesList = serializedObject.FindProperty ("cameraMouseWheelStatesList"); reverseMouseWheelDirectionEnabled = serializedObject.FindProperty ("reverseMouseWheelDirectionEnabled"); minDistanceToChangeToFirstPerson = serializedObject.FindProperty ("minDistanceToChangeToFirstPerson"); using2_5ViewActive = serializedObject.FindProperty ("using2_5ViewActive"); cameraType = serializedObject.FindProperty ("cameraType"); useCameraLimit = serializedObject.FindProperty ("useCameraLimit"); useWidthLimit = serializedObject.FindProperty ("useWidthLimit"); widthLimitRight = serializedObject.FindProperty ("widthLimitRight"); widthLimitLeft = serializedObject.FindProperty ("widthLimitLeft"); useHeightLimit = serializedObject.FindProperty ("useHeightLimit"); heightLimitUpper = serializedObject.FindProperty ("heightLimitUpper"); heightLimitLower = serializedObject.FindProperty ("heightLimitLower"); useDepthLimit = serializedObject.FindProperty ("useDepthLimit"); depthLimitFront = serializedObject.FindProperty ("depthLimitFront"); depthLimitBackward = serializedObject.FindProperty ("depthLimitBackward"); currentCameraLimitPosition = serializedObject.FindProperty ("currentCameraLimitPosition"); clampAimDirections = serializedObject.FindProperty ("clampAimDirections"); numberOfAimDirections = serializedObject.FindProperty ("numberOfAimDirections"); minDistanceToCenterClampAim = serializedObject.FindProperty ("minDistanceToCenterClampAim"); canRotateForwardOnZeroGravityModeOn = serializedObject.FindProperty ("canRotateForwardOnZeroGravityModeOn"); rotateForwardOnZeroGravitySpeed = serializedObject.FindProperty ("rotateForwardOnZeroGravitySpeed"); resetCameraRotationAfterTime = serializedObject.FindProperty ("resetCameraRotationAfterTime"); timeToResetCameraRotation = serializedObject.FindProperty ("timeToResetCameraRotation"); resetCameraRotationSpeed = serializedObject.FindProperty ("resetCameraRotationSpeed"); setExtraCameraRotationEnabled = serializedObject.FindProperty ("setExtraCameraRotationEnabled"); extraCameraRotationAmount = serializedObject.FindProperty ("extraCameraRotationAmount"); extraCameraRotationSpeed = serializedObject.FindProperty ("extraCameraRotationSpeed"); useCameraForwardDirection = serializedObject.FindProperty ("useCameraForwardDirection"); currentStateName = serializedObject.FindProperty ("currentStateName"); fullBodyAwarenessEnabled = serializedObject.FindProperty ("fullBodyAwarenessEnabled"); fullBodyAwarenessActive = serializedObject.FindProperty ("fullBodyAwarenessActive"); defaultFullBodyAwarenessStateName = serializedObject.FindProperty ("defaultFullBodyAwarenessStateName"); defaultFullBodyAwarenessCrouchStateName = serializedObject.FindProperty ("defaultFullBodyAwarenessCrouchStateName"); defaultFullBodyAwarenessAimStateName = serializedObject.FindProperty ("defaultFullBodyAwarenessAimStateName"); defaultFullBodyAwarenessCrouchAimStateName = serializedObject.FindProperty ("defaultFullBodyAwarenessCrouchAimStateName"); defaultFullBodyAwarenessDualAimStateName = serializedObject.FindProperty ("defaultFullBodyAwarenessDualAimStateName"); defaultFullBodyAwarenessCrouchDualAimStateName = serializedObject.FindProperty ("defaultFullBodyAwarenessCrouchDualAimStateName"); defaultThirdPersonStateName = serializedObject.FindProperty ("defaultThirdPersonStateName"); defaultFirstPersonStateName = serializedObject.FindProperty ("defaultFirstPersonStateName"); defaultThirdPersonCrouchStateName = serializedObject.FindProperty ("defaultThirdPersonCrouchStateName"); defaultFirstPersonCrouchStateName = serializedObject.FindProperty ("defaultFirstPersonCrouchStateName"); defaultThirdPersonAimRightStateName = serializedObject.FindProperty ("defaultThirdPersonAimRightStateName"); defaultThirdPersonAimLeftStateName = serializedObject.FindProperty ("defaultThirdPersonAimLeftStateName"); defaultMoveCameraAwayStateName = serializedObject.FindProperty ("defaultMoveCameraAwayStateName"); defaultLockedCameraStateName = serializedObject.FindProperty ("defaultLockedCameraStateName"); defaultAICameraStateName = serializedObject.FindProperty ("defaultAICameraStateName"); defaultVehiclePassengerStateName = serializedObject.FindProperty ("defaultVehiclePassengerStateName"); defaultThirdPersonAimRightCrouchStateName = serializedObject.FindProperty ("defaultThirdPersonAimRightCrouchStateName"); defaultThirdPersonAimLeftCrouchStateName = serializedObject.FindProperty ("defaultThirdPersonAimLeftCrouchStateName"); playerCameraStates = serializedObject.FindProperty ("playerCameraStates"); useEventsOnCameraStateChange = serializedObject.FindProperty ("useEventsOnCameraStateChange"); cameraStateEventInfoList = serializedObject.FindProperty ("cameraStateEventInfoList"); onGround = serializedObject.FindProperty ("onGround"); aimingInThirdPerson = serializedObject.FindProperty ("aimingInThirdPerson"); crouching = serializedObject.FindProperty ("crouching"); leanActive = serializedObject.FindProperty ("leanActive"); leanToRightActive = serializedObject.FindProperty ("leanToRightActive"); firstPersonActive = serializedObject.FindProperty ("firstPersonActive"); usingZoomOn = serializedObject.FindProperty ("usingZoomOn"); usingZoomOff = serializedObject.FindProperty ("usingZoomOff"); cameraCanRotate = serializedObject.FindProperty ("cameraCanRotate"); cameraCanBeUsed = serializedObject.FindProperty ("cameraCanBeUsed"); lookingAtTarget = serializedObject.FindProperty ("lookingAtTarget"); lookingAtPoint = serializedObject.FindProperty ("lookingAtPoint"); useTopDownView = serializedObject.FindProperty ("useTopDownView"); horizontalInput = serializedObject.FindProperty ("horizontalInput"); verticalInput = serializedObject.FindProperty ("verticalInput"); lookAngle = serializedObject.FindProperty ("lookAngle"); playerNavMeshEnabled = serializedObject.FindProperty ("playerNavMeshEnabled"); followingMultipleTargets = serializedObject.FindProperty ("followingMultipleTargets"); useCustomThirdPersonAimActive = serializedObject.FindProperty ("useCustomThirdPersonAimActive"); lockedCameraSystemPrefab = serializedObject.FindProperty ("lockedCameraSystemPrefab"); lockedCameraLimitSystemPrefab = serializedObject.FindProperty ("lockedCameraLimitSystemPrefab"); lockedCameraPrefabsTypesList = serializedObject.FindProperty ("lockedCameraPrefabsTypesList"); cameraNoiseStateList = serializedObject.FindProperty ("cameraNoiseStateList"); usedByAI = serializedObject.FindProperty ("usedByAI"); customOriginalLockedCameraPivotPosition = serializedObject.FindProperty ("customOriginalLockedCameraPivotPosition"); useCustomOriginalLockedCameraPivotPositionTransform = serializedObject.FindProperty ("useCustomOriginalLockedCameraPivotPositionTransform"); customOriginalLockedCameraPivotPositionTransform = serializedObject.FindProperty ("customOriginalLockedCameraPivotPositionTransform"); showLookTargetSettings = serializedObject.FindProperty ("showLookTargetSettings"); showSettings = serializedObject.FindProperty ("showSettings"); showEventSettings = serializedObject.FindProperty ("showEventSettings"); layer = serializedObject.FindProperty ("settings.layer"); useAcelerometer = serializedObject.FindProperty ("settings.useAcelerometer"); reverseVerticalAccelerometer = serializedObject.FindProperty ("settings.reverseVerticalAccelerometer"); reverseHorizontalAccelerometer = serializedObject.FindProperty ("settings.reverseHorizontalAccelerometer"); zoomEnabled = serializedObject.FindProperty ("settings.zoomEnabled"); moveAwayCameraEnabled = serializedObject.FindProperty ("settings.moveAwayCameraEnabled"); enableMoveAwayInAir = serializedObject.FindProperty ("settings.enableMoveAwayInAir"); enableShakeCamera = serializedObject.FindProperty ("settings.enableShakeCamera"); showElements = serializedObject.FindProperty ("showElements"); lockedCameraElementsParent = serializedObject.FindProperty ("lockedCameraElementsParent"); lockedMainCameraTransform = serializedObject.FindProperty ("lockedMainCameraTransform"); lockedCameraAxis = serializedObject.FindProperty ("lockedCameraAxis"); lockedCameraPosition = serializedObject.FindProperty ("lockedCameraPosition"); lockedCameraPivot = serializedObject.FindProperty ("lockedCameraPivot"); lookCameraParent = serializedObject.FindProperty ("lookCameraParent"); lookCameraPivot = serializedObject.FindProperty ("lookCameraPivot"); lookCameraDirection = serializedObject.FindProperty ("lookCameraDirection"); clampAimDirectionTransform = serializedObject.FindProperty ("clampAimDirectionTransform"); lookDirectionTransform = serializedObject.FindProperty ("lookDirectionTransform"); auxLockedCameraAxis = serializedObject.FindProperty ("auxLockedCameraAxis"); setTransparentSurfacesManager = serializedObject.FindProperty ("setTransparentSurfacesManager"); playerControllerGameObject = serializedObject.FindProperty ("playerControllerGameObject"); playerInput = serializedObject.FindProperty ("playerInput"); playerControllerManager = serializedObject.FindProperty ("playerControllerManager"); powersManager = serializedObject.FindProperty ("powersManager"); gravityManager = serializedObject.FindProperty ("gravityManager"); headBobManager = serializedObject.FindProperty ("headBobManager"); grabObjectsManager = serializedObject.FindProperty ("grabObjectsManager"); scannerManager = serializedObject.FindProperty ("scannerManager"); weaponsManager = serializedObject.FindProperty ("weaponsManager"); playerNavMeshManager = serializedObject.FindProperty ("playerNavMeshManager"); characterStateIconManager = serializedObject.FindProperty ("characterStateIconManager"); mainCollider = serializedObject.FindProperty ("mainCollider"); mainCameraCaptureSystem = serializedObject.FindProperty ("mainCameraCaptureSystem"); targetToFollow = serializedObject.FindProperty ("targetToFollow"); useEventOnMovingLockedCamera = serializedObject.FindProperty ("useEventOnMovingLockedCamera"); useEventOnFreeCamera = serializedObject.FindProperty ("useEventOnFreeCamereToo"); eventOnStartMovingLockedCamera = serializedObject.FindProperty ("eventOnStartMovingLockedCamera"); eventOnKeepMovingLockedCamera = serializedObject.FindProperty ("eventOnKeepMovingLockedCamera"); eventOnStopMovingLockedCamera = serializedObject.FindProperty ("eventOnStopMovingLockedCamera"); useEventOnThirdFirstPersonViewChange = serializedObject.FindProperty ("useEventOnThirdFirstPersonViewChange"); setFirstPersonEvent = serializedObject.FindProperty ("setFirstPersonEvent"); setThirdPersonEvent = serializedObject.FindProperty ("setThirdPersonEvent"); setThirdPersonInEditorEvent = serializedObject.FindProperty ("setThirdPersonInEditorEvent"); setFirstPersonInEditorEvent = serializedObject.FindProperty ("setFirstPersonInEditorEvent"); useEventOnFBAViewChange = serializedObject.FindProperty ("useEventOnFBAViewChange"); eventOnEnableFBA = serializedObject.FindProperty ("eventOnEnableFBA"); eventOnDisableFBA = serializedObject.FindProperty ("eventOnDisableFBA"); eventOnEnableFBAInEditor = serializedObject.FindProperty ("eventOnEnableFBAInEditor"); eventOnDisableFBAInEditor = serializedObject.FindProperty ("eventOnDisableFBAInEditor"); useHeadColliderOnFBA = serializedObject.FindProperty ("useHeadColliderOnFBA"); headColliderOnFBA = serializedObject.FindProperty ("headColliderOnFBA"); useHeadColliderOnThirdPerson = serializedObject.FindProperty ("useHeadColliderOnThirdPerson"); eventToActivateHeadColliderOnFBA = serializedObject.FindProperty ("eventToActivateHeadColliderOnFBA"); eventToDeactivateHeadColliderOnFBA = serializedObject.FindProperty ("eventToDeactivateHeadColliderOnFBA"); eventToActivateHeadColliderOnFBAOnEditor = serializedObject.FindProperty ("eventToActivateHeadColliderOnFBAOnEditor"); eventToDeactivateHeadColliderOnFBAOnEditor = serializedObject.FindProperty ("eventToDeactivateHeadColliderOnFBAOnEditor"); cameraList = serializedObject.FindProperty ("cameraList"); updateReticleActiveState = serializedObject.FindProperty ("updateReticleActiveState"); useCameraReticleThirdPerson = serializedObject.FindProperty ("useCameraReticleThirdPerson"); useCameraReticleFirstPerson = serializedObject.FindProperty ("useCameraReticleFirstPerson"); cameraReticleGameObject = serializedObject.FindProperty ("cameraReticleGameObject"); mainCameraReticleGameObject = serializedObject.FindProperty ("mainCameraReticleGameObject"); cameraReticleCurrentlyActive = serializedObject.FindProperty ("cameraReticleCurrentlyActive"); externalReticleCurrentlyActive = serializedObject.FindProperty ("externalReticleCurrentlyActive"); mainCustomReticleParent = serializedObject.FindProperty ("mainCustomReticleParent"); customReticleInfoList = serializedObject.FindProperty ("customReticleInfoList"); adjustCameraToPreviousCharacterDirectionActive = serializedObject.FindProperty ("adjustCameraToPreviousCharacterDirectionActive"); useSmoothCameraTransitionBetweenCharacters = serializedObject.FindProperty ("useSmoothCameraTransitionBetweenCharacters"); smoothCameraTransitionBetweenCharactersSpeed = serializedObject.FindProperty ("smoothCameraTransitionBetweenCharactersSpeed"); setNewCharacterAlwaysInPreviousCharacterView = serializedObject.FindProperty ("setNewCharacterAlwaysInPreviousCharacterView"); setNewCharacterAlwaysInThirdPerson = serializedObject.FindProperty ("setNewCharacterAlwaysInThirdPerson"); setNewCharacterAlwaysInFirstPerson = serializedObject.FindProperty ("setNewCharacterAlwaysInFirstPerson"); useMultipleTargetFov = serializedObject.FindProperty ("useMultipleTargetFov"); multipleTargetsMinFov = serializedObject.FindProperty ("multipleTargetsMinFov"); multipleTargetsMaxFov = serializedObject.FindProperty ("multipleTargetsMaxFov"); multipleTargetsFovSpeed = serializedObject.FindProperty ("multipleTargetsFovSpeed"); useMultipleTargetsYPosition = serializedObject.FindProperty ("useMultipleTargetsYPosition"); multipleTargetsYPositionSpeed = serializedObject.FindProperty ("multipleTargetsYPositionSpeed"); multipleTargetsMaxHeight = serializedObject.FindProperty ("multipleTargetsMaxHeight"); multipleTargetsHeightMultiplier = serializedObject.FindProperty ("multipleTargetsHeightMultiplier"); maxMultipleTargetHeight = serializedObject.FindProperty ("maxMultipleTargetHeight"); minMultipleTargetHeight = serializedObject.FindProperty ("minMultipleTargetHeight"); showCameraGizmo = serializedObject.FindProperty ("settings.showCameraGizmo"); gizmoRadius = serializedObject.FindProperty ("settings.gizmoRadius"); gizmoLabelColor = serializedObject.FindProperty ("settings.gizmoLabelColor"); linesColor = serializedObject.FindProperty ("settings.linesColor"); lookAtTargetEnabled = serializedObject.FindProperty ("lookAtTargetEnabled"); canActivateLookAtTargetEnabled = serializedObject.FindProperty ("canActivateLookAtTargetEnabled"); canActiveLookAtTargetOnLockedCamera = serializedObject.FindProperty ("canActiveLookAtTargetOnLockedCamera"); lookAtTargetTransform = serializedObject.FindProperty ("lookAtTargetTransform"); targetToLook = serializedObject.FindProperty ("targetToLook"); maxDistanceToFindTarget = serializedObject.FindProperty ("maxDistanceToFindTarget"); useLayerToSearchTargets = serializedObject.FindProperty ("useLayerToSearchTargets"); layerToLook = serializedObject.FindProperty ("layerToLook"); lookOnlyIfTargetOnScreen = serializedObject.FindProperty ("lookOnlyIfTargetOnScreen"); checkObstaclesToTarget = serializedObject.FindProperty ("checkObstaclesToTarget"); getClosestToCameraCenter = serializedObject.FindProperty ("getClosestToCameraCenter"); useMaxDistanceToCameraCenter = serializedObject.FindProperty ("useMaxDistanceToCameraCenter"); maxDistanceToCameraCenter = serializedObject.FindProperty ("maxDistanceToCameraCenter"); activateStrafeModeIfNoTargetsToLookFound = serializedObject.FindProperty ("activateStrafeModeIfNoTargetsToLookFound"); searchPointToLookComponents = serializedObject.FindProperty ("searchPointToLookComponents"); pointToLookComponentsLayer = serializedObject.FindProperty ("pointToLookComponentsLayer"); useTimeToStopAimAssist = serializedObject.FindProperty ("useTimeToStopAimAssist"); timeToStopAimAssist = serializedObject.FindProperty ("timeToStopAimAssist"); useTimeToStopAimAssistLockedCamera = serializedObject.FindProperty ("useTimeToStopAimAssistLockedCamera"); timeToStopAimAssistLockedCamera = serializedObject.FindProperty ("timeToStopAimAssistLockedCamera"); canChangeTargetToLookWithCameraAxis = serializedObject.FindProperty ("canChangeTargetToLookWithCameraAxis"); minimumCameraDragToChangeTargetToLook = serializedObject.FindProperty ("minimumCameraDragToChangeTargetToLook"); waitTimeToNextChangeTargetToLook = serializedObject.FindProperty ("waitTimeToNextChangeTargetToLook"); useOnlyHorizontalCameraDragValue = serializedObject.FindProperty ("useOnlyHorizontalCameraDragValue"); lookAtTargetSpeed = serializedObject.FindProperty ("lookAtTargetSpeed"); lookCloserAtTargetSpeed = serializedObject.FindProperty ("lookCloserAtTargetSpeed"); lookAtTargetSpeed2_5dView = serializedObject.FindProperty ("lookAtTargetSpeed2_5dView"); lookAtTargetSpeedOthersLockedViews = serializedObject.FindProperty ("lookAtTargetSpeedOthersLockedViews"); useLookTargetIcon = serializedObject.FindProperty ("useLookTargetIcon"); lookAtTargetIcon = serializedObject.FindProperty ("lookAtTargetIcon"); lookAtTargetRegularIconGameObject = serializedObject.FindProperty ("lookAtTargetRegularIconGameObject"); lookAtTargetIconWhenNotAiming = serializedObject.FindProperty ("lookAtTargetIconWhenNotAiming"); tagToLookList = serializedObject.FindProperty ("tagToLookList"); lookAtBodyPartsOnCharacters = serializedObject.FindProperty ("lookAtBodyPartsOnCharacters"); bodyPartsToLook = serializedObject.FindProperty ("bodyPartsToLook"); useObjectToGrabFoundShader = serializedObject.FindProperty ("useObjectToGrabFoundShader"); objectToGrabFoundShader = serializedObject.FindProperty ("objectToGrabFoundShader"); shaderOutlineWidth = serializedObject.FindProperty ("shaderOutlineWidth"); shaderOutlineColor = serializedObject.FindProperty ("shaderOutlineColor"); useRemoteEventsOnLockOn = serializedObject.FindProperty ("useRemoteEventsOnLockOn"); remoteEventOnLockOnStart = serializedObject.FindProperty ("remoteEventOnLockOnStart"); remoteEventOnLockOnEnd = serializedObject.FindProperty ("remoteEventOnLockOnEnd"); useEventsOnLockOn = serializedObject.FindProperty ("useEventsOnLockOn"); eventOnLockOnStart = serializedObject.FindProperty ("eventOnLockOnStart"); eventOnLockOnEnd = serializedObject.FindProperty ("eventOnLockOnEnd"); layerToCheckPossibleTargetsBelowCursor = serializedObject.FindProperty ("layerToCheckPossibleTargetsBelowCursor"); useSmoothCameraFollow = serializedObject.FindProperty ("useSmoothCameraFollow"); smoothCameraFollowSpeed = serializedObject.FindProperty ("smoothCameraFollowSpeed"); smoothCameraFollowSpeedOnAim = serializedObject.FindProperty ("smoothCameraFollowSpeedOnAim"); smoothCameraFollowMaxDistance = serializedObject.FindProperty ("smoothCameraFollowMaxDistance"); smoothCameraFollowMaxDistanceSpeed = serializedObject.FindProperty ("smoothCameraFollowMaxDistanceSpeed"); showDebugPrint = serializedObject.FindProperty ("showDebugPrint"); showCameraDebugState = serializedObject.FindProperty ("showCameraDebugState"); smoothReturnSpeed = serializedObject.FindProperty ("smoothReturnSpeed"); checkCameraDistanceOnSmoothReturnEnabled = serializedObject.FindProperty ("checkCameraDistanceOnSmoothReturnEnabled"); smoothGoSpeed = serializedObject.FindProperty ("smoothGoSpeed"); checkCameraDistanceOnSmoothGoEnabled = serializedObject.FindProperty ("checkCameraDistanceOnSmoothGoEnabled"); useEventsOnLockAtTarget = serializedObject.FindProperty ("useEventsOnLockAtTarget"); eventOnLockAtTargetStart = serializedObject.FindProperty ("eventOnLockAtTargetStart"); eventOnLockAtTargetEnd = serializedObject.FindProperty ("eventOnLockAtTargetEnd"); ignoreExternalFovChangesEnabled = serializedObject.FindProperty ("ignoreExternalFovChangesEnabled"); camera = (playerCamera)target; } void OnSceneGUI () { if (camera.settings.showCameraGizmo) { style.alignment = TextAnchor.MiddleCenter; if (camera.gameObject == Selection.activeGameObject) { for (int i = 0; i < camera.playerCameraStates.Count; i++) { if (camera.playerCameraStates [i].showGizmo) { style.normal.textColor = camera.settings.gizmoLabelColor; Handles.Label (camera.gameObject.transform.position + camera.playerCameraStates [i].pivotPositionOffset + camera.playerCameraStates [i].camPositionOffset, camera.playerCameraStates [i].Name, style); } } } } } public override void OnInspectorGUI () { EditorGUI.BeginChangeCheck (); EditorGUILayout.Space (); buttonStyle = new GUIStyle (GUI.skin.button); buttonStyle.fontStyle = FontStyle.Bold; buttonStyle.fontSize = 12; GUILayout.BeginVertical ("Camera Components", "window"); EditorGUILayout.PropertyField (playerCameraTransform); EditorGUILayout.PropertyField (mainCamera); EditorGUILayout.PropertyField (mainCameraTransform); EditorGUILayout.PropertyField (pivotCameraTransform); EditorGUILayout.PropertyField (pivotLeanTransform); EditorGUILayout.PropertyField (pivotLeanChildTransform); EditorGUILayout.PropertyField (mainCameraParent); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Main Settings", "window"); EditorGUILayout.PropertyField (cameraRotationInputEnabled); EditorGUILayout.PropertyField (thirdPersonVerticalRotationSpeed); EditorGUILayout.PropertyField (thirdPersonHorizontalRotationSpeed); EditorGUILayout.PropertyField (firstPersonVerticalRotationSpeed); EditorGUILayout.PropertyField (firstPersonHorizontalRotationSpeed); EditorGUILayout.PropertyField (maxCheckDist); EditorGUILayout.Space (); EditorGUILayout.PropertyField (smoothBetweenState); EditorGUILayout.PropertyField (movementLerpSpeed); EditorGUILayout.PropertyField (pivotCameraMovementLerpSpeed); EditorGUILayout.Space (); EditorGUILayout.PropertyField (extraCameraCollisionDistance); EditorGUILayout.PropertyField (cameraCollisionAlwaysActive); EditorGUILayout.PropertyField (usePivotCameraCollisionEnabled); if (usePivotCameraCollisionEnabled.boolValue) { EditorGUILayout.PropertyField (pivotCameraCollisionHeightOffset); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (defaultNearClipPlane); EditorGUILayout.Space (); EditorGUILayout.PropertyField (ignoreExternalFovChangesEnabled); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Full Body Awareness Settings", "window"); EditorGUILayout.PropertyField (fullBodyAwarenessEnabled); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Change View Settings", "window"); EditorGUILayout.PropertyField (changeCameraViewEnabled); EditorGUILayout.PropertyField (aimSide); EditorGUILayout.PropertyField (changeCameraSideActive); EditorGUILayout.PropertyField (toogleCameraViewToThirdFirstAndLockedEnabled); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Camera Bullet Time Settings", "window"); EditorGUILayout.PropertyField (regularMovementOnBulletTime); EditorGUILayout.PropertyField (useUnscaledTimeOnBulletTime); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Follow Position Settings", "window"); EditorGUILayout.PropertyField (useSmoothCameraFollow); if (useSmoothCameraFollow.boolValue) { EditorGUILayout.PropertyField (smoothCameraFollowSpeed); EditorGUILayout.PropertyField (smoothCameraFollowSpeedOnAim); EditorGUILayout.PropertyField (smoothCameraFollowMaxDistance); EditorGUILayout.PropertyField (smoothCameraFollowMaxDistanceSpeed); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (smoothReturnSpeed); EditorGUILayout.PropertyField (checkCameraDistanceOnSmoothReturnEnabled); EditorGUILayout.PropertyField (smoothGoSpeed); EditorGUILayout.PropertyField (checkCameraDistanceOnSmoothGoEnabled); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Smooth Camera Rotation Settings", "window"); EditorGUILayout.PropertyField (useSmoothCameraRotation); if (useSmoothCameraRotation.boolValue) { EditorGUILayout.PropertyField (useSmoothCameraRotationThirdPerson); if (useSmoothCameraRotationThirdPerson.boolValue) { EditorGUILayout.PropertyField (smoothCameraRotationSpeedVerticalThirdPerson); EditorGUILayout.PropertyField (smoothCameraRotationSpeedHorizontalThirdPerson); } EditorGUILayout.PropertyField (useSmoothCameraRotationFirstPerson); if (useSmoothCameraRotationFirstPerson.boolValue) { EditorGUILayout.PropertyField (smoothCameraRotationSpeedVerticalFirstPerson); EditorGUILayout.PropertyField (smoothCameraRotationSpeedHorizontalFirstPerson); } } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Zoom Settings", "window"); EditorGUILayout.PropertyField (zoomSpeed); EditorGUILayout.PropertyField (fovChangeSpeed); EditorGUILayout.PropertyField (thirdPersonVerticalRotationSpeedZoomIn); EditorGUILayout.PropertyField (thirdPersonHorizontalRotationSpeedZoomIn); EditorGUILayout.PropertyField (firstPersonVerticalRotationSpeedZoomIn); EditorGUILayout.PropertyField (firstPersonHorizontalRotationSpeedZoomIn); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Mouse Wheel Settings", "window"); EditorGUILayout.PropertyField (moveCameraPositionWithMouseWheelActive); if (moveCameraPositionWithMouseWheelActive.boolValue) { EditorGUILayout.PropertyField (moveCameraPositionForwardWithMouseWheelSpeed); EditorGUILayout.PropertyField (moveCameraPositionBackwardWithMouseWheelSpeed); EditorGUILayout.PropertyField (reverseMouseWheelDirectionEnabled); EditorGUILayout.PropertyField (maxExtraDistanceOnThirdPerson); EditorGUILayout.PropertyField (useCameraMouseWheelStates); if (useCameraMouseWheelStates.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Mouse Wheel Settings", "window"); showCameraMouseWheelStatesList (cameraMouseWheelStatesList); GUILayout.EndVertical (); } else { EditorGUILayout.PropertyField (minDistanceToChangeToFirstPerson); } } GUILayout.EndVertical (); if (using2_5ViewActive.boolValue || cameraType.enumValueIndex == 1) { EditorGUILayout.Space (); GUILayout.BeginVertical ("2.5d Camera Settings", "window"); EditorGUILayout.PropertyField (useCameraLimit); if (useCameraLimit.boolValue) { EditorGUILayout.PropertyField (useWidthLimit); if (useWidthLimit.boolValue) { EditorGUILayout.PropertyField (widthLimitRight); EditorGUILayout.PropertyField (widthLimitLeft); } EditorGUILayout.PropertyField (useHeightLimit); if (useHeightLimit.boolValue) { EditorGUILayout.PropertyField (heightLimitUpper); EditorGUILayout.PropertyField (heightLimitLower); } EditorGUILayout.PropertyField (useDepthLimit); if (useDepthLimit.boolValue) { EditorGUILayout.PropertyField (depthLimitFront); EditorGUILayout.PropertyField (depthLimitBackward); } EditorGUILayout.PropertyField (currentCameraLimitPosition); } EditorGUILayout.PropertyField (clampAimDirections); EditorGUILayout.PropertyField (numberOfAimDirections); EditorGUILayout.PropertyField (minDistanceToCenterClampAim); GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Zero Gravity Camera Settings", "window"); EditorGUILayout.PropertyField (canRotateForwardOnZeroGravityModeOn); EditorGUILayout.PropertyField (rotateForwardOnZeroGravitySpeed); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Reset Camera Rotation Settings", "window"); EditorGUILayout.PropertyField (resetCameraRotationAfterTime); if (resetCameraRotationAfterTime.boolValue) { EditorGUILayout.PropertyField (timeToResetCameraRotation); } EditorGUILayout.PropertyField (resetCameraRotationSpeed); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Set Extra Camera Rotation Settings", "window"); EditorGUILayout.PropertyField (setExtraCameraRotationEnabled); if (setExtraCameraRotationEnabled.boolValue) { EditorGUILayout.PropertyField (extraCameraRotationAmount); EditorGUILayout.PropertyField (extraCameraRotationSpeed); EditorGUILayout.PropertyField (useCameraForwardDirection); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Player Camera States", "window"); EditorGUILayout.PropertyField (currentStateName); EditorGUILayout.Space (); EditorGUILayout.PropertyField (defaultThirdPersonStateName); EditorGUILayout.PropertyField (defaultFirstPersonStateName); EditorGUILayout.Space (); EditorGUILayout.PropertyField (defaultFullBodyAwarenessStateName); EditorGUILayout.PropertyField (defaultFullBodyAwarenessCrouchStateName); EditorGUILayout.PropertyField (defaultFullBodyAwarenessAimStateName); EditorGUILayout.PropertyField (defaultFullBodyAwarenessCrouchAimStateName); EditorGUILayout.PropertyField (defaultFullBodyAwarenessDualAimStateName); EditorGUILayout.PropertyField (defaultFullBodyAwarenessCrouchDualAimStateName); EditorGUILayout.Space (); EditorGUILayout.PropertyField (defaultThirdPersonAimRightStateName); EditorGUILayout.PropertyField (defaultThirdPersonAimLeftStateName); EditorGUILayout.Space (); EditorGUILayout.PropertyField (defaultThirdPersonAimRightCrouchStateName); EditorGUILayout.PropertyField (defaultThirdPersonAimLeftCrouchStateName); EditorGUILayout.Space (); EditorGUILayout.PropertyField (defaultThirdPersonCrouchStateName); EditorGUILayout.PropertyField (defaultFirstPersonCrouchStateName); EditorGUILayout.Space (); EditorGUILayout.PropertyField (defaultMoveCameraAwayStateName); EditorGUILayout.PropertyField (defaultLockedCameraStateName); EditorGUILayout.PropertyField (defaultAICameraStateName); EditorGUILayout.PropertyField (defaultVehiclePassengerStateName); EditorGUILayout.Space (); showPlayerCameraStates (playerCameraStates); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Player Camera States Events Settings", "window"); EditorGUILayout.PropertyField (useEventsOnCameraStateChange); if (useEventsOnCameraStateChange.boolValue) { EditorGUILayout.Space (); showCameraStateEventInfoList (cameraStateEventInfoList); } GUILayout.EndVertical (); EditorGUILayout.Space (); defBackgroundColor = GUI.backgroundColor; EditorGUILayout.BeginVertical (); if (showCameraDebugState.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = defBackgroundColor; } if (GUILayout.Button ("Show Camera Debug State")) { showCameraDebugState.boolValue = !showCameraDebugState.boolValue; } GUI.backgroundColor = defBackgroundColor; EditorGUILayout.EndVertical (); if (showCameraDebugState.boolValue) { showSectionTitle ("DEBUG SETTINGS"); EditorGUILayout.Space (); GUILayout.BeginVertical ("Current Camera States", "window"); GUILayout.Label ("Camera Mode\t\t\t" + camera.cameraType); GUILayout.Label ("On Ground\t\t\t" + onGround.boolValue); GUILayout.Label ("Aiming 3rd Person\t\t" + aimingInThirdPerson.boolValue); GUILayout.Label ("Crouching\t\t\t" + crouching.boolValue); EditorGUILayout.Space (); GUILayout.Label ("Using Zoom On\t\t\t" + usingZoomOn.boolValue); GUILayout.Label ("Using Zoom Off\t\t\t" + usingZoomOff.boolValue); GUILayout.Label ("Camera Can Rotate\t\t" + cameraCanRotate.boolValue); GUILayout.Label ("Camera Can Be Used\t\t" + cameraCanBeUsed.boolValue); EditorGUILayout.Space (); GUILayout.Label ("First Person Active\t\t" + firstPersonActive.boolValue); GUILayout.Label ("Full Body Awareness Active\t" + fullBodyAwarenessActive.boolValue); GUILayout.Label ("Using 2.5d View\t\t\t" + using2_5ViewActive.boolValue); GUILayout.Label ("Using Top Down View\t\t" + useTopDownView.boolValue); EditorGUILayout.Space (); GUILayout.Label ("Look Angle\t\t\t" + lookAngle.vector2Value); GUILayout.Label ("Looking At Target\t\t" + lookingAtTarget.boolValue); GUILayout.Label ("Looking At Point\t\t" + lookingAtPoint.boolValue); GUILayout.Label ("Following Multiple Targets\t" + followingMultipleTargets.boolValue); GUILayout.Label ("Custom Aim Active\t\t" + useCustomThirdPersonAimActive.boolValue); EditorGUILayout.Space (); GUILayout.Label ("Horizontal Input\t\t\t" + horizontalInput.floatValue); GUILayout.Label ("Vertical Input\t\t\t" + verticalInput.floatValue); GUILayout.Label ("Lean Active \t\t\t" + leanActive.boolValue); GUILayout.Label ("Lean To Right \t\t\t" + leanToRightActive.boolValue); GUILayout.Label ("Navmesh Active\t\t\t" + playerNavMeshEnabled.boolValue); GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Locked Camera Elements", "window"); EditorGUILayout.PropertyField (lockedCameraSystemPrefab); EditorGUILayout.PropertyField (lockedCameraLimitSystemPrefab); EditorGUILayout.Space (); if (GUILayout.Button ("Add New Locked Camera System")) { camera.addNewLockedCameraSystemToLevel (); } EditorGUILayout.Space (); if (GUILayout.Button ("Add New Locked Camera Limit System")) { camera.addNewLockedCameraLimitSystemToLevel (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Locked Camera Prefabs List", "window"); showLockedCameraPrefabsTypesList (lockedCameraPrefabsTypesList); GUILayout.EndVertical (); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Camera Noise List", "window"); showCameraNoiseStateList (cameraNoiseStateList); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("AI Settings", "window"); EditorGUILayout.PropertyField (usedByAI); if (usedByAI.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("2.5d Locked Settings On AI", "window"); EditorGUILayout.PropertyField (customOriginalLockedCameraPivotPosition); EditorGUILayout.PropertyField (useCustomOriginalLockedCameraPivotPositionTransform); if (useCustomOriginalLockedCameraPivotPositionTransform.boolValue) { EditorGUILayout.PropertyField (customOriginalLockedCameraPivotPositionTransform); } GUILayout.EndVertical (); } GUILayout.EndVertical (); EditorGUILayout.Space (); defBackgroundColor = GUI.backgroundColor; EditorGUILayout.BeginVertical (); if (showSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = defBackgroundColor; } if (GUILayout.Button ("Settings")) { showSettings.boolValue = !showSettings.boolValue; } if (showLookTargetSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = defBackgroundColor; } if (GUILayout.Button ("Look At Target Settings")) { showLookTargetSettings.boolValue = !showLookTargetSettings.boolValue; } if (showEventSettings.boolValue) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = defBackgroundColor; } if (GUILayout.Button ("Event Settings")) { showEventSettings.boolValue = !showEventSettings.boolValue; } GUI.backgroundColor = defBackgroundColor; EditorGUILayout.EndVertical (); if (showSettings.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Basic Camera Settings", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); GUILayout.BeginVertical ("Main Settings", "window"); EditorGUILayout.PropertyField (layer, new GUIContent ("Collision Layer")); EditorGUILayout.PropertyField (zoomEnabled); EditorGUILayout.PropertyField (moveAwayCameraEnabled); EditorGUILayout.PropertyField (enableMoveAwayInAir); EditorGUILayout.PropertyField (enableShakeCamera); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useAcelerometer); EditorGUILayout.PropertyField (reverseVerticalAccelerometer); EditorGUILayout.PropertyField (reverseHorizontalAccelerometer); GUILayout.EndVertical (); EditorGUILayout.Space (); defBackgroundColor = GUI.backgroundColor; EditorGUILayout.BeginVertical (); if (showElements.boolValue) { GUI.backgroundColor = Color.gray; currentButtonString = "Hide Camera Components"; } else { GUI.backgroundColor = defBackgroundColor; currentButtonString = "Show Camera Components"; } if (GUILayout.Button (currentButtonString)) { showElements.boolValue = !showElements.boolValue; } GUI.backgroundColor = defBackgroundColor; EditorGUILayout.EndVertical (); if (showElements.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Locked Camera Elements", "window"); EditorGUILayout.PropertyField (lockedCameraElementsParent); EditorGUILayout.PropertyField (lockedMainCameraTransform); EditorGUILayout.PropertyField (lockedCameraAxis); EditorGUILayout.PropertyField (lockedCameraPosition); EditorGUILayout.PropertyField (lockedCameraPivot); EditorGUILayout.PropertyField (lookCameraParent); EditorGUILayout.PropertyField (lookCameraPivot); EditorGUILayout.PropertyField (lookCameraDirection); EditorGUILayout.PropertyField (clampAimDirectionTransform); EditorGUILayout.PropertyField (lookDirectionTransform); EditorGUILayout.PropertyField (auxLockedCameraAxis); EditorGUILayout.PropertyField (setTransparentSurfacesManager); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Player Camera Elements", "window"); EditorGUILayout.PropertyField (playerControllerGameObject); EditorGUILayout.PropertyField (playerInput); EditorGUILayout.PropertyField (playerControllerManager); EditorGUILayout.PropertyField (powersManager); EditorGUILayout.PropertyField (gravityManager); EditorGUILayout.PropertyField (headBobManager); EditorGUILayout.PropertyField (grabObjectsManager); EditorGUILayout.PropertyField (scannerManager); EditorGUILayout.PropertyField (weaponsManager); EditorGUILayout.PropertyField (playerNavMeshManager); EditorGUILayout.PropertyField (characterStateIconManager); EditorGUILayout.PropertyField (mainCollider); EditorGUILayout.PropertyField (mainCameraCaptureSystem); EditorGUILayout.PropertyField (targetToFollow); EditorGUILayout.PropertyField (hipsTransform); GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Camera List Settings", "window"); showSimpleList (cameraList, "Camera List"); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Use Camera Reticle Settings", "window"); EditorGUILayout.PropertyField (updateReticleActiveState); if (updateReticleActiveState.boolValue) { EditorGUILayout.PropertyField (useCameraReticleThirdPerson); EditorGUILayout.PropertyField (useCameraReticleFirstPerson); EditorGUILayout.PropertyField (cameraReticleGameObject); EditorGUILayout.PropertyField (mainCameraReticleGameObject); EditorGUILayout.Space (); GUILayout.Label ("Camera Reticle Active\t\t" + cameraReticleCurrentlyActive.boolValue); GUILayout.Label ("External Reticle Active\t" + externalReticleCurrentlyActive.boolValue); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Use Camera Reticle Settings", "window"); EditorGUILayout.PropertyField (mainCustomReticleParent); EditorGUILayout.Space (); showCustomReticleInfoList (customReticleInfoList); GUILayout.EndVertical (); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Adjust Camera To Previous Character View Settings", "window"); EditorGUILayout.PropertyField (adjustCameraToPreviousCharacterDirectionActive); EditorGUILayout.PropertyField (useSmoothCameraTransitionBetweenCharacters); EditorGUILayout.PropertyField (smoothCameraTransitionBetweenCharactersSpeed); EditorGUILayout.PropertyField (setNewCharacterAlwaysInPreviousCharacterView); if (!setNewCharacterAlwaysInPreviousCharacterView.boolValue) { EditorGUILayout.PropertyField (setNewCharacterAlwaysInThirdPerson); EditorGUILayout.PropertyField (setNewCharacterAlwaysInFirstPerson); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Local Multiplayer Single Camera Settings", "window"); EditorGUILayout.PropertyField (useMultipleTargetFov); if (useMultipleTargetFov.boolValue) { EditorGUILayout.PropertyField (multipleTargetsMinFov); EditorGUILayout.PropertyField (multipleTargetsMaxFov); EditorGUILayout.PropertyField (multipleTargetsFovSpeed); } EditorGUILayout.PropertyField (useMultipleTargetsYPosition); if (useMultipleTargetsYPosition.boolValue) { EditorGUILayout.PropertyField (multipleTargetsYPositionSpeed); EditorGUILayout.PropertyField (multipleTargetsMaxHeight); EditorGUILayout.PropertyField (multipleTargetsHeightMultiplier); EditorGUILayout.PropertyField (maxMultipleTargetHeight); EditorGUILayout.PropertyField (minMultipleTargetHeight); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Gizmo Settings", "window"); EditorGUILayout.PropertyField (showCameraGizmo); if (showCameraGizmo.boolValue) { EditorGUILayout.PropertyField (gizmoRadius); EditorGUILayout.PropertyField (gizmoLabelColor); EditorGUILayout.PropertyField (linesColor); } EditorGUILayout.PropertyField (showDebugPrint); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); EditorGUILayout.Space (); } if (showLookTargetSettings.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Look At Target Camera Settings", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Look At Target Settings", "window"); EditorGUILayout.PropertyField (lookAtTargetEnabled); if (lookAtTargetEnabled.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Main Settings", "window"); EditorGUILayout.PropertyField (canActivateLookAtTargetEnabled); EditorGUILayout.PropertyField (canActiveLookAtTargetOnLockedCamera); EditorGUILayout.PropertyField (lookAtTargetTransform); EditorGUILayout.PropertyField (targetToLook); EditorGUILayout.PropertyField (maxDistanceToFindTarget); EditorGUILayout.PropertyField (useLayerToSearchTargets); if (useLayerToSearchTargets.boolValue) { EditorGUILayout.PropertyField (layerToLook); } EditorGUILayout.PropertyField (lookOnlyIfTargetOnScreen); EditorGUILayout.PropertyField (checkObstaclesToTarget); EditorGUILayout.PropertyField (getClosestToCameraCenter); if (getClosestToCameraCenter.boolValue) { EditorGUILayout.PropertyField (useMaxDistanceToCameraCenter); if (useMaxDistanceToCameraCenter.boolValue) { EditorGUILayout.PropertyField (maxDistanceToCameraCenter); } } EditorGUILayout.PropertyField (activateStrafeModeIfNoTargetsToLookFound); EditorGUILayout.PropertyField (layerToCheckPossibleTargetsBelowCursor); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Search Point To Look Objects Settings", "window"); EditorGUILayout.PropertyField (searchPointToLookComponents); if (searchPointToLookComponents.boolValue) { EditorGUILayout.PropertyField (pointToLookComponentsLayer); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Stop Look At Target Aim Assist Settings", "window"); EditorGUILayout.PropertyField (useTimeToStopAimAssist); if (useTimeToStopAimAssist.boolValue) { EditorGUILayout.PropertyField (timeToStopAimAssist); } EditorGUILayout.PropertyField (useTimeToStopAimAssistLockedCamera); if (useTimeToStopAimAssistLockedCamera.boolValue) { EditorGUILayout.PropertyField (timeToStopAimAssistLockedCamera); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Change Between Target Settings", "window"); EditorGUILayout.PropertyField (canChangeTargetToLookWithCameraAxis); if (canChangeTargetToLookWithCameraAxis.boolValue) { EditorGUILayout.PropertyField (minimumCameraDragToChangeTargetToLook); EditorGUILayout.PropertyField (waitTimeToNextChangeTargetToLook); EditorGUILayout.PropertyField (useOnlyHorizontalCameraDragValue); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Look At Target Speed Settings", "window"); EditorGUILayout.PropertyField (lookAtTargetSpeed); EditorGUILayout.PropertyField (lookCloserAtTargetSpeed); EditorGUILayout.PropertyField (lookAtTargetSpeed2_5dView); EditorGUILayout.PropertyField (lookAtTargetSpeedOthersLockedViews); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Icon Settings", "window"); EditorGUILayout.PropertyField (useLookTargetIcon); if (useLookTargetIcon.boolValue) { EditorGUILayout.PropertyField (lookAtTargetIcon); EditorGUILayout.PropertyField (lookAtTargetRegularIconGameObject); EditorGUILayout.PropertyField (lookAtTargetIconWhenNotAiming); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Tag To Look List", "window"); showSimpleList (tagToLookList, "Tag To Look List"); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Look At Characters Body Parts Settings", "window"); EditorGUILayout.PropertyField (lookAtBodyPartsOnCharacters); if (lookAtBodyPartsOnCharacters.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Body Parts To Look List", "window"); showSimpleList (bodyPartsToLook, "Body Parts To Look List"); GUILayout.EndVertical (); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Look At Characters Body Parts Settings", "window"); EditorGUILayout.PropertyField (useObjectToGrabFoundShader); if (useObjectToGrabFoundShader.boolValue) { EditorGUILayout.PropertyField (objectToGrabFoundShader); EditorGUILayout.PropertyField (shaderOutlineWidth); EditorGUILayout.PropertyField (shaderOutlineColor); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Remote Events On Lock On Settings", "window"); EditorGUILayout.PropertyField (useRemoteEventsOnLockOn); if (useRemoteEventsOnLockOn.boolValue) { showSimpleList (remoteEventOnLockOnStart, "Remote Events On Lock Start"); EditorGUILayout.Space (); showSimpleList (remoteEventOnLockOnEnd, "Remote Events On Lock End"); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Events On Lock On Settings", "window"); EditorGUILayout.PropertyField (useEventsOnLockOn); if (useEventsOnLockOn.boolValue) { EditorGUILayout.PropertyField (eventOnLockOnStart); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventOnLockOnEnd); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (useEventsOnLockAtTarget); if (useEventsOnLockAtTarget.boolValue) { EditorGUILayout.PropertyField (eventOnLockAtTargetStart); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventOnLockAtTargetEnd); } GUILayout.EndVertical (); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); EditorGUILayout.Space (); } EditorGUILayout.Space (); if (showEventSettings.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Event Settings", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Event On Moving Locked Camera Settings", "window"); EditorGUILayout.PropertyField (useEventOnMovingLockedCamera); EditorGUILayout.PropertyField (useEventOnFreeCamera); if (useEventOnMovingLockedCamera.boolValue || useEventOnFreeCamera.boolValue) { EditorGUILayout.PropertyField (eventOnStartMovingLockedCamera); EditorGUILayout.PropertyField (eventOnKeepMovingLockedCamera); EditorGUILayout.PropertyField (eventOnStopMovingLockedCamera); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Event On Third/First Person View Change Settings", "window"); EditorGUILayout.PropertyField (useEventOnThirdFirstPersonViewChange); if (useEventOnThirdFirstPersonViewChange.boolValue) { EditorGUILayout.PropertyField (setFirstPersonEvent); EditorGUILayout.PropertyField (setThirdPersonEvent); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Event On FBA Person View Change Settings", "window"); EditorGUILayout.PropertyField (useEventOnFBAViewChange); if (useEventOnFBAViewChange.boolValue) { EditorGUILayout.PropertyField (eventOnEnableFBA); EditorGUILayout.PropertyField (eventOnDisableFBA); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventOnEnableFBAInEditor); EditorGUILayout.PropertyField (eventOnDisableFBAInEditor); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Other FBA Settings", "window"); EditorGUILayout.PropertyField (useHeadColliderOnFBA); EditorGUILayout.PropertyField (useHeadColliderOnThirdPerson); if (useHeadColliderOnFBA.boolValue || useHeadColliderOnThirdPerson.boolValue) { EditorGUILayout.PropertyField (headColliderOnFBA); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventToActivateHeadColliderOnFBA); EditorGUILayout.PropertyField (eventToDeactivateHeadColliderOnFBA); EditorGUILayout.Space (); EditorGUILayout.PropertyField (eventToActivateHeadColliderOnFBAOnEditor); EditorGUILayout.PropertyField (eventToDeactivateHeadColliderOnFBAOnEditor); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Change Third/First Person View In Editor Events Settings", "window"); EditorGUILayout.PropertyField (setThirdPersonInEditorEvent); EditorGUILayout.PropertyField (setFirstPersonInEditorEvent); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); EditorGUILayout.Space (); } EditorGUILayout.Space (); if (EditorGUI.EndChangeCheck ()) { serializedObject.ApplyModifiedProperties (); Repaint (); } EditorGUILayout.Space (); if (!Application.isPlaying) { //set in the inspector the current camera type if (!checkCamera) { if (camera.isFirstPersonActive ()) { currentCamera = "FIRST PERSON"; } else { if (camera.isFullBodyAwarenessActive ()) { currentCamera = "FIRST PERSON FBA"; } else { currentCamera = "THIRD PERSON"; } } checkCamera = true; } GUILayout.Label ("Current Camera: " + currentCamera); if (GUILayout.Button ("Set First Person")) { camera.setFirstPersonInEditor (); if (camera.isFullBodyAwarenessActive ()) { currentCamera = "FIRST PERSON FBA"; } else { currentCamera = "First PERSON"; } } if (GUILayout.Button ("Set Third Person")) { camera.setThirdPersonInEditor (); currentCamera = "THIRD PERSON"; } } } void showCameraStateElementInfo (SerializedProperty list, int stateIndex) { GUILayout.BeginVertical (); GUILayout.BeginVertical ("Main Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("camPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("pivotPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("pivotParentPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("cameraCollisionActive")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("pivotRotationOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("ignoreCameraShakeOnRunState")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("followTransformPosition")); if (list.FindPropertyRelative ("followTransformPosition").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("transformToFollow")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useFollowTransformPositionOffset")); if (list.FindPropertyRelative ("useFollowTransformPositionOffset").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("followTransformPositionOffset")); } } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("setNearClipPlaneValue")); if (list.FindPropertyRelative ("setNearClipPlaneValue").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("nearClipPlaneValue")); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomMovementLerpSpeed")); if (list.FindPropertyRelative ("useCustomMovementLerpSpeed").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("movementLerpSpeed")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Camera Rotation Limit Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("yLimits")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useYLimitsOnLookAtTargetActive")); if (list.FindPropertyRelative ("useYLimitsOnLookAtTargetActive").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("YLimitsOnLookAtTargetActive")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("FOV Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("initialFovValue")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("fovTransitionSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("maxFovValue")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("minFovValue")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Look In Player Direction Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("lookInPlayerDirection")); if (list.FindPropertyRelative ("lookInPlayerDirection").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("lookInPlayerDirectionSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("allowRotationWithInput")); if (list.FindPropertyRelative ("allowRotationWithInput").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("timeToResetRotationAfterInput")); } } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Lean Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("leanEnabled")); if (list.FindPropertyRelative ("leanEnabled").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("maxLeanAngle")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("leanSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("leanResetSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("leanRaycastDistance")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("leanAngleOnSurfaceFound")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("leanHeight")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("isLeanOnFBA")); if (list.FindPropertyRelative ("isLeanOnFBA").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBALeanPositionOffsetX")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBALeanPositionOffsetY")); } } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Head Track Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("headTrackActive")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Gizmo Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("showGizmo")); if (list.FindPropertyRelative ("showGizmo").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("gizmoColor")); } GUILayout.EndVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Update Camera State Values (Debug)")) { if (Application.isPlaying) { camera.updateCameraStateValuesOnEditor (stateIndex); } } EditorGUILayout.Space (); GUILayout.EndVertical (); } void showPlayerCameraStates (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide Player Camera States", buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number of States: " + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add State")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { expanded = false; GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); EditorGUILayout.Space (); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { showCameraStateElementInfo (list.GetArrayElementAtIndex (i), i); expanded = true; } EditorGUILayout.Space (); GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.EndHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } if (GUILayout.Button ("v")) { if (i >= 0) { list.MoveArrayElement (i, i + 1); } } if (GUILayout.Button ("^")) { if (i < list.arraySize) { list.MoveArrayElement (i, i - 1); } } if (expanded) { GUILayout.EndVertical (); } else { GUILayout.EndHorizontal (); } GUILayout.EndHorizontal (); } } GUILayout.EndVertical (); } void showSimpleList (SerializedProperty list, string listName) { EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + listName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUILayout.Label ("Amount: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { GUILayout.BeginHorizontal (); if (i < list.arraySize && i >= 0) { EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), new GUIContent ("", null, ""), false); } GUILayout.BeginHorizontal (); if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } if (GUILayout.Button ("v")) { if (i >= 0) { list.MoveArrayElement (i, i + 1); } } if (GUILayout.Button ("^")) { if (i < list.arraySize) { list.MoveArrayElement (i, i - 1); } } GUILayout.EndHorizontal (); GUILayout.EndHorizontal (); EditorGUILayout.Space (); } GUILayout.EndVertical (); } } void showCameraMouseWheelStatesList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide Camera Mouse Wheel States List", buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number of States: " + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add State")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { expanded = false; GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); EditorGUILayout.Space (); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { showCameraMouseWheelStatesListElement (list.GetArrayElementAtIndex (i)); expanded = true; } EditorGUILayout.Space (); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } if (GUILayout.Button ("v")) { if (i >= 0) { list.MoveArrayElement (i, i + 1); } } if (GUILayout.Button ("^")) { if (i < list.arraySize) { list.MoveArrayElement (i, i - 1); } } if (expanded) { GUILayout.EndVertical (); } else { GUILayout.EndHorizontal (); } GUILayout.EndHorizontal (); } } GUILayout.EndVertical (); } void showCameraMouseWheelStatesListElement (SerializedProperty list) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("isFirstPerson")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("cameraDistanceRange")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("isCurrentCameraState")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("changeCameraFromAboveStateWithName")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("changeCameraFromBelowStateWithName")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("changeCameraIfDistanceChanged")); if (list.FindPropertyRelative ("changeCameraIfDistanceChanged").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("minCameraDistanceToChange")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("changeToAboveCameraState")); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useClampOnCloseDistance")); if (list.FindPropertyRelative ("useClampOnCloseDistance").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("clampOnCloseDistance")); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useClampOnFarDistance")); if (list.FindPropertyRelative ("useClampOnFarDistance").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("clampOnFarDistance")); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventFromAboveCameraState")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventFromBelowCameraState")); GUILayout.EndVertical (); } void showLockedCameraPrefabsTypesList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide Locked Camera Prefabs List", buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number of Prefabs: " + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Prefab")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { expanded = false; GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); EditorGUILayout.Space (); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { showLockedCameraPrefabsTypesListElement (list.GetArrayElementAtIndex (i), i); expanded = true; } EditorGUILayout.Space (); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("Add")) { camera.addNewLockedCameraPrefabTypeLevel (i); } if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } if (expanded) { GUILayout.EndVertical (); } else { GUILayout.EndHorizontal (); } GUILayout.EndHorizontal (); } } GUILayout.EndVertical (); } void showLockedCameraPrefabsTypesListElement (SerializedProperty list, int lockedCameraIndex) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("lockedCameraPrefab")); EditorGUILayout.Space (); if (GUILayout.Button ("Add Camera To Scene")) { camera.addNewLockedCameraPrefabTypeLevel (lockedCameraIndex); } GUILayout.EndVertical (); } void showCameraNoiseStateList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide Camera Noise State List", buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number of States: " + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add State")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { expanded = false; GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); EditorGUILayout.Space (); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { showCameraNoiseStateListElement (list.GetArrayElementAtIndex (i)); expanded = true; } EditorGUILayout.Space (); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } if (expanded) { GUILayout.EndVertical (); } else { GUILayout.EndHorizontal (); } GUILayout.EndHorizontal (); } } GUILayout.EndVertical (); } void showCameraNoiseStateListElement (SerializedProperty list) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("noiseAmount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("noiseSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("roughness")); EditorGUILayout.Space (); if (GUILayout.Button ("Test Noise")) { if (Application.isPlaying) { camera.setCameraNoiseState (list.FindPropertyRelative ("Name").stringValue); } } EditorGUILayout.Space (); if (GUILayout.Button ("Stop Noise")) { if (Application.isPlaying) { camera.disableCameraNoiseState (); } } GUILayout.EndVertical (); } void showCameraStateEventInfoList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide Camera State Event Info List", buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number of States: " + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add State")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { expanded = false; GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); EditorGUILayout.Space (); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { showCameraStateEventInfoListElement (list.GetArrayElementAtIndex (i)); expanded = true; } EditorGUILayout.Space (); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } if (GUILayout.Button ("v")) { if (i >= 0) { list.MoveArrayElement (i, i + 1); } } if (GUILayout.Button ("^")) { if (i < list.arraySize) { list.MoveArrayElement (i, i - 1); } } if (expanded) { GUILayout.EndVertical (); } else { GUILayout.EndHorizontal (); } GUILayout.EndHorizontal (); } } GUILayout.EndVertical (); } void showCameraStateEventInfoListElement (SerializedProperty list) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnCameraStart")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnCameraEnd")); GUILayout.EndVertical (); } void showCustomReticleInfoList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide Custom Reticle Info List", buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number of Reticles: " + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Reticle")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { expanded = false; GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); EditorGUILayout.Space (); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { showCustomReticleInfoListElement (list.GetArrayElementAtIndex (i)); expanded = true; } EditorGUILayout.Space (); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("x")) { list.DeleteArrayElementAtIndex (i); } if (GUILayout.Button ("v")) { if (i >= 0) { list.MoveArrayElement (i, i + 1); } } if (GUILayout.Button ("^")) { if (i < list.arraySize) { list.MoveArrayElement (i, i - 1); } } if (expanded) { GUILayout.EndVertical (); } else { GUILayout.EndHorizontal (); } GUILayout.EndHorizontal (); } } GUILayout.EndVertical (); } void showCustomReticleInfoListElement (SerializedProperty list) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("customReticleObject")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("isCurrentReticle")); GUILayout.EndVertical (); } void showSectionTitle (string sectionTitle) { sectionStyle.fontStyle = FontStyle.Bold; sectionStyle.fontSize = 30; sectionStyle.alignment = TextAnchor.MiddleCenter; EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField (sectionTitle, sectionStyle); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); } } #endif