This commit is contained in:
2026-06-02 08:27:03 +07:00
parent 7889064469
commit a48cd962e1
4232 changed files with 2 additions and 36881 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ad833e3430b875748b11962c3b1052fd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 27e4048ada0390540a5c7c5d5810cdba
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 04cb0ac5786bbb84997d515b2794074a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,606 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2200566401644193306
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2200566401644193304}
- component: {fileID: 2200566401644193305}
m_Layer: 8
m_Name: StunCheckVisibliity
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2200566401644193304
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566401644193306}
m_LocalRotation: {x: -0, y: -0.0000017583368, z: -0, w: -1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 8823503335645296784}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2200566401644193305
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566401644193306}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 45bdf49c03d1ef249998e2350db254ff, type: 3}
m_Name:
m_EditorClassIdentifier:
openCloseEvents: 1
openCloseWindow: 0
selectedToolbar: 0
layerObstacle:
serializedVersion: 2
m_Bits: 1
checkPoint: {x: 0, y: 1.66, z: 0}
debugMode: 0
OnVisible:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2200566402873466472}
m_MethodName: TriggerGoBlind
m_Mode: 0
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
OnNotVisible:
m_PersistentCalls:
m_Calls: []
--- !u!1 &2200566402375963264
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2200566402375963271}
- component: {fileID: 2200566402375963269}
- component: {fileID: 2200566402375963270}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2200566402375963271
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402375963264}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2200566402892160786}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2200566402375963269
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402375963264}
m_CullTransparentMesh: 0
--- !u!114 &2200566402375963270
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402375963264}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.6392157}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &2200566402873466475
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2200566402873466474}
- component: {fileID: 2200566402873466477}
- component: {fileID: 2200566402873466478}
- component: {fileID: 2200566402873466479}
- component: {fileID: 2200566402873466472}
- component: {fileID: 2200566402873466473}
m_Layer: 5
m_Name: StunEffectCanvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2200566402873466474
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402873466475}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 2200566402892160786}
m_Father: {fileID: 8823503335645296784}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!223 &2200566402873466477
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402873466475}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!114 &2200566402873466478
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402873466475}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
--- !u!114 &2200566402873466479
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402873466475}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &2200566402873466472
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402873466475}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 275875c8cf6ffa048a442b569996e7bc, type: 3}
m_Name:
m_EditorClassIdentifier:
imageToDisplay: {fileID: 2200566402892160791}
onStartGhostFX:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2200566402892160787}
m_MethodName: SetActive
m_Mode: 6
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 1
m_CallState: 2
- m_Target: {fileID: 2200566402892160785}
m_MethodName: set_alpha
m_Mode: 4
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 1
m_StringArgument:
m_BoolArgument: 1
m_CallState: 2
onFinishGhostFX:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2200566402892160784}
m_MethodName: FadeOut
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &2200566402873466473
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402873466475}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b354cf786a2c7d9468c7223b5a4674cf, type: 3}
m_Name:
m_EditorClassIdentifier:
openCloseEvents: 1
openCloseWindow: 0
selectedToolbar: 0
input:
useInput: 1
isAxisInUse: 0
isUnityInput: 0
keyboard: T
keyboardAxis: 0
joystick: B
joystickAxis: 0
mobile: B
mobileAxis: 0
joystickAxisInvert: 0
keyboardAxisInvert: 0
mobileAxisInvert: 0
timeButtonWasPressed: 0
lastTimeTheButtonWasPressed: 0
inButtomTimer: 0
disableThisObjectAfterInput: 0
OnPressInput:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2200566402873466472}
m_MethodName: TriggerGoBlind
m_Mode: 4
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 1
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &2200566402892160787
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2200566402892160786}
- component: {fileID: 2200566402892160790}
- component: {fileID: 2200566402892160791}
- component: {fileID: 2200566402892160784}
- component: {fileID: 2200566402892160785}
- component: {fileID: 2200566402892160789}
m_Layer: 5
m_Name: BlindEffect
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!224 &2200566402892160786
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402892160787}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 2200566402375963271}
m_Father: {fileID: 2200566402873466474}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2200566402892160790
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402892160787}
m_CullTransparentMesh: 0
--- !u!114 &2200566402892160791
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402892160787}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.7254902}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 0}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!114 &2200566402892160784
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402892160787}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a5f8d7f4b54ee5648818cf43b799bb4d, type: 3}
m_Name:
m_EditorClassIdentifier:
openCloseEvents: 1
openCloseWindow: 1
selectedToolbar: 0
group: {fileID: 2200566402892160785}
fadeSpeed: 3
onStartFadeIn:
m_PersistentCalls:
m_Calls: []
onFinishFadeIn:
m_PersistentCalls:
m_Calls: []
onStartFadeOut:
m_PersistentCalls:
m_Calls: []
onFinishFadeOut:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2200566402892160787}
m_MethodName: SetActive
m_Mode: 6
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
OnChangeValue:
m_PersistentCalls:
m_Calls: []
autoControlCanvasGroup: 0
fadeInStart: 0
fadeOutStart: 0
startWithAlphaZero: 0
startWithAlphaFull: 0
--- !u!225 &2200566402892160785
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402892160787}
m_Enabled: 1
m_Alpha: 0
m_Interactable: 0
m_BlocksRaycasts: 0
m_IgnoreParentGroups: 0
--- !u!82 &2200566402892160789
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2200566402892160787}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 8300000, guid: 3559eb7e3f3b79d499e31f0c57176e1a, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &7701825353036948164
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8823503335645296784}
m_Layer: 0
m_Name: Stun Effect
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8823503335645296784
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7701825353036948164}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 2200566401644193304}
- {fileID: 2200566402873466474}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ef1db29673477fa42b1ca5e7b4e2cb27
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2c5306b3f45b0c14b8c3a8d9e3d25cc6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,50 @@
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
namespace Invector
{
public class vBlindGhostVFX : MonoBehaviour
{
[SerializeField]
private RawImage imageToDisplay;
public UnityEngine.Events.UnityEvent onStartGhostFX, onFinishGhostFX;
public void TriggerGoBlind(vIEffect effect)
{
if (effect != null) TriggerGoBlind(effect.EffectDuration);
}
public void TriggerGoBlind(float duration)
{
StopAllCoroutines();
StartCoroutine(GhostEffectRoutine(duration));
}
private IEnumerator GhostEffectRoutine(float duration)
{
yield return new WaitForEndOfFrame();
Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
texture.Apply();
if (imageToDisplay == null) Debug.LogWarning("Please assign the Image component");
// Assign the texture to the Image component
imageToDisplay.texture = texture;
StartGhostFX();
yield return new WaitForSeconds(duration);
FinishGhostFX();
}
void StartGhostFX()
{
onStartGhostFX.Invoke();
}
void FinishGhostFX()
{
onFinishGhostFX.Invoke();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 275875c8cf6ffa048a442b569996e7bc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c7263766a2e51bb4c85327d2982e42c7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,89 @@
using UnityEngine;
namespace Invector
{
[vClassHeader("Check Effect Visibility", "Use it to identify if the object is within the camera frustrum and not hide by obstacles", openClose = false)]
public class vCheckEffectVisibility : vMonoBehaviour
{
public LayerMask layerObstacle;
[Tooltip("The point to check if effect is visible")]
public Vector3 checkPoint = new Vector3(0, 1.5f, 0);
public bool debugMode;
public vEffectReceiver.vEffectEvent OnVisible;
public vEffectReceiver.vEffectEvent OnNotVisible;
private Camera mainCamera;
Vector3 visibilityPoint => transform.TransformPoint(checkPoint);
private void OnDrawGizmos()
{
if (debugMode)
Gizmos.DrawSphere(visibilityPoint, 0.1f);
}
private void Start()
{
mainCamera = Camera.main;
}
public void CheckEffectIsVisible(vIEffect effect)
{
if (CheckIfEffectIsVisible(effect))
{
OnVisible.Invoke(effect);
}
else
{
OnNotVisible.Invoke(effect);
}
}
bool IsObjectVisible(Camera camera, Vector3 position)
{
// Convert the world position of the object to viewport coordinates
Vector3 viewportPoint = camera.WorldToViewportPoint(position);
// Check if the viewport coordinates are within the range of (0,0) to (1,1)
bool isVisible = viewportPoint.x >= 0f && viewportPoint.x <= 1f &&
viewportPoint.y >= 0f && viewportPoint.y <= 1f &&
viewportPoint.z >= 0f;
return isVisible;
}
bool CheckIfEffectIsVisible(vIEffect effect)
{
if (mainCamera != null)
{
// Check if the object is within the camera frustum
if (IsObjectVisible(mainCamera, effect.EffectPosition))
{
// Check if any objects are blocking the view between the camera and the object
RaycastHit hitInfo;
if (Physics.Linecast(effect.EffectPosition, visibilityPoint, out hitInfo, layerObstacle, QueryTriggerInteraction.Ignore))
{
if (hitInfo.collider.gameObject != gameObject && hitInfo.distance >= 1f)
{
if (debugMode) Debug.DrawLine(effect.EffectPosition, hitInfo.point, Color.red, effect.EffectDuration);
if (debugMode) Debug.Log("Object is not in view because of a obstacle: " + hitInfo.collider.name, hitInfo.collider.gameObject);
return false;
}
}
else if (debugMode)
{
Debug.DrawLine(effect.EffectPosition, visibilityPoint, Color.green, effect.EffectDuration);
}
if (debugMode) Debug.Log("Object is in view!");
return true;
}
else
{
if (debugMode) Debug.Log("Object is in view!");
return true;
}
}
return false;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 45bdf49c03d1ef249998e2350db254ff
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
namespace Invector
{
[vClassHeader("Effect Receiver", "Use with the EffectSender component to trigger a Effect.")]
public class vEffectReceiver : vMonoBehaviour
{
[System.Serializable]
public class vEffectByName
{
public string effectName;
public vEffectEvent onReceiveEffect;
}
[System.Serializable]
public class vEffectEvent : UnityEngine.Events.UnityEvent<vIEffect> { }
public vEffectEvent onReceiveEffect;
public vEffectByName[] effectsByName;
public virtual void OnReceiveEffect<T>(T effect) where T : vIEffect
{
onReceiveEffect.Invoke(effect);
for (int i = 0; i < effectsByName.Length; i++)
{
if (effectsByName[i].effectName.Equals(effect.EffectName)) effectsByName[i].onReceiveEffect.Invoke(effect);
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bddfec62bef2c3145b58848930147e3c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,69 @@
using UnityEngine;
namespace Invector
{
[vClassHeader("Effect Sender", "Use this component with the vEffectReceiver added on your Player Root to trigger Effects", openClose = false)]
public class vEffectSender : vMonoBehaviour
{
[vHelpBox("Make sure you check where the vEffectReceiver is on your player, root object, parented or inside as children. By default is located inside the Invector Components > vEffects")]
public vEffectStruct[] effects;
[System.Serializable]
public class vEffectStruct : vIEffect
{
public enum GetReceiverMethod
{
InTarget, InParent, InChildren
}
public GetReceiverMethod getReceiverMethod = GetReceiverMethod.InChildren;
[SerializeField] protected string effectName;
[SerializeField] protected float effectDuration;
public string EffectName => effectName;
public float EffectDuration => effectDuration;
public Vector3 EffectPosition { get; set; }
public Transform Sender { get; set; }
}
public Transform overrideEffectSender;
public virtual void SetOverrideEffectSender(Transform t)
{
overrideEffectSender = t;
}
public void Send(GameObject target)
{
Send(target.transform);
}
public void Send(Transform target)
{
for (int i = 0; i < effects.Length; i++)
{
var effect = effects[i];
effect.Sender = overrideEffectSender ? overrideEffectSender : transform;
effect.EffectPosition = transform.position;
vEffectReceiver receiver = null;
switch (effect.getReceiverMethod)
{
case vEffectStruct.GetReceiverMethod.InTarget:
if (target.TryGetComponent(out receiver)) receiver.OnReceiveEffect(effect);
break;
case vEffectStruct.GetReceiverMethod.InParent:
receiver = target.GetComponentInParent<vEffectReceiver>();
if (receiver) receiver.OnReceiveEffect(effect);
break;
case vEffectStruct.GetReceiverMethod.InChildren:
receiver = target.GetComponentInChildren<vEffectReceiver>();
if (receiver) receiver.OnReceiveEffect(effect);
break;
}
}
}
public void Send(Collider target)
{
Send(target.transform);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 73577af56cf082948b69653ea5a93469
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,12 @@
using UnityEngine;
namespace Invector
{
public partial interface vIEffect
{
string EffectName { get; }
float EffectDuration { get; }
Vector3 EffectPosition { get; }
Transform Sender { get; }
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 374d39d8e7f22a84297f51ff450fbd76
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: