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 tags, bool isFirstGenerated, GameElement parentElement, string themeBundleName, string objectName, bool isStatic) { JudgeTrigger judgeTrigger = EnvironmentObject.GenerateElement(elementName, id, tags, isFirstGenerated, themeBundleName, objectName, parentElement, isStatic).GetComponent(); 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 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); } } } }