Remove tree associated scripts & data from content folder
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 17fb461fd5fee6f43ab36d97484f46f7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,17 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 84c706bc73fc93344972b30d598a0b81, type: 3}
|
||||
m_Name: DefaultDitherFade
|
||||
m_EditorClassIdentifier:
|
||||
verticalOffset: 0.75
|
||||
cameraDistanceRange: {x: 1, y: 35}
|
||||
hideRadiusRange: {x: 0.92, y: 0.42}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cddf83aa7585c1a4a8a34e8383f52f44
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,127 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Toria.Game
|
||||
{
|
||||
[RequireComponent(typeof(CapsuleCollider))]
|
||||
public class DitherFade : MonoBehaviour
|
||||
{
|
||||
public DitherFadeSettings settings;
|
||||
public List<Renderer> targetRenderers;
|
||||
public bool makeShadowClones = true;
|
||||
|
||||
[NonSerialized]
|
||||
List<Material> fadeMaterials;
|
||||
|
||||
static RPGController player = null;
|
||||
static new Camera camera = null;
|
||||
|
||||
[NonSerialized]
|
||||
bool shouldHide = false;
|
||||
|
||||
void Start()
|
||||
{
|
||||
fadeMaterials = new List<Material>();
|
||||
|
||||
foreach (Renderer renderer in targetRenderers)
|
||||
{
|
||||
if (makeShadowClones)
|
||||
MakeShadowClone(renderer);
|
||||
|
||||
Material[] mats = renderer.sharedMaterials.Select(m => Instantiate(m)).ToArray();
|
||||
renderer.sharedMaterials = mats;
|
||||
fadeMaterials.AddRange(mats);
|
||||
}
|
||||
|
||||
//TEMPORARY before finding a better solution for raycasts to ignore tree (whether or not entities)
|
||||
if (GetComponentInParent<EntityData>())
|
||||
return;
|
||||
|
||||
foreach (Collider collider in GetComponentsInChildren<Collider>())
|
||||
collider.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");
|
||||
}
|
||||
|
||||
void MakeShadowClone(Renderer renderer)
|
||||
{
|
||||
if (!renderer.TryGetComponent(out MeshFilter filter))
|
||||
return;
|
||||
|
||||
GameObject shadowClone = new GameObject("Shadow clone");
|
||||
|
||||
shadowClone.transform.SetParent(renderer.transform);
|
||||
shadowClone.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity);
|
||||
shadowClone.transform.localScale = Vector3.one;
|
||||
|
||||
MeshRenderer shadowRenderer = shadowClone.AddComponent<MeshRenderer>();
|
||||
MeshFilter shadowFilter = shadowClone.AddComponent<MeshFilter>();
|
||||
|
||||
shadowRenderer.sharedMaterials = renderer.sharedMaterials;
|
||||
shadowRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly;
|
||||
|
||||
shadowFilter.sharedMesh = filter.sharedMesh;
|
||||
|
||||
foreach (Component comp in shadowClone.GetComponents<Component>())
|
||||
{
|
||||
if (comp is not MeshRenderer && comp is not MeshFilter && comp is not Transform)
|
||||
Destroy(comp);
|
||||
}
|
||||
renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (!player)
|
||||
player = FindAnyObjectByType<RPGController>();
|
||||
|
||||
if (shouldHide)
|
||||
{
|
||||
Vector2 viewPortPoint = camera.WorldToViewportPoint(player.transform.position + Vector3.up * settings.verticalOffset);
|
||||
float hideRadius = settings.GetHideRadius(player.transform, camera.transform);
|
||||
|
||||
foreach (Material mat in fadeMaterials)
|
||||
{
|
||||
mat.SetVector("_PlayerPosition", viewPortPoint);
|
||||
mat.SetFloat("_HideRadius", hideRadius);
|
||||
}
|
||||
}
|
||||
|
||||
if (!camera)
|
||||
camera = Camera.main;
|
||||
|
||||
if (!player || !camera)
|
||||
return;
|
||||
|
||||
Vector3 playerPos = player.transform.position + Vector3.up;
|
||||
Vector3 cameraPos = camera.transform.position;
|
||||
|
||||
Vector3 rayDir = (playerPos - cameraPos).normalized;
|
||||
|
||||
//move back the origin point so the raycast doesn't start from within a tree collider
|
||||
RaycastHit[] hits = Physics.RaycastAll(cameraPos + rayDir * -100f, rayDir, float.PositiveInfinity, 1 << gameObject.layer, QueryTriggerInteraction.Collide);
|
||||
|
||||
for (int i = 0; i < hits.Length; i++)
|
||||
{
|
||||
if (hits[i].collider.gameObject == gameObject)
|
||||
{
|
||||
SetCutoutEnabled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
SetCutoutEnabled(false);
|
||||
}
|
||||
|
||||
void SetCutoutEnabled(bool enabled)
|
||||
{
|
||||
if (shouldHide == enabled)
|
||||
return;
|
||||
|
||||
shouldHide = enabled;
|
||||
|
||||
foreach (Material mat in fadeMaterials)
|
||||
mat.SetFloat("_ShouldHide", enabled ? 1 : 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2dcaa5393f14a8846841c6152807c45c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences:
|
||||
- settings: {fileID: 11400000, guid: cddf83aa7585c1a4a8a34e8383f52f44, type: 2}
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,18 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Toria.Game
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Toria/VFX/DitherFadeSettings")]
|
||||
public class DitherFadeSettings : ScriptableObject
|
||||
{
|
||||
public float verticalOffset;
|
||||
public Vector2 cameraDistanceRange;
|
||||
public Vector2 hideRadiusRange;
|
||||
|
||||
public float GetHideRadius(Transform player, Transform camera)
|
||||
{
|
||||
float normalizedDist = Mathf.InverseLerp(cameraDistanceRange.x, cameraDistanceRange.y, Vector3.Distance(player.position, camera.position));
|
||||
return Mathf.Lerp(hideRadiusRange.x, hideRadiusRange.y, normalizedDist);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 84c706bc73fc93344972b30d598a0b81
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,132 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering;
|
||||
|
||||
[RequireComponent(typeof(CapsuleCollider))]
|
||||
public class LeavesHiding : MonoBehaviour
|
||||
{
|
||||
public Material invisibleMaterial;
|
||||
|
||||
Dictionary<MeshRenderer, (Material[], Material[])> matLists = new Dictionary<MeshRenderer, (Material[], Material[])>();
|
||||
HashSet<MeshRenderer> singleMatLeavesMeshes = new HashSet<MeshRenderer>();
|
||||
|
||||
static RPGController player = null;
|
||||
static new Camera camera = null;
|
||||
static int ignoreRaycastLayer = -1;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (ignoreRaycastLayer == -1)
|
||||
ignoreRaycastLayer = LayerMask.NameToLayer("Ignore Raycast");
|
||||
}
|
||||
|
||||
void Start()
|
||||
{
|
||||
foreach (Collider collider in GetComponents<Collider>())
|
||||
collider.isTrigger = true;
|
||||
|
||||
LODGroup lodGroup = GetComponentInChildren<LODGroup>();
|
||||
|
||||
foreach (MeshRenderer renderer in GetComponentsInChildren<MeshRenderer>(true))
|
||||
{
|
||||
MeshRenderer newRenderer = Instantiate(renderer.gameObject, renderer.transform.parent, true).GetComponent<MeshRenderer>();
|
||||
newRenderer.shadowCastingMode = ShadowCastingMode.ShadowsOnly;
|
||||
renderer.shadowCastingMode = ShadowCastingMode.Off;
|
||||
|
||||
if (!lodGroup)
|
||||
continue;
|
||||
|
||||
LOD[] lods = lodGroup.GetLODs();
|
||||
|
||||
for (int i = 0; i < lods.Length; i++)
|
||||
{
|
||||
if (lods[i].renderers.Any(r => r == renderer))
|
||||
lods[i].renderers = lods[i].renderers.Append(newRenderer).ToArray();
|
||||
}
|
||||
|
||||
lodGroup.SetLODs(lods);
|
||||
}
|
||||
|
||||
foreach (MeshRenderer renderer in GetComponentsInChildren<MeshRenderer>(true))
|
||||
{
|
||||
Material[] rendererSharedMats = renderer.sharedMaterials;
|
||||
Material[] leavelessMats = new Material[rendererSharedMats.Length];
|
||||
|
||||
if (renderer.shadowCastingMode == ShadowCastingMode.ShadowsOnly)
|
||||
continue;
|
||||
|
||||
bool didReplace = false;
|
||||
|
||||
for (int i = 0; i < rendererSharedMats.Length; i++)
|
||||
{
|
||||
if (rendererSharedMats[i].name.Contains("leaves", StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
leavelessMats[i] = invisibleMaterial;
|
||||
didReplace = true;
|
||||
}
|
||||
else
|
||||
leavelessMats[i] = rendererSharedMats[i];
|
||||
}
|
||||
|
||||
if (!didReplace)
|
||||
continue;
|
||||
|
||||
matLists.Add(renderer, (rendererSharedMats, leavelessMats));
|
||||
}
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (!player)
|
||||
player = FindAnyObjectByType<RPGController>();
|
||||
|
||||
if (!camera)
|
||||
camera = Camera.main;
|
||||
|
||||
if (!player || !camera)
|
||||
return;
|
||||
|
||||
if (gameObject.layer != ignoreRaycastLayer)
|
||||
gameObject.layer = ignoreRaycastLayer;
|
||||
|
||||
Vector3 playerPos = player.transform.position + Vector3.up;
|
||||
Vector3 cameraPos = camera.transform.position;
|
||||
|
||||
Vector3 rayDir = (playerPos - cameraPos).normalized;
|
||||
|
||||
RaycastHit[] hits = Physics.RaycastAll(cameraPos, rayDir, float.PositiveInfinity, 1 << gameObject.layer, QueryTriggerInteraction.Collide);
|
||||
|
||||
for (int i = 0; i < hits.Length; i++)
|
||||
{
|
||||
if (hits[i].collider.gameObject == gameObject)
|
||||
{
|
||||
SetLeavesVisible(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
SetLeavesVisible(true);
|
||||
}
|
||||
|
||||
/*
|
||||
void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (other.GetComponent<RPGController>() || other.GetComponentInParent<RPGController>())
|
||||
SetLeavesVisible(false);
|
||||
}
|
||||
|
||||
void OnTriggerExit(Collider other)
|
||||
{
|
||||
if (other.GetComponent<RPGController>() || other.GetComponentInParent<RPGController>())
|
||||
SetLeavesVisible(true);
|
||||
}
|
||||
*/
|
||||
|
||||
void SetLeavesVisible(bool visible)
|
||||
{
|
||||
foreach (MeshRenderer renderer in matLists.Keys)
|
||||
renderer.sharedMaterials = visible ? matLists[renderer].Item1 : matLists[renderer].Item2;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e55b45b8852c8b40823a47ea17a097a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user