411 lines
12 KiB
C#
411 lines
12 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using GameKitController.Audio;
|
|
|
|
[System.Serializable]
|
|
public class IKWeaponInfo
|
|
{
|
|
public GameObject weapon;
|
|
public Transform aimPosition;
|
|
public Transform walkPosition;
|
|
public Transform keepPosition;
|
|
public Transform aimRecoilPosition;
|
|
public Transform walkRecoilPosition;
|
|
|
|
public bool checkSurfaceCollision;
|
|
public float collisionRayDistance = 0.54f;
|
|
public float collisionMovementSpeed = 10;
|
|
public Transform surfaceCollisionPosition;
|
|
public Transform surfaceCollisionRayPosition;
|
|
public bool hideCursorOnCollision;
|
|
|
|
public bool checkSurfaceOnlyOnAiming;
|
|
public bool avoidShootOnSurfaceDetected;
|
|
public bool avoidAimingIfSurfaceDetected;
|
|
|
|
public Transform lowerWeaponPosition;
|
|
|
|
public bool useSwayInfo = true;
|
|
public bool useRunPosition;
|
|
public float runMovementSpeed = 10;
|
|
public Transform runPosition;
|
|
public bool hideCursorOnRun;
|
|
public bool useRunSwayInfo;
|
|
|
|
public bool useJumpPositions;
|
|
public Transform jumpStartPosition;
|
|
public Transform jumpEndPosition;
|
|
public float jumpStartMovementSpeed = 3;
|
|
public float jumpEndtMovementSpeed = 3;
|
|
public float resetJumpMovementSped = 3;
|
|
public float delayAtJumpEnd = 0.4f;
|
|
|
|
public bool useReloadMovement;
|
|
public BezierSpline reloadSpline;
|
|
public float reloadDuration = 1;
|
|
public float reloadLookDirectionSpeed = 11;
|
|
|
|
public bool useNewFovOnRun;
|
|
public float changeFovSpeed;
|
|
public float newFovOnRun;
|
|
|
|
|
|
|
|
public bool useMeleeAttack;
|
|
public bool useCustomMeleeAttackLayer;
|
|
public LayerMask customMeleeAttackLayer;
|
|
public bool useCapsuleRaycast;
|
|
public Transform meleeAttackPosition;
|
|
public float meleeAttackStartMovementSpeed;
|
|
public float meleeAttackEndMovementSpeed;
|
|
public float meleeAttackEndDelay;
|
|
public Transform meleeAttackRaycastPosition;
|
|
public float meleeAttackRaycastDistance;
|
|
public float meleeAttackCapsuleDistance = 1.5f;
|
|
public float meleeAttackRaycastRadius;
|
|
public float meleeAttackDamageAmount;
|
|
public bool meleeAttackIgnoreShield;
|
|
public bool useMeleeAttackShakeInfo;
|
|
public bool applyMeleeAtackForce;
|
|
public float meleeAttackForceAmount;
|
|
public ForceMode meleeAttackForceMode;
|
|
public bool meleeAttackApplyForceToVehicles;
|
|
public float meleAttackForceToVehicles;
|
|
public bool useMeleeAttackSound;
|
|
public AudioClip meleeAttackSurfaceSound;
|
|
public AudioElement meleeAttackSurfaceAudioElement;
|
|
public AudioClip meleeAttackAirSound;
|
|
public AudioElement meleeAttackAirAudioElement;
|
|
public bool useMeleeAttackParticles;
|
|
public GameObject meleeAttackParticles;
|
|
public bool canActivateReactionSystemTemporally;
|
|
public int damageReactionID = -1;
|
|
|
|
public int damageTypeID = -1;
|
|
|
|
public bool damageCanBeBlocked = true;
|
|
|
|
public bool useActionSystemForMeleeAttack;
|
|
public string meleeAttackActionName;
|
|
|
|
public bool ignoreDamageValueOnLayer;
|
|
public LayerMask layerToIgnoreDamage;
|
|
|
|
|
|
public bool checkObjectsToUseRemoteEventsOnDamage;
|
|
public LayerMask layerToUseRemoteEventsOnDamage;
|
|
|
|
public bool useRemoteEvent;
|
|
public List<string> remoteEventNameList;
|
|
|
|
public bool useRemoteEventToEnableParryInteraction;
|
|
public List<string> remoteEventToEnableParryInteractionNameList;
|
|
|
|
public bool showMeleeAttackGizmo;
|
|
|
|
public bool hasAttachments;
|
|
public Transform editAttachmentPosition;
|
|
public Transform attachmentCameraPosition;
|
|
|
|
public GameObject leftHandMesh;
|
|
public GameObject extraLeftHandMesh;
|
|
|
|
public Transform leftHandEditPosition;
|
|
|
|
public Transform leftHandParent;
|
|
public Transform extraLeftHandMeshParent;
|
|
|
|
public float editAttachmentMovementSpeed = 2;
|
|
public float editAttachmentHandSpeed = 6;
|
|
public bool usingSecondPositionForHand;
|
|
public Transform secondPositionForHand;
|
|
|
|
public bool useSightPosition;
|
|
public Transform sightPosition;
|
|
public Transform sightRecoilPosition;
|
|
|
|
public bool canRunWhileCarrying = true;
|
|
public bool canRunWhileAiming = true;
|
|
public bool useNewCarrySpeed;
|
|
public float newCarrySpeed;
|
|
public bool useNewAimSpeed;
|
|
public float newAimSpeed;
|
|
|
|
public bool deactivateIKIfNotAiming;
|
|
public bool placeWeaponOnWalkPositionBeforeDeactivateIK = true;
|
|
public List<Transform> deactivateIKDrawPath = new List<Transform> ();
|
|
public Transform weaponPositionInHandForDeactivateIK;
|
|
|
|
public float drawWeaponMovementSpeed = 2;
|
|
public float aimMovementSpeed;
|
|
public bool weaponHasRecoil = true;
|
|
public float recoilSpeed = 5;
|
|
public float endRecoilSpeed = 4;
|
|
public bool useExtraRandomRecoil;
|
|
public bool useExtraRandomRecoilPosition = true;
|
|
public Vector3 extraRandomRecoilPosition;
|
|
public bool useExtraRandomRecoilRotation = true;
|
|
public Vector3 extraRandomRecoilRotation;
|
|
|
|
public float resetWeaponPositionAfterReloadSpeed = 3;
|
|
|
|
public float resetWeaponPositionAfterActionSpeed = 5;
|
|
|
|
public float resumeWeaponIKPositionAfterActionSpeed = 8;
|
|
|
|
public bool useQuickDrawKeepWeapon;
|
|
|
|
public bool useBezierCurve;
|
|
public BezierSpline spline;
|
|
public float bezierDuration = 0.5f;
|
|
public float lookDirectionSpeed = 11;
|
|
|
|
public List<Transform> keepPath = new List<Transform> ();
|
|
public List<IKWeaponsPosition> handsInfo = new List<IKWeaponsPosition> ();
|
|
public bool handsInPosition;
|
|
|
|
public bool useWeaponRotationPoint;
|
|
public Transform weaponRotationPoint;
|
|
public Transform weaponRotationPointHolder;
|
|
public Transform weaponRotationPointHeadLookTarget;
|
|
public weaponRotationPointInfo rotationPointInfo;
|
|
public Transform weaponPivotPoint;
|
|
|
|
public bool useCrouchPosition;
|
|
public Transform crouchPosition;
|
|
public Transform crouchRecoilPosition;
|
|
public float crouchMovementSpeed = 5;
|
|
|
|
public bool useHandle;
|
|
[Range (0, 0.1f)] public float handleRadius;
|
|
public Color handleGizmoColor;
|
|
|
|
public bool usePositionHandle = true;
|
|
|
|
public bool dualWeaponActive;
|
|
|
|
public bool usedOnRightHand;
|
|
|
|
public bool canBeUsedAsDualWeapon;
|
|
public dualWeaponInfo rightHandDualWeaopnInfo;
|
|
public dualWeaponInfo leftHandDualWeaponInfo;
|
|
|
|
public float changeOneOrTwoHandWieldSpeed = 5;
|
|
|
|
public bool usingWeaponAsOneHandWield;
|
|
|
|
public bool showSingleWeaponSettings;
|
|
|
|
public bool showDualWeaponSettings;
|
|
|
|
public bool useCustomThirdPersonAimActive;
|
|
public string customDefaultThirdPersonAimRightStateName;
|
|
public string customDefaultThirdPersonAimLeftStateName;
|
|
|
|
public bool useCustomThirdPersonAimCrouchActive;
|
|
public string customDefaultThirdPersonAimRightCrouchStateName;
|
|
public string customDefaultThirdPersonAimLeftCrouchStateName;
|
|
|
|
public bool useCustomThirdPersonWithoutAimActive;
|
|
public string customDefaultThirdPersonWithoutAimRightStateName;
|
|
public string customDefaultThirdPersonWithoutAimLeftStateName;
|
|
|
|
public bool useCustomThirdPersonWithoutAimCrouchActive;
|
|
public string customDefaultThirdPersonWithoutAimRightCrouchStateName;
|
|
public string customDefaultThirdPersonWithoutAimLeftCrouchStateName;
|
|
|
|
public bool useNewIdleID;
|
|
public int newIdleID;
|
|
|
|
public bool useDrawKeepWeaponAnimation;
|
|
public string drawWeaponActionName;
|
|
public string keepWeaponActionName;
|
|
|
|
public float delayToPlaceWeaponOnHandOnDrawAnimation = 1;
|
|
public float delayToPlaceWeaponOnKeepAnimation = 1;
|
|
|
|
public Vector3 FBAWalkPositionOffset;
|
|
public Vector3 FBAWalkRotationOffset;
|
|
|
|
public Vector3 FBAWalkRecoilPositionOffset;
|
|
public Vector3 FBAWalkRecoilRotationOffset;
|
|
|
|
public Vector3 FBARunPositionOffset;
|
|
public Vector3 FBARunRotationOffset;
|
|
|
|
public Vector3 FBAAimPositionOffset;
|
|
public Vector3 FBAAimRotationOffset;
|
|
|
|
public Vector3 FBAAimRecoilPositionOffset;
|
|
public Vector3 FBAAimRecoilRotationOffset;
|
|
|
|
public Vector3 FBACrouchPositionOffset;
|
|
public Vector3 FBACrouchRotationOffset;
|
|
|
|
public Vector3 FBACrouchRecoilPositionOffset;
|
|
public Vector3 FBACrouchRecoilRotationOffset;
|
|
|
|
public Vector3 FBAJumpStartPositionOffset;
|
|
public Vector3 FBAJumpStartRotationOffset;
|
|
|
|
public Vector3 FBAJumpEndPositionOffset;
|
|
public Vector3 FBAJumpEndRotationOffset;
|
|
|
|
public Vector3 FBAObstaclePositionOffset;
|
|
public Vector3 FBAObstacleRotationOffset;
|
|
|
|
|
|
public float FBAMoveWalkPositionSpeed = 20;
|
|
|
|
public bool overrideFBAValuesForOffset;
|
|
|
|
public float FBARandomRecoilWalkPositionMultiplier = 1;
|
|
public float FBARandomRecoilAimPositionMultiplier = 1;
|
|
|
|
public bool useFBARunPosition;
|
|
|
|
public bool ignoreIKElbowsOnFBA;
|
|
|
|
public List<FBAAimInfo> FBAAimInfoList = new List<FBAAimInfo> ();
|
|
|
|
public void InitializeAudioElements ()
|
|
{
|
|
if (meleeAttackSurfaceSound != null) {
|
|
meleeAttackSurfaceAudioElement.clip = meleeAttackSurfaceSound;
|
|
}
|
|
|
|
if (meleeAttackAirSound != null) {
|
|
meleeAttackAirAudioElement.clip = meleeAttackAirSound;
|
|
}
|
|
}
|
|
}
|
|
|
|
[System.Serializable]
|
|
public class FBAAimInfo
|
|
{
|
|
public string Name;
|
|
|
|
public Vector3 FBAAimPositionOffset;
|
|
public Vector3 FBAAimRotationOffset;
|
|
|
|
public Vector3 FBAAimRecoilPositionOffset;
|
|
public Vector3 FBAAimRecoilRotationOffset;
|
|
}
|
|
|
|
[System.Serializable]
|
|
public class dualWeaponInfo
|
|
{
|
|
public Transform aimPosition;
|
|
public Transform aimRecoilPosition;
|
|
|
|
public Transform walkPosition;
|
|
public Transform walkRecoilPosition;
|
|
|
|
public Transform keepPosition;
|
|
|
|
public Transform crouchPosition;
|
|
public Transform crouchRecoilPosition;
|
|
|
|
public float collisionRayDistance = 0.54f;
|
|
public Transform surfaceCollisionPosition;
|
|
public Transform surfaceCollisionRayPosition;
|
|
|
|
public Transform lowerWeaponPosition;
|
|
public Transform runPosition;
|
|
|
|
public Transform jumpStartPosition;
|
|
public Transform jumpEndPosition;
|
|
|
|
public Transform meleeAttackPosition;
|
|
public Transform meleeAttackRaycastPosition;
|
|
|
|
public GameObject firstPersonHandMesh;
|
|
|
|
public Transform editAttachmentPosition;
|
|
public Transform attachmentCameraPosition;
|
|
|
|
public bool deactivateIKIfNotAiming;
|
|
public List<Transform> deactivateIKDrawPath = new List<Transform> ();
|
|
public Transform weaponPositionInHandForDeactivateIK;
|
|
public bool placeWeaponOnWalkPositionBeforeDeactivateIK = true;
|
|
|
|
public bool useDualRotationPoint;
|
|
public Transform weaponRotationPoint;
|
|
public Transform weaponRotationPointHolder;
|
|
|
|
public bool useBezierCurve;
|
|
public BezierSpline spline;
|
|
public float bezierDuration = 0.5f;
|
|
public float lookDirectionSpeed = 11;
|
|
|
|
public List<Transform> keepPath = new List<Transform> ();
|
|
public List<IKWeaponsPosition> handsInfo = new List<IKWeaponsPosition> ();
|
|
public bool handsInPosition;
|
|
|
|
public bool useQuickDrawKeepWeapon;
|
|
|
|
public bool placeWeaponOnKeepPositionSideBeforeDraw;
|
|
|
|
public bool useReloadMovement;
|
|
public BezierSpline reloadSpline;
|
|
public float reloadDuration = 1;
|
|
public float reloadLookDirectionSpeed = 11;
|
|
}
|
|
|
|
[System.Serializable]
|
|
public class IKWeaponsPosition
|
|
{
|
|
public string Name;
|
|
public Transform handTransform;
|
|
public AvatarIKGoal limb;
|
|
public Transform position;
|
|
public float HandIKWeight;
|
|
public float targetValue;
|
|
|
|
public float IKSpeed = 5;
|
|
|
|
public float handMovementSpeed = 2;
|
|
public Transform waypointFollower;
|
|
public List<Transform> wayPoints = new List<Transform> ();
|
|
public bool handInPositionToAim;
|
|
public Transform transformFollowByHand;
|
|
public bool usedToDrawWeapon;
|
|
public IKWeaponsPositionElbow elbowInfo;
|
|
public bool showElbowInfo;
|
|
public Coroutine handMovementCoroutine;
|
|
public bool handUsedInWeapon = true;
|
|
|
|
public bool ignoreIKWeight;
|
|
|
|
public bool useBezierCurve;
|
|
public BezierSpline spline;
|
|
public float bezierDuration = 0.5f;
|
|
public float lookDirectionSpeed = 11;
|
|
|
|
public bool useGrabbingHandID;
|
|
public int grabbingHandID = 1;
|
|
}
|
|
|
|
[System.Serializable]
|
|
public class IKWeaponsPositionElbow
|
|
{
|
|
public string Name;
|
|
public AvatarIKHint elbow;
|
|
public Transform position;
|
|
public float elbowIKWeight;
|
|
public float targetValue;
|
|
public Transform elbowOriginalPosition;
|
|
}
|
|
|
|
[System.Serializable]
|
|
public class weaponRotationPointInfo
|
|
{
|
|
public float rotationUpPointAmountMultiplier = 1.5f;
|
|
public float rotationDownPointAmountMultiplier = 1.5f;
|
|
public float rotationPointSpeed = 20;
|
|
public bool useRotationUpClamp = true;
|
|
public float rotationUpClampAmount = 50;
|
|
public bool useRotationDownClamp = true;
|
|
public float rotationDownClamp = 31;
|
|
} |