Files
ichni_Official/Assets/ThemeBundles/Basic/Scripts/EnvironmentObjects/JudgeTrigger.cs
SoulliesOfficial 7580c4d87c 大更
2026-03-14 03:13:10 -04:00

73 lines
2.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame.Beatmap;
using UnityEngine;
using UnityEngine.InputSystem;
namespace Ichni.RhythmGame.ThemeBundles.Basic
{
public class JudgeTrigger : EnvironmentObject, IHaveNoteJudgeTriggerSubmodule
{
public SpriteRenderer triggerSprite;
public Collider triggerCollider;
public NoteJudgeTriggerSubmodule noteJudgeTriggerSubmodule { get; set; }
public static JudgeTrigger GenerateElement(string elementName, Guid id, List<string> tags,
bool isFirstGenerated, GameElement parentElement, string themeBundleName, string objectName, bool isStatic)
{
JudgeTrigger judgeTrigger = EnvironmentObject.GenerateElement(elementName, id, tags,
isFirstGenerated, themeBundleName, objectName, parentElement, isStatic).GetComponent<JudgeTrigger>();
return judgeTrigger;
}
public override void SetDefaultSubmodules()
{
base.SetDefaultSubmodules();
noteJudgeTriggerSubmodule = new NoteJudgeTriggerSubmodule(this);
}
private void Update()
{
triggerSprite.color = IsMouseOver() ? Color.red : Color.white;
}
private bool IsMouseOver()
{
//Raycast to check if mouse is over the object
Ray ray = GameManager.Instance.cameraManager.gameCamera.cam.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
if (hit.collider == triggerCollider)
{
return true;
}
}
return false;
}
}
namespace Beatmap
{
public class JudgeTrigger_BM : EnvironmentObject_BM
{
public JudgeTrigger_BM()
{
}
public JudgeTrigger_BM(string elementName, Guid elementGuid, List<string> tags,
GameElement_BM parentElement, string themeBundleName, string objectName, bool isStatic) :
base(elementName, elementGuid, tags, parentElement, themeBundleName, objectName, isStatic)
{
}
public override void ExecuteBM()
{
matchedElement = JudgeTrigger.GenerateElement(elementName, elementGuid, tags, false,
GetElement(attachedElementGuid), themeBundleName, objectName, isStatic);
}
}
}
}