alap
This commit is contained in:
54
Assets/Scripts/Markers/Marker.cs
Normal file
54
Assets/Scripts/Markers/Marker.cs
Normal file
@ -0,0 +1,54 @@
|
||||
using Mirror;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
|
||||
public class Marker : MonoBehaviour
|
||||
{
|
||||
public MarkerDefinition markerDefinition;
|
||||
/* public CanvasGroup fadeGroup;
|
||||
public CanvasGroup aimFadeGroup;
|
||||
public AnimationCurve fadeRemap;*/
|
||||
|
||||
public Vector3 targetPos { get; private set; }
|
||||
public GameObject worldObject { get; private set; }
|
||||
|
||||
MarkerHandler markerHandler;
|
||||
Transform objToFollow;
|
||||
|
||||
float timeAlive;
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (objToFollow)
|
||||
{
|
||||
targetPos = objToFollow.transform.position;
|
||||
}
|
||||
|
||||
|
||||
if (markerDefinition.unlimitedLife) return;
|
||||
|
||||
timeAlive += Time.deltaTime;
|
||||
if (timeAlive > markerDefinition.lifeDuration)
|
||||
{
|
||||
DestroyMarker();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void InitializeMarker(MarkerHandler markerHandler, GameObject worldObject, Vector3 targetPos, Transform objToFollow)
|
||||
{
|
||||
this.markerHandler = markerHandler;
|
||||
this.worldObject = worldObject;
|
||||
this.targetPos = targetPos;
|
||||
this.objToFollow = objToFollow;
|
||||
/* aimFadeGroup.alpha = 0;
|
||||
fadeGroup.alpha = 0;*/
|
||||
}
|
||||
|
||||
public virtual void DestroyMarker()
|
||||
{
|
||||
markerHandler.RemoveMarker(this);
|
||||
}
|
||||
}
|
11
Assets/Scripts/Markers/Marker.cs.meta
Normal file
11
Assets/Scripts/Markers/Marker.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a2cd7a42d3a95a6469836350e9008ffc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
18
Assets/Scripts/Markers/MarkerDefinition.cs
Normal file
18
Assets/Scripts/Markers/MarkerDefinition.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
[CreateAssetMenu(menuName = "Markers/Marker")]
|
||||
public class MarkerDefinition : ScriptableObject
|
||||
{
|
||||
public byte id;
|
||||
|
||||
[Space(10)]
|
||||
public GameObject markerLocalObj, markerWorldObj;
|
||||
public float lifeDuration;
|
||||
public bool unlimitedLife;
|
||||
public float minFadeAmount;
|
||||
public bool fadeByDotProduct;
|
||||
public bool fadeByAim;
|
||||
}
|
||||
|
11
Assets/Scripts/Markers/MarkerDefinition.cs.meta
Normal file
11
Assets/Scripts/Markers/MarkerDefinition.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 35a98cf24352f1f4d99d7a33c0b4d1e0
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
89
Assets/Scripts/Markers/MarkerHandler.cs
Normal file
89
Assets/Scripts/Markers/MarkerHandler.cs
Normal file
@ -0,0 +1,89 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class MarkerHandler : MonoBehaviour
|
||||
{
|
||||
public static MarkerHandler instance;
|
||||
|
||||
[SerializeField] private MarkerDefinition[] allMarkerDefinitions;
|
||||
[SerializeField] private Transform markerContainer;
|
||||
|
||||
List<Marker> markerInstances = new List<Marker>();
|
||||
Camera cam;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
instance = this;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
cam = Camera.main;
|
||||
}
|
||||
|
||||
private void LateUpdate()
|
||||
{
|
||||
UpdateMarkers();
|
||||
}
|
||||
void UpdateMarkers()
|
||||
{
|
||||
|
||||
for (int i = 0; i < markerInstances.Count; i++)
|
||||
{
|
||||
var currentMarker = markerInstances[i];
|
||||
currentMarker.transform.position = cam.WorldToScreenPoint(currentMarker.targetPos);
|
||||
// aimFadeAmount = 1 - player.weaponManager.aim.aimAmount;
|
||||
|
||||
bool isBehindCam = currentMarker.transform.position.z < 0;
|
||||
float dot = Vector3.Dot(cam.transform.forward, (cam.transform.position - currentMarker.targetPos).normalized);
|
||||
//Debug.Log(dot);
|
||||
|
||||
/*
|
||||
if (currentMarker.markerDefinition.fadeByAim)
|
||||
currentMarker.aimFadeGroup.alpha = isBehindCam ? 0 : Mathf.Max(aimFadeAmount, currentMarker.markerDefinition.minFadeAmount);
|
||||
|
||||
if (currentMarker.markerDefinition.fadeByDotProduct)
|
||||
currentMarker.fadeGroup.alpha = isBehindCam ? 0 : Mathf.Clamp01(Mathf.Clamp(currentMarker.fadeRemap.Evaluate(Mathf.Clamp01(-dot)), currentMarker.markerDefinition.minFadeAmount, 1));
|
||||
|
||||
currentMarker.gameObject.SetActive(!player.IsUIOpen());*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Marker SpawnMarker(byte markerID, Vector3 targetPos, Transform objToFollow)
|
||||
{
|
||||
MarkerDefinition markerDef = allMarkerDefinitions[markerID];
|
||||
|
||||
GameObject localObj = Instantiate(markerDef.markerLocalObj, markerContainer);
|
||||
GameObject worldObj = null;
|
||||
Marker marker = localObj.GetComponent<Marker>();
|
||||
|
||||
if (markerDef.markerWorldObj)
|
||||
{
|
||||
worldObj = Instantiate(markerDef.markerWorldObj, targetPos, Quaternion.identity);
|
||||
}
|
||||
|
||||
marker.InitializeMarker(this, worldObj, targetPos, objToFollow);
|
||||
|
||||
AddMarker(marker);
|
||||
|
||||
return marker;
|
||||
}
|
||||
|
||||
public void AddMarker(Marker marker)
|
||||
{
|
||||
markerInstances.Add(marker);
|
||||
}
|
||||
|
||||
public void RemoveMarker(Marker marker)
|
||||
{
|
||||
markerInstances.Remove(marker);
|
||||
|
||||
if (marker.worldObject)
|
||||
Destroy(marker.worldObject);
|
||||
|
||||
Destroy(marker.gameObject);
|
||||
}
|
||||
|
||||
}
|
11
Assets/Scripts/Markers/MarkerHandler.cs.meta
Normal file
11
Assets/Scripts/Markers/MarkerHandler.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c3fa5eb1f4aef54a91cc6c50111cc9e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
25
Assets/Scripts/Markers/NametagMarker.cs
Normal file
25
Assets/Scripts/Markers/NametagMarker.cs
Normal file
@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class NametagMarker : Marker
|
||||
{
|
||||
public TMP_Text username_text, ready_text;
|
||||
public Image ready_image, pfp_Image;
|
||||
|
||||
public void UpdateTag(string username, bool isReady)
|
||||
{
|
||||
username_text.text = username;
|
||||
ready_image.color = isReady ? MainMenu.instance.readyColor : MainMenu.instance.notReadyColor;
|
||||
ready_text.text = isReady ? "Ready" : "Not Ready";
|
||||
ready_text.color = isReady ? MainMenu.instance.readyColor : MainMenu.instance.notReadyColor;
|
||||
}
|
||||
|
||||
public void UpdatePFP(Sprite icon)
|
||||
{
|
||||
pfp_Image.sprite = icon;
|
||||
}
|
||||
}
|
11
Assets/Scripts/Markers/NametagMarker.cs.meta
Normal file
11
Assets/Scripts/Markers/NametagMarker.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 79b83d359693de5458001ffa4e86801e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user