Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion Assets/AirSticker/Runtime/AirSticker.asmdef
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
{
"name": "AirSticker"
"name": "AirSticker",
"references": [
"Unity.Burst",
"Unity.Mathematics"
]
}
426 changes: 111 additions & 315 deletions Assets/AirSticker/Runtime/Scripts/AirStickerProjector.cs

Large diffs are not rendered by default.

22 changes: 14 additions & 8 deletions Assets/AirSticker/Runtime/Scripts/AirStickerSystem.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using AirSticker.Runtime.Scripts.Core;
using AirSticker.Runtime.Scripts.Core.Jobs;
using UnityEngine;

namespace AirSticker.Runtime.Scripts
Expand All @@ -22,6 +23,12 @@ public sealed class AirStickerSystem : MonoBehaviour
new ReceiverObjectTrianglePolygonsPool();

private TrianglePolygonsFactory _trianglePolygonsFactory;
private DecalMeshJobPipeline _jobPipeline;

/// <summary>
/// The job pipeline that runs skinning / broad phase / clip / build for a launch.
/// </summary>
internal static DecalMeshJobPipeline JobPipeline => Instance ? Instance._jobPipeline : null;

public static DecalProjectorLauncher DecalProjectorLauncher
{
Expand Down Expand Up @@ -58,6 +65,7 @@ private void Awake()
"AirStickerSystem can't be instantiated multiply, but but it has already been instantiated.");
Instance = this;
_trianglePolygonsFactory = new TrianglePolygonsFactory();
_jobPipeline = new DecalMeshJobPipeline();
}

private void Update()
Expand All @@ -71,31 +79,29 @@ private void OnDestroy()
{
_decalMeshPool.Dispose();
_trianglePolygonsFactory.Dispose();
_jobPipeline.Dispose();
_receiverObjectTrianglePolygonsPool.DisposeAll();
Instance = null;
}

internal static IEnumerator BuildTrianglePolygonsFromReceiverObject(
MeshFilter[] meshFilters,
MeshRenderer[] meshRenderers,
SkinnedMeshRenderer[] skinnedMeshRenderers,
Terrain[] terrains,
List<ConvexPolygonInfo> convexPolygonInfos)
ReceiverConvexPolygonsMesh[] resultHolder)
{
yield return Instance._trianglePolygonsFactory.BuildFromReceiverObject(
meshFilters,
meshRenderers,
skinnedMeshRenderers,
terrains,
convexPolygonInfos);
resultHolder);
}

internal static List<ConvexPolygonInfo> GetTrianglePolygonsFromPool(GameObject receiverObject)
internal static ReceiverConvexPolygonsMesh GetTrianglePolygonsFromPool(GameObject receiverObject)
{
if (Instance == null) return null;

var convexPolygonInfos = Instance._receiverObjectTrianglePolygonsPool.ConvexPolygonsPool[receiverObject];
foreach (var info in convexPolygonInfos) info.IsOutsideClipSpace = false;
return convexPolygonInfos;
return ReceiverObjectTrianglePolygonsPool.Get(receiverObject);
}

internal static void CollectEditDecalMeshes(
Expand Down

This file was deleted.

This file was deleted.

Loading