73 lines
2.5 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |