Files
Caleb Sandford deQuincey 715fb68744 Initial commitment
2025-06-25 11:10:11 +01:00

68 lines
2.2 KiB
C#

namespace RaycastPro.Casters
{
using RaySensors;
using UnityEngine;
using Bullets;
#if UNITY_EDITOR
using Editor;
using UnityEditor;
#endif
[AddComponentMenu("RaycastPro/Casters/" + nameof(BasicCaster))]
public sealed class BasicCaster : GunCaster<Bullet, Collider, RaySensor>
{
[SerializeField]
[Tooltip("Automatically, this ray will shoot along the LocalDirection and source BasePoint location.")]
public RaySensor raySource;
// ReSharper disable Unity.PerformanceAnalysis
public override void Cast(int _bulletIndex)
{
#if UNITY_EDITOR
alphaCharge = AlphaLifeTime;
#endif
if (AmmoCheck())
{
BulletCast(_bulletIndex, raySource);
}
}
#if UNITY_EDITOR
internal override string Info => "A simple shooter with the ability to cover Basic Bullets that can help you to test and launch the gun immediately." + HAccurate + HDependent;
private Vector3 _p1, _p2;
internal override void OnGizmos()
{
if (raySource)
{
_p1 = raySource.Base;
_p2 = _p1 + raySource.TipDirection;
DrawCapLine(_p1, _p2);
}
}
internal override void EditorPanel(SerializedObject _so, bool hasMain = true, bool hasGeneral = true,
bool hasEvents = true,
bool hasInfo = true)
{
if (hasMain)
{
EditorGUILayout.PropertyField(_so.FindProperty(nameof(raySource)));
GunField(_so);
}
if (hasGeneral) GeneralField(_so);
if (hasEvents)
{
EventFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(EventFoldout, CEvents.ToContent(TEvents),
RCProEditor.HeaderFoldout);
EditorGUILayout.EndFoldoutHeaderGroup();
if (EventFoldout) RCProEditor.EventField(_so, events);
}
if (hasInfo) InformationField();
}
private readonly string[] events = new[] {nameof(onCast), nameof(onReload), nameof(onRate)};
#endif
}
}