Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Combat System/Melee Combat System/dualWieldMeleeWeaponObjectSystem.cs

152 lines
4.6 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class dualWieldMeleeWeaponObjectSystem : MonoBehaviour
{
2026-03-29 23:03:14 -07:00
[Space]
[Header ("Components")]
[Space]
2026-03-29 23:03:14 -07:00
public hitCombat mainHitCombat;
2026-03-29 23:03:14 -07:00
public grabbedObjectMeleeAttackSystem currentGrabbedObjectMeleeAttackSystem;
2026-03-29 23:03:14 -07:00
public Transform meleeWeaponObject;
2026-03-29 23:03:14 -07:00
public Transform meleeWeaponParent;
2026-03-29 23:03:14 -07:00
public Transform meleeWeaponHandTransformReference;
2026-03-29 23:03:14 -07:00
public Transform meleeWeaponTransformReference;
2026-03-29 23:03:14 -07:00
public Transform raycastCheckTransfrom;
2026-03-29 23:03:14 -07:00
public Transform mainDamagePositionTransform;
2026-03-29 23:03:14 -07:00
[Space]
[Header ("Cutting Mode Settings")]
[Space]
2026-03-29 23:03:14 -07:00
public Transform cutPositionTransform;
public Transform cutDirectionTransform;
2026-03-29 23:03:14 -07:00
public Transform planeDefiner1;
public Transform planeDefiner2;
public Transform planeDefiner3;
2026-03-29 23:03:14 -07:00
[Space]
[Header ("Damage Detection Settings")]
[Space]
2026-03-29 23:03:14 -07:00
public List<Transform> raycastCheckTransfromList = new List<Transform> ();
2026-03-29 23:03:14 -07:00
Vector3 originalHitCombatColliderSize;
2026-03-29 23:03:14 -07:00
BoxCollider currentHitCombatBoxCollider;
2026-03-29 23:03:14 -07:00
Vector3 originalHitCombatColliderCenter;
2026-03-29 23:03:14 -07:00
Transform leftHandMountPoint;
2026-03-29 23:03:14 -07:00
public void enableDualWieldMeleeweapobObject (grabbedObjectMeleeAttackSystem newGrabbedObjectMeleeAttackSystem, bool useEventsOnDamageDetected)
{
currentGrabbedObjectMeleeAttackSystem = newGrabbedObjectMeleeAttackSystem;
2026-03-29 23:03:14 -07:00
if (currentGrabbedObjectMeleeAttackSystem.useCustomLayerToDetectSurfaces) {
mainHitCombat.setCustomLayerMask (currentGrabbedObjectMeleeAttackSystem.customLayerToDetectSurfaces);
}
2026-03-29 23:03:14 -07:00
if (currentGrabbedObjectMeleeAttackSystem.useCustomIgnoreTags) {
mainHitCombat.setCustomTagsToIgnore (currentGrabbedObjectMeleeAttackSystem.customTagsToIgnoreList);
} else {
mainHitCombat.setCustomTagsToIgnore (null);
}
2026-03-29 23:03:14 -07:00
mainHitCombat.setCustomDamageCanBeBlockedState (true);
2026-03-29 23:03:14 -07:00
currentHitCombatBoxCollider = mainHitCombat.getMainCollider ().GetComponent<BoxCollider> ();
2026-03-29 23:03:14 -07:00
originalHitCombatColliderCenter = currentHitCombatBoxCollider.center;
2026-03-29 23:03:14 -07:00
originalHitCombatColliderSize = currentHitCombatBoxCollider.size;
2026-03-29 23:03:14 -07:00
mainHitCombat.getOwner (currentGrabbedObjectMeleeAttackSystem.playerControllerGameObject);
2026-03-29 23:03:14 -07:00
mainHitCombat.setMainColliderEnabledState (true);
2026-03-29 23:03:14 -07:00
mainHitCombat.setSendMessageOnDamageDetectedState (useEventsOnDamageDetected);
2026-03-29 23:03:14 -07:00
if (useEventsOnDamageDetected) {
mainHitCombat.setCustomObjectToSendMessage (currentGrabbedObjectMeleeAttackSystem.gameObject);
}
2026-03-29 23:03:14 -07:00
leftHandMountPoint = currentGrabbedObjectMeleeAttackSystem.getLeftHandMountPoint ();
2026-03-29 23:03:14 -07:00
meleeWeaponObject.SetParent (leftHandMountPoint);
2026-03-29 23:03:14 -07:00
Vector3 localPosition = meleeWeaponHandTransformReference.localPosition;
Quaternion localRotation = meleeWeaponHandTransformReference.localRotation;
2026-03-29 23:03:14 -07:00
meleeWeaponObject.localPosition = localPosition;
meleeWeaponObject.localRotation = localRotation;
2026-03-29 23:03:14 -07:00
enableOrDisableDualWieldMeleeWeaponObject (true);
}
2026-03-29 23:03:14 -07:00
public void enableOrDisableDualWieldMeleeWeaponObject (bool state)
{
if (meleeWeaponObject.gameObject.activeSelf != state) {
meleeWeaponObject.gameObject.SetActive (state);
}
}
2026-03-29 23:03:14 -07:00
public void disableDualWieldMeleeweapobObject ()
{
mainHitCombat.setMainColliderEnabledState (false);
2026-03-29 23:03:14 -07:00
enableOrDisableDualWieldMeleeWeaponObject (true);
2026-03-29 23:03:14 -07:00
meleeWeaponObject.SetParent (meleeWeaponParent);
2026-03-29 23:03:14 -07:00
Vector3 localPosition = meleeWeaponTransformReference.localPosition;
Quaternion localRotation = meleeWeaponTransformReference.localRotation;
2026-03-29 23:03:14 -07:00
meleeWeaponObject.localPosition = localPosition;
meleeWeaponObject.localRotation = localRotation;
}
2026-03-29 23:03:14 -07:00
public void setHitCombatScale (Vector3 newScale)
{
if (currentHitCombatBoxCollider != null) {
currentHitCombatBoxCollider.size = newScale;
}
}
2026-03-29 23:03:14 -07:00
public void setHitCombatScaleMultiplier (float newMultiplier)
{
if (currentHitCombatBoxCollider != null) {
currentHitCombatBoxCollider.size *= newMultiplier;
}
}
2026-03-29 23:03:14 -07:00
public void setHitCombatOffset (Vector3 newValue)
{
if (currentHitCombatBoxCollider != null) {
currentHitCombatBoxCollider.center = newValue;
}
}
2026-03-29 23:03:14 -07:00
public void setOriginalHitCombatScale ()
{
setHitCombatScale (originalHitCombatColliderSize);
}
public void setOriginalHitCombatOffset ()
{
setHitCombatOffset (originalHitCombatColliderCenter);
}
}