Compare commits
2 Commits
7a0499f36a
...
f4cb569768
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f4cb569768 | ||
|
|
6c1cb44d18 |
@@ -12,6 +12,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: b7f2c6caae048f64f91b54ae1442694c, type: 3}
|
m_Script: {fileID: 11500000, guid: b7f2c6caae048f64f91b54ae1442694c, type: 3}
|
||||||
m_Name: Test
|
m_Name: Test
|
||||||
m_EditorClassIdentifier: Core::Reset.Items.Weapon
|
m_EditorClassIdentifier: Core::Reset.Items.Weapon
|
||||||
|
itemName: Test Weapon
|
||||||
permanency: 0
|
permanency: 0
|
||||||
essenceRequiredForPermanency: 0
|
essenceRequiredForPermanency: 0
|
||||||
weaponModel: {fileID: 0}
|
weaponModel: {fileID: 0}
|
||||||
|
|||||||
@@ -3,4 +3,5 @@ using UnityEngine;
|
|||||||
public interface IInteractable{
|
public interface IInteractable{
|
||||||
public void Interact();
|
public void Interact();
|
||||||
public void CancelInteract();
|
public void CancelInteract();
|
||||||
|
public void OnObserverDetected(EnvironmentObserver observer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,5 +3,8 @@ using UnityEngine;
|
|||||||
namespace Reset.Items{
|
namespace Reset.Items{
|
||||||
public class Ability : Item, IEquipable{
|
public class Ability : Item, IEquipable{
|
||||||
public NodeCanvas.Framework.Graph behaviourGraph;
|
public NodeCanvas.Framework.Graph behaviourGraph;
|
||||||
|
public override void DrawItemInfo(Vector3 position){
|
||||||
|
throw new System.NotImplementedException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace Reset.Items{
|
namespace Reset.Items{
|
||||||
public abstract class Item : ScriptableObject{
|
public abstract class Item : ScriptableObject{
|
||||||
public string itemName{ get; set; }
|
public string itemName;
|
||||||
|
|
||||||
public float permanency;
|
public float permanency;
|
||||||
public float essenceRequiredForPermanency;
|
public float essenceRequiredForPermanency;
|
||||||
@@ -20,5 +20,7 @@ namespace Reset.Items{
|
|||||||
newItemDrop.item = this;
|
newItemDrop.item = this;
|
||||||
return newItemDrop;
|
return newItemDrop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract void DrawItemInfo(Vector3 position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Drawing;
|
||||||
using Unity.Netcode;
|
using Unity.Netcode;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@@ -34,5 +35,11 @@ namespace Reset.Items{
|
|||||||
public void DestroyOnOwnerRpc(){
|
public void DestroyOnOwnerRpc(){
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OnObserverDetected(EnvironmentObserver observer){
|
||||||
|
Draw.ingame.Label2D(transform.position + Vector3.up * 2f, item.itemName, 24);
|
||||||
|
|
||||||
|
item.DrawItemInfo(transform.position);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Drawing;
|
||||||
using NodeCanvas.StateMachines;
|
using NodeCanvas.StateMachines;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@@ -11,5 +12,11 @@ namespace Reset.Items{
|
|||||||
void Awake(){
|
void Awake(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void DrawItemInfo(Vector3 position){
|
||||||
|
Debug.Log("hiuh");
|
||||||
|
Draw.ingame.Label2D(position + Vector3.up * 1.6f, "Damage goes here");
|
||||||
|
Draw.ingame.Label2D(position + Vector3.up * 1.35f, "Speed goes here");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -127,6 +127,9 @@ public class EnvironmentObserver{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (hit.transform != null) {
|
if (hit.transform != null) {
|
||||||
|
if (hit.transform.GetComponent<IInteractable>() != null) {
|
||||||
|
hit.transform.GetComponent<IInteractable>().OnObserverDetected(this);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8
Assets/_Recovery.meta
Normal file
8
Assets/_Recovery.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6d49e6609820d9e4aa40f1f0cee4bbea
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
7253
Assets/_Recovery/0.unity
Normal file
7253
Assets/_Recovery/0.unity
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/_Recovery/0.unity.meta
Normal file
7
Assets/_Recovery/0.unity.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2f63ef417a19ed541ade93496467efc1
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ALINE.asmdef
|
assetPath: Packages/com.arongranberg.aline/ALINE.asmdef
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/AlineHDRPCustomPass.cs
|
assetPath: Packages/com.arongranberg.aline/AlineHDRPCustomPass.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -32,19 +32,26 @@ namespace Drawing {
|
|||||||
#if MODULE_RENDER_PIPELINES_UNIVERSAL_17_0_0_OR_NEWER
|
#if MODULE_RENDER_PIPELINES_UNIVERSAL_17_0_0_OR_NEWER
|
||||||
private class PassData {
|
private class PassData {
|
||||||
public Camera camera;
|
public Camera camera;
|
||||||
|
public bool allowDisablingWireframe;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void RecordRenderGraph (RenderGraph renderGraph, ContextContainer frameData) {
|
public override void RecordRenderGraph (RenderGraph renderGraph, ContextContainer frameData) {
|
||||||
var cameraData = frameData.Get<UniversalCameraData>();
|
var cameraData = frameData.Get<UniversalCameraData>();
|
||||||
var resourceData = frameData.Get<UniversalResourceData>();
|
var resourceData = frameData.Get<UniversalResourceData>();
|
||||||
|
|
||||||
|
// This could happen if the camera does not have a color target or depth target set.
|
||||||
|
// In that case we are probably rendering some kind of special effect. Skip ALINE rendering in that case.
|
||||||
|
if (!resourceData.activeColorTexture.IsValid() || !resourceData.activeDepthTexture.IsValid()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
using (IRasterRenderGraphBuilder builder = renderGraph.AddRasterRenderPass<PassData>("ALINE", out PassData passData, profilingSampler)) {
|
using (IRasterRenderGraphBuilder builder = renderGraph.AddRasterRenderPass<PassData>("ALINE", out PassData passData, profilingSampler)) {
|
||||||
bool allowDisablingWireframe = false;
|
passData.allowDisablingWireframe = false;
|
||||||
|
|
||||||
if (Application.isEditor && (cameraData.cameraType & (CameraType.SceneView | CameraType.Preview)) != 0) {
|
if (Application.isEditor && (cameraData.cameraType & (CameraType.SceneView | CameraType.Preview)) != 0) {
|
||||||
// We need this to be able to disable wireframe rendering in the scene view
|
// We need this to be able to disable wireframe rendering in the scene view
|
||||||
builder.AllowGlobalStateModification(true);
|
builder.AllowGlobalStateModification(true);
|
||||||
allowDisablingWireframe = true;
|
passData.allowDisablingWireframe = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.SetRenderAttachment(resourceData.activeColorTexture, 0);
|
builder.SetRenderAttachment(resourceData.activeColorTexture, 0);
|
||||||
@@ -53,7 +60,7 @@ namespace Drawing {
|
|||||||
|
|
||||||
builder.SetRenderFunc<PassData>(
|
builder.SetRenderFunc<PassData>(
|
||||||
(PassData data, RasterGraphContext context) => {
|
(PassData data, RasterGraphContext context) => {
|
||||||
DrawingManager.instance.ExecuteCustomRenderGraphPass(new DrawingData.CommandBufferWrapper { cmd2 = context.cmd, allowDisablingWireframe = allowDisablingWireframe }, data.camera);
|
DrawingManager.instance.ExecuteCustomRenderGraphPass(new DrawingData.CommandBufferWrapper { cmd2 = context.cmd, allowDisablingWireframe = data.allowDisablingWireframe }, data.camera);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/AlineURPRenderPassFeature.cs
|
assetPath: Packages/com.arongranberg.aline/AlineURPRenderPassFeature.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -1,8 +1,22 @@
|
|||||||
|
## 1.7.8 (2025-05-06)
|
||||||
|
- Fixed a minor GC allocation happening every frame when using URP.
|
||||||
|
- Improved performance in standalone builds when nothing is being rendered.
|
||||||
|
- Fixed a significant memory leak when starting unity in batch mode.
|
||||||
|
|
||||||
|
## 1.7.7 (2025-03-20)
|
||||||
|
- Added a new tutorial on using caching to improve performance: \ref caching.
|
||||||
|
|
||||||
|
- Fixed \reflink{Draw.xz.SolidRectangle} would render the rectangle in the XY plane, instead of the XZ plane.
|
||||||
|
- Fixed an exception could be thrown when cameras were rendered without a color target.
|
||||||
|
- Added \reflink{PolylineWithSymbol.up}, to allow you to configure the orientation of the symbols. Previously it was hardcoded to Vector3.up.
|
||||||
|
- Added an offset parameter to \reflink{PolylineWithSymbol}, to allow shifting all symbols along the polyline. This is useful for animations.
|
||||||
|
- Fixed various minor glitches that could happen when using \reflink{PolylineWithSymbol}.
|
||||||
|
|
||||||
## 1.7.6 (2024-10-14)
|
## 1.7.6 (2024-10-14)
|
||||||
- Fixed a compatibility issue with the high definition render pipeline, accidentally introduced in 1.7.5.
|
- Fixed a compatibility issue with the high definition render pipeline, accidentally introduced in 1.7.5.
|
||||||
- Fixed gizmos were not rendered when opening prefab assets in isolation mode and the high definition render pipeline was used.
|
- Fixed gizmos were not rendered when opening prefab assets in isolation mode and the high definition render pipeline was used.
|
||||||
|
|
||||||
## 1.7.5 (2024-10-07)
|
## 1.7.5 (2024-08-06)
|
||||||
- Fixed a memory leak causing references to destroyed cameras to be kept around.
|
- Fixed a memory leak causing references to destroyed cameras to be kept around.
|
||||||
- Fixed \reflink{Draw.xy.SolidCircle(float3,float,float,float)} and \reflink{Draw.xz.SolidCircle(float3,float,float,float)} would render the circles in the wrong location.
|
- Fixed \reflink{Draw.xy.SolidCircle(float3,float,float,float)} and \reflink{Draw.xz.SolidCircle(float3,float,float,float)} would render the circles in the wrong location.
|
||||||
- Reduced overhead when rendering gizmos.
|
- Reduced overhead when rendering gizmos.
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/CHANGELOG.md
|
assetPath: Packages/com.arongranberg.aline/CHANGELOG.md
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -769,8 +769,12 @@ namespace Drawing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Multiply all coordinates until the next PopMatrix with the given matrix.
|
/// Multiply all coordinates until the next <see cref="PopMatrix"/> with the given matrix.
|
||||||
/// This differs from <see cref="PushSetMatrix"/> in that this stacks with all previously pushed matrices while <see cref="PushSetMatrix"/> does not.
|
///
|
||||||
|
/// PushMatrix and PushSetMatrix are slightly different:
|
||||||
|
///
|
||||||
|
/// - PushMatrix stacks with all previously pushed matrices. The active matrix becomes the product of the given matrix and the previously active one.
|
||||||
|
/// - PushSetMatrix sets the current matrix directly. The active matrix becomes the last pushed matrix.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void PushMatrix (Matrix4x4 matrix) {
|
public void PushMatrix (Matrix4x4 matrix) {
|
||||||
Reserve<float4x4>();
|
Reserve<float4x4>();
|
||||||
@@ -779,8 +783,12 @@ namespace Drawing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Multiply all coordinates until the next PopMatrix with the given matrix.
|
/// Multiply all coordinates until the next <see cref="PopMatrix"/> with the given matrix.
|
||||||
/// This differs from <see cref="PushSetMatrix"/> in that this stacks with all previously pushed matrices while <see cref="PushSetMatrix"/> does not.
|
///
|
||||||
|
/// PushMatrix and PushSetMatrix are slightly different:
|
||||||
|
///
|
||||||
|
/// - PushMatrix stacks with all previously pushed matrices. The active matrix becomes the product of the given matrix and the previously active one.
|
||||||
|
/// - PushSetMatrix sets the current matrix directly. The active matrix becomes the last pushed matrix.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void PushMatrix (float4x4 matrix) {
|
public void PushMatrix (float4x4 matrix) {
|
||||||
Reserve<float4x4>();
|
Reserve<float4x4>();
|
||||||
@@ -789,8 +797,12 @@ namespace Drawing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Multiply all coordinates until the next PopMatrix with the given matrix.
|
/// Multiply all coordinates until the next <see cref="PopMatrix"/> with the given matrix.
|
||||||
/// This differs from <see cref="PushMatrix"/> in that this sets the current matrix directly while <see cref="PushMatrix"/> stacks with all previously pushed matrices.
|
///
|
||||||
|
/// PushMatrix and PushSetMatrix are slightly different:
|
||||||
|
///
|
||||||
|
/// - PushMatrix stacks with all previously pushed matrices. The active matrix becomes the product of the given matrix and the previously active one.
|
||||||
|
/// - PushSetMatrix sets the current matrix directly. The active matrix becomes the last pushed matrix.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void PushSetMatrix (Matrix4x4 matrix) {
|
public void PushSetMatrix (Matrix4x4 matrix) {
|
||||||
Reserve<float4x4>();
|
Reserve<float4x4>();
|
||||||
@@ -800,7 +812,11 @@ namespace Drawing {
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Multiply all coordinates until the next PopMatrix with the given matrix.
|
/// Multiply all coordinates until the next PopMatrix with the given matrix.
|
||||||
/// This differs from <see cref="PushMatrix"/> in that this sets the current matrix directly while <see cref="PushMatrix"/> stacks with all previously pushed matrices.
|
///
|
||||||
|
/// PushMatrix and PushSetMatrix are slightly different:
|
||||||
|
///
|
||||||
|
/// - PushMatrix stacks with all previously pushed matrices. The active matrix becomes the product of the given matrix and the previously active one.
|
||||||
|
/// - PushSetMatrix sets the current matrix directly. The active matrix becomes the last pushed matrix.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void PushSetMatrix (float4x4 matrix) {
|
public void PushSetMatrix (float4x4 matrix) {
|
||||||
Reserve<float4x4>();
|
Reserve<float4x4>();
|
||||||
@@ -808,7 +824,12 @@ namespace Drawing {
|
|||||||
Add(matrix);
|
Add(matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Pops a matrix from the stack</summary>
|
/// <summary>
|
||||||
|
/// Pops a matrix from the stack.
|
||||||
|
///
|
||||||
|
/// See: <see cref="PushMatrix"/>
|
||||||
|
/// See: <see cref="PushSetMatrix"/>
|
||||||
|
/// </summary>
|
||||||
public void PopMatrix () {
|
public void PopMatrix () {
|
||||||
Reserve(4);
|
Reserve(4);
|
||||||
Add(Command.PopMatrix);
|
Add(Command.PopMatrix);
|
||||||
@@ -1053,7 +1074,7 @@ namespace Drawing {
|
|||||||
///
|
///
|
||||||
/// [Open online documentation to see images]
|
/// [Open online documentation to see images]
|
||||||
///
|
///
|
||||||
/// See: <see cref="Circle(float3,float3,float)"/>
|
/// See: <see cref="CommandBuilder.Circle(float3,float3,float)"/>
|
||||||
/// See: <see cref="CircleXY(float3,float,float,float)"/>
|
/// See: <see cref="CircleXY(float3,float,float,float)"/>
|
||||||
/// See: <see cref="Arc(float3,float3,float3)"/>
|
/// See: <see cref="Arc(float3,float3,float3)"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1089,7 +1110,7 @@ namespace Drawing {
|
|||||||
///
|
///
|
||||||
/// [Open online documentation to see images]
|
/// [Open online documentation to see images]
|
||||||
///
|
///
|
||||||
/// See: <see cref="Circle(float3,float3,float)"/>
|
/// See: <see cref="CommandBuilder.Circle(float3,float3,float)"/>
|
||||||
/// See: <see cref="Arc(float3,float3,float3)"/>
|
/// See: <see cref="Arc(float3,float3,float3)"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="center">Center of the circle or arc.</param>
|
/// <param name="center">Center of the circle or arc.</param>
|
||||||
@@ -1499,7 +1520,7 @@ namespace Drawing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Determines the symbol to use for <see cref="PolylineWithSymbol"/></summary>
|
/// <summary>Determines the symbol to use for <see cref="PolylineWithSymbol"/></summary>
|
||||||
public enum SymbolDecoration {
|
public enum SymbolDecoration : byte {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// No symbol.
|
/// No symbol.
|
||||||
///
|
///
|
||||||
@@ -1611,20 +1632,43 @@ namespace Drawing {
|
|||||||
float3 prev;
|
float3 prev;
|
||||||
float offset;
|
float offset;
|
||||||
readonly float symbolSize;
|
readonly float symbolSize;
|
||||||
readonly float symbolSpacing;
|
readonly float connectingSegmentLength;
|
||||||
readonly float symbolPadding;
|
readonly float symbolPadding;
|
||||||
readonly float symbolOffset;
|
readonly float symbolOffset;
|
||||||
readonly SymbolDecoration symbol;
|
|
||||||
readonly bool reverseSymbols;
|
|
||||||
bool odd;
|
|
||||||
|
|
||||||
/// <summary>Create a new polyline with symbol generator.</summary>
|
/// <summary>
|
||||||
|
/// The up direction of the symbols.
|
||||||
|
///
|
||||||
|
/// This is used to determine the orientation of the symbols.
|
||||||
|
/// By default this is set to (0,1,0).
|
||||||
|
/// </summary>
|
||||||
|
public float3 up;
|
||||||
|
|
||||||
|
readonly SymbolDecoration symbol;
|
||||||
|
State state;
|
||||||
|
readonly bool reverseSymbols;
|
||||||
|
|
||||||
|
enum State : byte {
|
||||||
|
NotStarted,
|
||||||
|
ConnectingSegment,
|
||||||
|
PreSymbolPadding,
|
||||||
|
Symbol,
|
||||||
|
PostSymbolPadding,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create a new polyline with symbol generator.
|
||||||
|
///
|
||||||
|
/// Note: If symbolSize + 2*symbolPadding > symbolSpacing, the symbolSpacing parameter will be increased to accommodate the symbol and its padding.
|
||||||
|
/// There will be no connecting lines between the symbols in this case, as there's no space for them.
|
||||||
|
/// </summary>
|
||||||
/// <param name="symbol">The symbol to use</param>
|
/// <param name="symbol">The symbol to use</param>
|
||||||
/// <param name="symbolSize">The size of the symbol. In case of a circle, this is the diameter.</param>
|
/// <param name="symbolSize">The size of the symbol. In case of a circle, this is the diameter.</param>
|
||||||
/// <param name="symbolPadding">The padding on both sides of the symbol between the symbol and the line.</param>
|
/// <param name="symbolPadding">The padding on both sides of the symbol between the symbol and the line.</param>
|
||||||
/// <param name="symbolSpacing">The spacing between symbols. This is the distance between the centers of the symbols.</param>
|
/// <param name="symbolSpacing">The spacing between symbols. This is the distance between the centers of the symbols.</param>
|
||||||
/// <param name="reverseSymbols">If true, the symbols will be reversed. For cicles this has no effect, but arrowhead symbols will be reversed.</param>
|
/// <param name="reverseSymbols">If true, the symbols will be reversed. For cicles this has no effect, but arrowhead symbols will be reversed.</param>
|
||||||
public PolylineWithSymbol(SymbolDecoration symbol, float symbolSize, float symbolPadding, float symbolSpacing, bool reverseSymbols = false) {
|
/// <param name="offset">Distance to shift all symbols forward along the line. Useful for animations. If offset=0, the first symbol's center is at symbolSpacing/2.</param>
|
||||||
|
public PolylineWithSymbol(SymbolDecoration symbol, float symbolSize, float symbolPadding, float symbolSpacing, bool reverseSymbols = false, float offset = 0) {
|
||||||
if (symbolSpacing <= math.FLT_MIN_NORMAL) throw new System.ArgumentOutOfRangeException(nameof(symbolSpacing), "Symbol spacing must be greater than zero");
|
if (symbolSpacing <= math.FLT_MIN_NORMAL) throw new System.ArgumentOutOfRangeException(nameof(symbolSpacing), "Symbol spacing must be greater than zero");
|
||||||
if (symbolSize <= math.FLT_MIN_NORMAL) throw new System.ArgumentOutOfRangeException(nameof(symbolSize), "Symbol size must be greater than zero");
|
if (symbolSize <= math.FLT_MIN_NORMAL) throw new System.ArgumentOutOfRangeException(nameof(symbolSize), "Symbol size must be greater than zero");
|
||||||
if (symbolPadding < 0) throw new System.ArgumentOutOfRangeException(nameof(symbolPadding), "Symbol padding must non-negative");
|
if (symbolPadding < 0) throw new System.ArgumentOutOfRangeException(nameof(symbolPadding), "Symbol padding must non-negative");
|
||||||
@@ -1633,15 +1677,20 @@ namespace Drawing {
|
|||||||
this.symbol = symbol;
|
this.symbol = symbol;
|
||||||
this.symbolSize = symbolSize;
|
this.symbolSize = symbolSize;
|
||||||
this.symbolPadding = symbolPadding;
|
this.symbolPadding = symbolPadding;
|
||||||
this.symbolSpacing = math.max(0, symbolSpacing - symbolPadding * 2f - symbolSize);
|
this.connectingSegmentLength = math.max(0, symbolSpacing - symbolPadding * 2f - symbolSize);
|
||||||
|
// Calculate actual value, after clamping to a valid range
|
||||||
|
symbolSpacing = symbolPadding * 2 + symbolSize + connectingSegmentLength;
|
||||||
this.reverseSymbols = reverseSymbols;
|
this.reverseSymbols = reverseSymbols;
|
||||||
|
this.up = new float3(0, 1, 0);
|
||||||
symbolOffset = symbol == SymbolDecoration.ArrowHead ? -0.25f * symbolSize : 0;
|
symbolOffset = symbol == SymbolDecoration.ArrowHead ? -0.25f * symbolSize : 0;
|
||||||
if (reverseSymbols) {
|
if (reverseSymbols) {
|
||||||
symbolOffset = -symbolOffset;
|
symbolOffset = -symbolOffset;
|
||||||
}
|
}
|
||||||
symbolOffset += 0.5f * symbolSize;
|
symbolOffset += 0.5f * symbolSize;
|
||||||
offset = -1;
|
this.offset = (this.connectingSegmentLength * 0.5f + offset) % symbolSpacing;
|
||||||
odd = false;
|
// Ensure the initial offset is always negative. This makes the state machine start in the correct state when the offset turns positive.
|
||||||
|
if (this.offset > 0) this.offset -= symbolSpacing;
|
||||||
|
this.state = State.NotStarted;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -1652,48 +1701,77 @@ namespace Drawing {
|
|||||||
/// <param name="draw">The command builder to draw to. You can use a built-in builder like \reflink{Draw.editor} or \reflink{Draw.ingame}, or use a custom one.</param>
|
/// <param name="draw">The command builder to draw to. You can use a built-in builder like \reflink{Draw.editor} or \reflink{Draw.ingame}, or use a custom one.</param>
|
||||||
/// <param name="next">The next point in the polyline to move to.</param>
|
/// <param name="next">The next point in the polyline to move to.</param>
|
||||||
public void MoveTo (ref CommandBuilder draw, float3 next) {
|
public void MoveTo (ref CommandBuilder draw, float3 next) {
|
||||||
if (offset == -1) {
|
if (state == State.NotStarted) {
|
||||||
offset = this.symbolSpacing * 0.5f;
|
|
||||||
prev = next;
|
prev = next;
|
||||||
|
state = State.ConnectingSegment;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var len = math.length(next - prev);
|
var len = math.length(next - prev);
|
||||||
var invLen = math.rcp(len);
|
var invLen = math.rcp(len);
|
||||||
var dir = next - prev;
|
var dir = next - prev;
|
||||||
float3 up = default;
|
float3 up = default;
|
||||||
if (symbol != SymbolDecoration.None) {
|
if (symbol != SymbolDecoration.None) {
|
||||||
up = math.normalizesafe(math.cross(dir, math.cross(dir, new float3(0, 1, 0))));
|
up = math.normalizesafe(math.cross(dir, math.cross(dir, this.up)));
|
||||||
if (math.all(up == 0f)) {
|
if (math.all(up == 0f)) {
|
||||||
up = new float3(0, 0, 1);
|
up = new float3(0, 0, 1);
|
||||||
}
|
}
|
||||||
|
if (reverseSymbols) dir = -dir;
|
||||||
}
|
}
|
||||||
if (reverseSymbols) dir = -dir;
|
|
||||||
if (offset > 0 && !odd) {
|
var currentPositionOnSegment = 0f;
|
||||||
draw.Line(prev, math.lerp(prev, next, math.min(offset * invLen, 1)));
|
while (true) {
|
||||||
}
|
if (state == State.ConnectingSegment) {
|
||||||
while (offset < len) {
|
if (offset >= 0 && offset != currentPositionOnSegment) {
|
||||||
if (odd) {
|
currentPositionOnSegment = math.max(0, currentPositionOnSegment);
|
||||||
var pLast = math.lerp(prev, next, offset * invLen);
|
var pLast = math.lerp(prev, next, currentPositionOnSegment * invLen);
|
||||||
offset += symbolSpacing;
|
var p = math.lerp(prev, next, math.min(offset * invLen, 1));
|
||||||
var p = math.lerp(prev, next, math.min(offset * invLen, 1));
|
draw.Line(pLast, p);
|
||||||
draw.Line(pLast, p);
|
}
|
||||||
offset += symbolPadding;
|
|
||||||
} else {
|
if (offset < len) {
|
||||||
var p = math.lerp(prev, next, (offset + symbolOffset) * invLen);
|
state = State.PreSymbolPadding;
|
||||||
switch (symbol) {
|
currentPositionOnSegment = offset;
|
||||||
case SymbolDecoration.None:
|
offset += symbolPadding;
|
||||||
break;
|
} else {
|
||||||
case SymbolDecoration.ArrowHead:
|
|
||||||
draw.Arrowhead(p, dir, up, symbolSize);
|
|
||||||
break;
|
|
||||||
case SymbolDecoration.Circle:
|
|
||||||
default:
|
|
||||||
draw.Circle(p, up, symbolSize * 0.5f);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
offset += symbolSize + symbolPadding;
|
} else if (state == State.PreSymbolPadding) {
|
||||||
|
if (offset >= len) break;
|
||||||
|
|
||||||
|
state = State.Symbol;
|
||||||
|
currentPositionOnSegment = offset;
|
||||||
|
offset += symbolOffset;
|
||||||
|
} else if (state == State.Symbol) {
|
||||||
|
if (offset >= len) break;
|
||||||
|
|
||||||
|
if (offset >= 0) {
|
||||||
|
var p = math.lerp(prev, next, offset * invLen);
|
||||||
|
switch (symbol) {
|
||||||
|
case SymbolDecoration.None:
|
||||||
|
break;
|
||||||
|
case SymbolDecoration.ArrowHead:
|
||||||
|
draw.Arrowhead(p, dir, up, symbolSize);
|
||||||
|
break;
|
||||||
|
case SymbolDecoration.Circle:
|
||||||
|
default:
|
||||||
|
draw.Circle(p, up, symbolSize * 0.5f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
state = State.PostSymbolPadding;
|
||||||
|
currentPositionOnSegment = offset;
|
||||||
|
offset += -symbolOffset + symbolSize + symbolPadding;
|
||||||
|
} else if (state == State.PostSymbolPadding) {
|
||||||
|
if (offset >= len) break;
|
||||||
|
|
||||||
|
state = State.ConnectingSegment;
|
||||||
|
currentPositionOnSegment = offset;
|
||||||
|
offset += connectingSegmentLength;
|
||||||
|
} else {
|
||||||
|
throw new System.Exception("Invalid state");
|
||||||
}
|
}
|
||||||
odd = !odd;
|
|
||||||
}
|
}
|
||||||
offset -= len;
|
offset -= len;
|
||||||
prev = next;
|
prev = next;
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/CommandBuilder.cs
|
assetPath: Packages/com.arongranberg.aline/CommandBuilder.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ namespace Drawing {
|
|||||||
///
|
///
|
||||||
/// [Open online documentation to see images]
|
/// [Open online documentation to see images]
|
||||||
///
|
///
|
||||||
/// See: <see cref="Circle(float3,float3,float)"/>
|
/// See: <see cref="CommandBuilder.Circle(float3,float3,float)"/>
|
||||||
/// See: <see cref="Arc(float3,float3,float3)"/>
|
/// See: <see cref="Arc(float3,float3,float3)"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="center">Center of the circle or arc.</param>
|
/// <param name="center">Center of the circle or arc.</param>
|
||||||
@@ -380,7 +380,7 @@ namespace Drawing {
|
|||||||
/// See: <see cref="Draw.SolidBox"/>
|
/// See: <see cref="Draw.SolidBox"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void SolidRectangle (Rect rect) {
|
public void SolidRectangle (Rect rect) {
|
||||||
draw.SolidPlane(new float3(rect.center.x, rect.center.y, 0.0f), xy ? XY_TO_XZ_ROTATION : XZ_TO_XZ_ROTATION, new float2(rect.width, rect.height));
|
draw.SolidPlane(xy ? new float3(rect.center.x, rect.center.y, 0.0f) : new float3(rect.center.x, 0, rect.center.y), xy ? XY_TO_XZ_ROTATION : XZ_TO_XZ_ROTATION, new float2(rect.width, rect.height));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/CommandBuilder2D.cs
|
assetPath: Packages/com.arongranberg.aline/CommandBuilder2D.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/CommandBuilder2DExtensions.cs
|
assetPath: Packages/com.arongranberg.aline/CommandBuilder2DExtensions.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/CommandBuilderExtensions.cs
|
assetPath: Packages/com.arongranberg.aline/CommandBuilderExtensions.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Compatibility.cs
|
assetPath: Packages/com.arongranberg.aline/Compatibility.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: b22e5f8074c5ce792861020e4d344a86
|
guid: 76243a61ee71cb534816a0138b268178
|
||||||
TextScriptImporter:
|
TextScriptImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Documentation/documentation.html
|
assetPath: Packages/com.arongranberg.aline/Documentation/documentation.html
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 15017efce836c1a3982fc6ad3b0bc909
|
guid: 648b4ab8bbdc27e50b3841c386b2d587
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Documentation/documentation.pdf
|
assetPath: Packages/com.arongranberg.aline/Documentation/documentation.pdf
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Documentation/index.md
|
assetPath: Packages/com.arongranberg.aline/Documentation/index.md
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Draw.cs
|
assetPath: Packages/com.arongranberg.aline/Draw.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ namespace Drawing {
|
|||||||
///
|
///
|
||||||
/// You must do this when you are done with the scope, even if it was never used to actually render anything.
|
/// You must do this when you are done with the scope, even if it was never used to actually render anything.
|
||||||
/// The items will stop rendering immediately: the next camera to render will not render the items unless kept alive in some other way.
|
/// The items will stop rendering immediately: the next camera to render will not render the items unless kept alive in some other way.
|
||||||
/// For example items are always rendered at least once.
|
/// However, items are always rendered at least once.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Dispose () {
|
public void Dispose () {
|
||||||
if (gizmos.IsAllocated) {
|
if (gizmos.IsAllocated) {
|
||||||
@@ -119,41 +119,7 @@ namespace Drawing {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Helper for drawing Gizmos in a performant way</summary>
|
||||||
/// Helper for drawing Gizmos in a performant way.
|
|
||||||
/// This is a replacement for the Unity Gizmos class as that is not very performant
|
|
||||||
/// when drawing very large amounts of geometry (for example a large grid graph).
|
|
||||||
/// These gizmos can be persistent, so if the data does not change, the gizmos
|
|
||||||
/// do not need to be updated.
|
|
||||||
///
|
|
||||||
/// How to use
|
|
||||||
/// - Create a Hasher object and hash whatever data you will be using to draw the gizmos
|
|
||||||
/// Could be for example the positions of the vertices or something. Just as long as
|
|
||||||
/// if the gizmos should change, then the hash changes as well.
|
|
||||||
/// - Check if a cached mesh exists for that hash
|
|
||||||
/// - If not, then create a Builder object and call the drawing methods until you are done
|
|
||||||
/// and then call Finalize with a reference to a gizmos class and the hash you calculated before.
|
|
||||||
/// - Call gizmos.Draw with the hash.
|
|
||||||
/// - When you are done with drawing gizmos for this frame, call gizmos.FinalizeDraw
|
|
||||||
///
|
|
||||||
/// <code>
|
|
||||||
/// var a = Vector3.zero;
|
|
||||||
/// var b = Vector3.one;
|
|
||||||
/// var color = Color.red;
|
|
||||||
/// var hasher = DrawingData.Hasher.Create(this);
|
|
||||||
///
|
|
||||||
/// hasher.Add(a);
|
|
||||||
/// hasher.Add(b);
|
|
||||||
/// hasher.Add(color);
|
|
||||||
/// var gizmos = DrawingManager.instance.gizmos;
|
|
||||||
/// if (!gizmos.Draw(hasher)) {
|
|
||||||
/// using (var builder = gizmos.GetBuilder(hasher)) {
|
|
||||||
/// // Ideally something very complex, not just a single line
|
|
||||||
/// builder.Line(a, b, color);
|
|
||||||
/// }
|
|
||||||
/// }
|
|
||||||
/// </code>
|
|
||||||
/// </summary>
|
|
||||||
public class DrawingData {
|
public class DrawingData {
|
||||||
/// <summary>Combines hashes into a single hash value</summary>
|
/// <summary>Combines hashes into a single hash value</summary>
|
||||||
public struct Hasher : IEquatable<Hasher> {
|
public struct Hasher : IEquatable<Hasher> {
|
||||||
@@ -161,6 +127,7 @@ namespace Drawing {
|
|||||||
|
|
||||||
public static Hasher NotSupplied => new Hasher { hash = ulong.MaxValue };
|
public static Hasher NotSupplied => new Hasher { hash = ulong.MaxValue };
|
||||||
|
|
||||||
|
[System.Obsolete("Use the constructor instead")]
|
||||||
public static Hasher Create<T>(T init) {
|
public static Hasher Create<T>(T init) {
|
||||||
var h = new Hasher();
|
var h = new Hasher();
|
||||||
|
|
||||||
@@ -168,17 +135,17 @@ namespace Drawing {
|
|||||||
return h;
|
return h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Includes the given data in the final hash.
|
||||||
|
/// You can call this as many times as you want.
|
||||||
|
/// </summary>
|
||||||
public void Add<T>(T hash) {
|
public void Add<T>(T hash) {
|
||||||
// Just a regular hash function. The + 12289 is to make sure that hashing zeros doesn't just produce a zero (and generally that hashing one X doesn't produce a hash of X)
|
// Just a regular hash function. The + 12289 is to make sure that hashing zeros doesn't just produce a zero (and generally that hashing one X doesn't produce a hash of X)
|
||||||
// (with a struct we can't provide default initialization)
|
// (with a struct we can't provide default initialization)
|
||||||
this.hash = (1572869UL * this.hash) ^ (ulong)hash.GetHashCode() + 12289;
|
this.hash = (1572869UL * this.hash) ^ (ulong)hash.GetHashCode() + 12289;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ulong Hash {
|
public readonly ulong Hash => hash;
|
||||||
get {
|
|
||||||
return hash;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override int GetHashCode () {
|
public override int GetHashCode () {
|
||||||
return (int)hash;
|
return (int)hash;
|
||||||
@@ -208,7 +175,11 @@ namespace Drawing {
|
|||||||
JobHandle buildJob, splitterJob;
|
JobHandle buildJob, splitterJob;
|
||||||
public List<MeshWithType> meshes;
|
public List<MeshWithType> meshes;
|
||||||
|
|
||||||
public bool isValid => type != Type.Invalid;
|
public bool isValid {
|
||||||
|
get {
|
||||||
|
return type != Type.Invalid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public struct CapturedState {
|
public struct CapturedState {
|
||||||
public Matrix4x4 matrix;
|
public Matrix4x4 matrix;
|
||||||
@@ -615,6 +586,18 @@ namespace Drawing {
|
|||||||
public void Submit (DrawingData gizmos) {
|
public void Submit (DrawingData gizmos) {
|
||||||
if (state != State.Initialized) throw new System.InvalidOperationException();
|
if (state != State.Initialized) throw new System.InvalidOperationException();
|
||||||
|
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
if (meta.isGizmos) {
|
||||||
|
// Gizmos are never drawn in standalone builds.
|
||||||
|
// Draw.Line, and similar draw commands, will already have been removed in standalone builds,
|
||||||
|
// but if users use e.g. Draw.editor directly, then the commands will be added to the command buffer.
|
||||||
|
// For performance we can just discard the whole buffer here.
|
||||||
|
Release();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
// There are about 128 buffers we need to check and it's faster to do that using Burst
|
// There are about 128 buffers we need to check and it's faster to do that using Burst
|
||||||
if (meshes.Count == 0 && !AnyBuffersWrittenToInvoke((UnsafeAppendBuffer*)commandBuffers.GetUnsafeReadOnlyPtr(), commandBuffers.Length)) {
|
if (meshes.Count == 0 && !AnyBuffersWrittenToInvoke((UnsafeAppendBuffer*)commandBuffers.GetUnsafeReadOnlyPtr(), commandBuffers.Length)) {
|
||||||
@@ -825,6 +808,8 @@ namespace Drawing {
|
|||||||
Stack<int> freeSlots;
|
Stack<int> freeSlots;
|
||||||
Stack<List<int> > freeLists;
|
Stack<List<int> > freeLists;
|
||||||
|
|
||||||
|
public bool isEmpty => data == null || freeSlots.Count == data.Length;
|
||||||
|
|
||||||
public int memoryUsage {
|
public int memoryUsage {
|
||||||
get {
|
get {
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
@@ -1346,7 +1331,7 @@ namespace Drawing {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Draw (Hasher hasher, RedrawScope scope) {
|
public bool Draw (Hasher hasher, RedrawScope scope) {
|
||||||
if (hasher.Equals(Hasher.NotSupplied)) throw new System.ArgumentException("Invalid hash value");
|
if (hasher.Equals(Hasher.NotSupplied)) throw new System.ArgumentException("Invalid hash value");
|
||||||
processedData.SetCustomScope(hasher, scope);
|
if (scope.isValid) processedData.SetCustomScope(hasher, scope);
|
||||||
return processedData.SetVersion(hasher, version);
|
return processedData.SetVersion(hasher, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1549,6 +1534,9 @@ namespace Drawing {
|
|||||||
/// <summary>Call after all <see cref="Draw"/> commands for the frame have been done to draw everything.</summary>
|
/// <summary>Call after all <see cref="Draw"/> commands for the frame have been done to draw everything.</summary>
|
||||||
/// <param name="allowCameraDefault">Indicates if built-in command builders and custom ones without a custom CommandBuilder.cameraTargets should render to this camera.</param>
|
/// <param name="allowCameraDefault">Indicates if built-in command builders and custom ones without a custom CommandBuilder.cameraTargets should render to this camera.</param>
|
||||||
public void Render (Camera cam, bool allowGizmos, CommandBufferWrapper commandBuffer, bool allowCameraDefault) {
|
public void Render (Camera cam, bool allowGizmos, CommandBufferWrapper commandBuffer, bool allowCameraDefault) {
|
||||||
|
// Early out when there's nothing to render
|
||||||
|
if (processedData.isEmpty) return;
|
||||||
|
|
||||||
LoadMaterials();
|
LoadMaterials();
|
||||||
|
|
||||||
// Warn if the materials could not be found
|
// Warn if the materials could not be found
|
||||||
@@ -1559,9 +1547,6 @@ namespace Drawing {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var planes = frustrumPlanes;
|
|
||||||
GeometryUtility.CalculateFrustumPlanes(cam, planes);
|
|
||||||
|
|
||||||
if (!cameraVersions.TryGetValue(cam, out Range cameraRenderingRange)) {
|
if (!cameraVersions.TryGetValue(cam, out Range cameraRenderingRange)) {
|
||||||
cameraRenderingRange = new Range { start = int.MinValue, end = int.MinValue };
|
cameraRenderingRange = new Range { start = int.MinValue, end = int.MinValue };
|
||||||
}
|
}
|
||||||
@@ -1616,71 +1601,78 @@ namespace Drawing {
|
|||||||
processedData.CollectMeshes(cameraRenderingRange.start, meshes, cam, allowGizmos, allowCameraDefault);
|
processedData.CollectMeshes(cameraRenderingRange.start, meshes, cam, allowGizmos, allowCameraDefault);
|
||||||
processedData.PoolDynamicMeshes(this);
|
processedData.PoolDynamicMeshes(this);
|
||||||
MarkerCollectMeshes.End();
|
MarkerCollectMeshes.End();
|
||||||
MarkerSortMeshes.Begin();
|
|
||||||
// Note that a stable sort is required as some meshes may have the same sorting index
|
|
||||||
// but those meshes will have a consistent ordering between them in the list
|
|
||||||
meshes.Sort(meshSorter);
|
|
||||||
MarkerSortMeshes.End();
|
|
||||||
|
|
||||||
int colorID = Shader.PropertyToID("_Color");
|
// Early out if nothing is being rendered
|
||||||
int colorFadeID = Shader.PropertyToID("_FadeColor");
|
if (meshes.Count > 0) {
|
||||||
var solidBaseColor = new Color(1, 1, 1, settings.solidOpacity);
|
MarkerSortMeshes.Begin();
|
||||||
var solidFadeColor = new Color(1, 1, 1, settings.solidOpacityBehindObjects);
|
// Note that a stable sort is required as some meshes may have the same sorting index
|
||||||
var lineBaseColor = new Color(1, 1, 1, settings.lineOpacity);
|
// but those meshes will have a consistent ordering between them in the list
|
||||||
var lineFadeColor = new Color(1, 1, 1, settings.lineOpacityBehindObjects);
|
meshes.Sort(meshSorter);
|
||||||
var textBaseColor = new Color(1, 1, 1, settings.textOpacity);
|
MarkerSortMeshes.End();
|
||||||
var textFadeColor = new Color(1, 1, 1, settings.textOpacityBehindObjects);
|
|
||||||
|
|
||||||
// The meshes list is already sorted as first surfaces, then lines, then text
|
var planes = frustrumPlanes;
|
||||||
for (int i = 0; i < meshes.Count;) {
|
GeometryUtility.CalculateFrustumPlanes(cam, planes);
|
||||||
int meshEndIndex = i+1;
|
|
||||||
var tp = meshes[i].type & MeshType.BaseType;
|
|
||||||
while (meshEndIndex < meshes.Count && (meshes[meshEndIndex].type & MeshType.BaseType) == tp) meshEndIndex++;
|
|
||||||
|
|
||||||
Material mat;
|
int colorID = Shader.PropertyToID("_Color");
|
||||||
customMaterialProperties.Clear();
|
int colorFadeID = Shader.PropertyToID("_FadeColor");
|
||||||
switch (tp) {
|
var solidBaseColor = new Color(1, 1, 1, settings.solidOpacity);
|
||||||
case MeshType.Solid:
|
var solidFadeColor = new Color(1, 1, 1, settings.solidOpacityBehindObjects);
|
||||||
mat = surfaceMaterial;
|
var lineBaseColor = new Color(1, 1, 1, settings.lineOpacity);
|
||||||
customMaterialProperties.SetColor(colorID, solidBaseColor);
|
var lineFadeColor = new Color(1, 1, 1, settings.lineOpacityBehindObjects);
|
||||||
customMaterialProperties.SetColor(colorFadeID, solidFadeColor);
|
var textBaseColor = new Color(1, 1, 1, settings.textOpacity);
|
||||||
break;
|
var textFadeColor = new Color(1, 1, 1, settings.textOpacityBehindObjects);
|
||||||
case MeshType.Lines:
|
|
||||||
mat = lineMaterial;
|
|
||||||
customMaterialProperties.SetColor(colorID, lineBaseColor);
|
|
||||||
customMaterialProperties.SetColor(colorFadeID, lineFadeColor);
|
|
||||||
break;
|
|
||||||
case MeshType.Text:
|
|
||||||
mat = fontData.material;
|
|
||||||
customMaterialProperties.SetColor(colorID, textBaseColor);
|
|
||||||
customMaterialProperties.SetColor(colorFadeID, textFadeColor);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new System.InvalidOperationException("Invalid mesh type");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int pass = 0; pass < mat.passCount; pass++) {
|
// The meshes list is already sorted as first surfaces, then lines, then text
|
||||||
for (int j = i; j < meshEndIndex; j++) {
|
for (int i = 0; i < meshes.Count;) {
|
||||||
var mesh = meshes[j];
|
int meshEndIndex = i+1;
|
||||||
if ((mesh.type & MeshType.Custom) != 0) {
|
var tp = meshes[i].type & MeshType.BaseType;
|
||||||
// This mesh type may have a matrix set. So we need to handle that
|
while (meshEndIndex < meshes.Count && (meshes[meshEndIndex].type & MeshType.BaseType) == tp) meshEndIndex++;
|
||||||
if (GeometryUtility.TestPlanesAABB(planes, TransformBoundingBox(mesh.matrix, mesh.mesh.bounds))) {
|
|
||||||
// Custom meshes may have different colors
|
Material mat;
|
||||||
customMaterialProperties.SetColor(colorID, solidBaseColor * mesh.color);
|
customMaterialProperties.Clear();
|
||||||
commandBuffer.DrawMesh(mesh.mesh, mesh.matrix, mat, 0, pass, customMaterialProperties);
|
switch (tp) {
|
||||||
customMaterialProperties.SetColor(colorID, solidBaseColor);
|
case MeshType.Solid:
|
||||||
|
mat = surfaceMaterial;
|
||||||
|
customMaterialProperties.SetColor(colorID, solidBaseColor);
|
||||||
|
customMaterialProperties.SetColor(colorFadeID, solidFadeColor);
|
||||||
|
break;
|
||||||
|
case MeshType.Lines:
|
||||||
|
mat = lineMaterial;
|
||||||
|
customMaterialProperties.SetColor(colorID, lineBaseColor);
|
||||||
|
customMaterialProperties.SetColor(colorFadeID, lineFadeColor);
|
||||||
|
break;
|
||||||
|
case MeshType.Text:
|
||||||
|
mat = fontData.material;
|
||||||
|
customMaterialProperties.SetColor(colorID, textBaseColor);
|
||||||
|
customMaterialProperties.SetColor(colorFadeID, textFadeColor);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new System.InvalidOperationException("Invalid mesh type");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int pass = 0; pass < mat.passCount; pass++) {
|
||||||
|
for (int j = i; j < meshEndIndex; j++) {
|
||||||
|
var mesh = meshes[j];
|
||||||
|
if ((mesh.type & MeshType.Custom) != 0) {
|
||||||
|
// This mesh type may have a matrix set. So we need to handle that
|
||||||
|
if (GeometryUtility.TestPlanesAABB(planes, TransformBoundingBox(mesh.matrix, mesh.mesh.bounds))) {
|
||||||
|
// Custom meshes may have different colors
|
||||||
|
customMaterialProperties.SetColor(colorID, solidBaseColor * mesh.color);
|
||||||
|
commandBuffer.DrawMesh(mesh.mesh, mesh.matrix, mat, 0, pass, customMaterialProperties);
|
||||||
|
customMaterialProperties.SetColor(colorID, solidBaseColor);
|
||||||
|
}
|
||||||
|
} else if (GeometryUtility.TestPlanesAABB(planes, mesh.mesh.bounds)) {
|
||||||
|
// This mesh is drawn with an identity matrix
|
||||||
|
commandBuffer.DrawMesh(mesh.mesh, Matrix4x4.identity, mat, 0, pass, customMaterialProperties);
|
||||||
}
|
}
|
||||||
} else if (GeometryUtility.TestPlanesAABB(planes, mesh.mesh.bounds)) {
|
|
||||||
// This mesh is drawn with an identity matrix
|
|
||||||
commandBuffer.DrawMesh(mesh.mesh, Matrix4x4.identity, mat, 0, pass, customMaterialProperties);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i = meshEndIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
i = meshEndIndex;
|
meshes.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
meshes.Clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cameraVersions[cam] = cameraRenderingRange;
|
cameraVersions[cam] = cameraRenderingRange;
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/DrawingData.cs
|
assetPath: Packages/com.arongranberg.aline/DrawingData.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -1,19 +1,16 @@
|
|||||||
|
// TODO: Check HDRP custom pass support, and log a warning if it is disabled
|
||||||
#pragma warning disable 649 // Field `Drawing.GizmoContext.activeTransform' is never assigned to, and will always have its default value `null'. Not used outside of the unity editor.
|
#pragma warning disable 649 // Field `Drawing.GizmoContext.activeTransform' is never assigned to, and will always have its default value `null'. Not used outside of the unity editor.
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System.Collections;
|
|
||||||
using System;
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEditor.SceneManagement;
|
using UnityEditor.SceneManagement;
|
||||||
#endif
|
#endif
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Unity.Jobs;
|
using Unity.Jobs;
|
||||||
using Unity.Mathematics;
|
|
||||||
using UnityEngine.Rendering;
|
using UnityEngine.Rendering;
|
||||||
using Unity.Profiling;
|
using Unity.Profiling;
|
||||||
#if MODULE_RENDER_PIPELINES_UNIVERSAL
|
#if MODULE_RENDER_PIPELINES_UNIVERSAL
|
||||||
using UnityEngine.Rendering.Universal;
|
using UnityEngine.Rendering.Universal;
|
||||||
using UnityEngine.Profiling;
|
|
||||||
#endif
|
#endif
|
||||||
#if MODULE_RENDER_PIPELINES_HIGH_DEFINITION
|
#if MODULE_RENDER_PIPELINES_HIGH_DEFINITION
|
||||||
using UnityEngine.Rendering.HighDefinition;
|
using UnityEngine.Rendering.HighDefinition;
|
||||||
@@ -140,6 +137,7 @@ namespace Drawing {
|
|||||||
public DrawingData gizmos;
|
public DrawingData gizmos;
|
||||||
static List<GizmoDrawerGroup> gizmoDrawers = new List<GizmoDrawerGroup>();
|
static List<GizmoDrawerGroup> gizmoDrawers = new List<GizmoDrawerGroup>();
|
||||||
static Dictionary<System.Type, int> gizmoDrawerIndices = new Dictionary<System.Type, int>();
|
static Dictionary<System.Type, int> gizmoDrawerIndices = new Dictionary<System.Type, int>();
|
||||||
|
static bool ignoreAllDrawing;
|
||||||
static DrawingManager _instance;
|
static DrawingManager _instance;
|
||||||
bool framePassed;
|
bool framePassed;
|
||||||
int lastFrameCount = int.MinValue;
|
int lastFrameCount = int.MinValue;
|
||||||
@@ -238,6 +236,14 @@ namespace Drawing {
|
|||||||
};
|
};
|
||||||
_instance = go.AddComponent<DrawingManager>();
|
_instance = go.AddComponent<DrawingManager>();
|
||||||
if (Application.isPlaying) DontDestroyOnLoad(go);
|
if (Application.isPlaying) DontDestroyOnLoad(go);
|
||||||
|
|
||||||
|
if (Application.isBatchMode) {
|
||||||
|
// In batch mode, we never want to draw anything.
|
||||||
|
// See https://forum.arongranberg.com/t/drawingmanager-holds-on-to-memory-in-batch-mode/17765
|
||||||
|
ignoreAllDrawing = true;
|
||||||
|
gizmoDrawers.Clear();
|
||||||
|
gizmoDrawerIndices.Clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Detects which render pipeline is being used and configures them for rendering</summary>
|
/// <summary>Detects which render pipeline is being used and configures them for rendering</summary>
|
||||||
@@ -594,6 +600,10 @@ namespace Drawing {
|
|||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
void DrawGizmos (bool usingRenderPipeline) {
|
void DrawGizmos (bool usingRenderPipeline) {
|
||||||
GizmoContext.SetDirty();
|
GizmoContext.SetDirty();
|
||||||
|
|
||||||
|
// Reduce overhead if there's nothing to render
|
||||||
|
if (gizmoDrawers.Count == 0) return;
|
||||||
|
|
||||||
MarkerGizmosAllowed.Begin();
|
MarkerGizmosAllowed.Begin();
|
||||||
|
|
||||||
// Figure out which component types should be rendered
|
// Figure out which component types should be rendered
|
||||||
@@ -721,6 +731,8 @@ namespace Drawing {
|
|||||||
/// The DrawGizmos method on the object will be called every frame until it is destroyed (assuming there are cameras with gizmos enabled).
|
/// The DrawGizmos method on the object will be called every frame until it is destroyed (assuming there are cameras with gizmos enabled).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void Register (IDrawGizmos item) {
|
public static void Register (IDrawGizmos item) {
|
||||||
|
if (ignoreAllDrawing) return;
|
||||||
|
|
||||||
var tp = item.GetType();
|
var tp = item.GetType();
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
@@ -782,9 +794,41 @@ namespace Drawing {
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get an empty builder for queuing drawing commands.
|
/// Get an empty builder for queuing drawing commands.
|
||||||
/// TODO: Example usage.
|
///
|
||||||
|
/// <code>
|
||||||
|
/// // Just a nice looking curve (which uses a lot of complex math)
|
||||||
|
/// // See https://en.wikipedia.org/wiki/Butterfly_curve_(transcendental)
|
||||||
|
/// static float2 ButterflyCurve (float t) {
|
||||||
|
/// t *= 12 * math.PI;
|
||||||
|
/// var k = math.exp(math.cos(t)) - 2*math.cos(4*t) - math.pow(math.sin(t/12f), 5);
|
||||||
|
/// return new float2(k * math.sin(t), k * math.cos(t));
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// // Make the butterfly "flap its wings" two times per second
|
||||||
|
/// var scale = Time.time % 0.5f < 0.25f ? new float2(1, 1) : new float2(0.7f, 1);
|
||||||
|
///
|
||||||
|
/// // Hash all inputs that you use for drawing something complex
|
||||||
|
/// var hasher = new DrawingData.Hasher();
|
||||||
|
/// // The only thing making the drawing change, in this case, is the scale
|
||||||
|
/// hasher.Add(scale);
|
||||||
|
///
|
||||||
|
/// // Try to draw a previously cached mesh with this hash
|
||||||
|
/// if (!DrawingManager.TryDrawHasher(hasher)) {
|
||||||
|
/// // If there's no cached mesh, then draw it from scratch
|
||||||
|
/// using (var builder = DrawingManager.GetBuilder(hasher)) {
|
||||||
|
/// // Draw a complex curve using 10000 lines
|
||||||
|
/// var prev = ButterflyCurve(0);
|
||||||
|
/// for (float t = 0; t < 1; t += 0.0001f) {
|
||||||
|
/// var next = ButterflyCurve(t);
|
||||||
|
/// builder.xy.Line(prev*scale, next*scale, Color.white);
|
||||||
|
/// prev = next;
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// </code>
|
||||||
///
|
///
|
||||||
/// See: <see cref="Drawing.CommandBuilder"/>
|
/// See: <see cref="Drawing.CommandBuilder"/>
|
||||||
|
/// See: caching (view in online documentation for working links)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="hasher">Hash of whatever inputs you used to generate the drawing data.</param>
|
/// <param name="hasher">Hash of whatever inputs you used to generate the drawing data.</param>
|
||||||
/// <param name="redrawScope">Scope for this command builder. See #GetRedrawScope.</param>
|
/// <param name="redrawScope">Scope for this command builder. See #GetRedrawScope.</param>
|
||||||
@@ -792,7 +836,50 @@ namespace Drawing {
|
|||||||
public static CommandBuilder GetBuilder(DrawingData.Hasher hasher, RedrawScope redrawScope = default, bool renderInGame = false) => instance.gizmos.GetBuilder(hasher, redrawScope, renderInGame);
|
public static CommandBuilder GetBuilder(DrawingData.Hasher hasher, RedrawScope redrawScope = default, bool renderInGame = false) => instance.gizmos.GetBuilder(hasher, redrawScope, renderInGame);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A scope which can be used to draw things over multiple frames.
|
/// Tries to draw a builder that was rendered during the last frame using the same hash.
|
||||||
|
///
|
||||||
|
/// Returns: True if the builder was found and scheduled for rendering. If false, you should draw everything again and submit a new command builder.
|
||||||
|
///
|
||||||
|
/// <code>
|
||||||
|
/// // Just a nice looking curve (which uses a lot of complex math)
|
||||||
|
/// // See https://en.wikipedia.org/wiki/Butterfly_curve_(transcendental)
|
||||||
|
/// static float2 ButterflyCurve (float t) {
|
||||||
|
/// t *= 12 * math.PI;
|
||||||
|
/// var k = math.exp(math.cos(t)) - 2*math.cos(4*t) - math.pow(math.sin(t/12f), 5);
|
||||||
|
/// return new float2(k * math.sin(t), k * math.cos(t));
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// // Make the butterfly "flap its wings" two times per second
|
||||||
|
/// var scale = Time.time % 0.5f < 0.25f ? new float2(1, 1) : new float2(0.7f, 1);
|
||||||
|
///
|
||||||
|
/// // Hash all inputs that you use for drawing something complex
|
||||||
|
/// var hasher = new DrawingData.Hasher();
|
||||||
|
/// // The only thing making the drawing change, in this case, is the scale
|
||||||
|
/// hasher.Add(scale);
|
||||||
|
///
|
||||||
|
/// // Try to draw a previously cached mesh with this hash
|
||||||
|
/// if (!DrawingManager.TryDrawHasher(hasher)) {
|
||||||
|
/// // If there's no cached mesh, then draw it from scratch
|
||||||
|
/// using (var builder = DrawingManager.GetBuilder(hasher)) {
|
||||||
|
/// // Draw a complex curve using 10000 lines
|
||||||
|
/// var prev = ButterflyCurve(0);
|
||||||
|
/// for (float t = 0; t < 1; t += 0.0001f) {
|
||||||
|
/// var next = ButterflyCurve(t);
|
||||||
|
/// builder.xy.Line(prev*scale, next*scale, Color.white);
|
||||||
|
/// prev = next;
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// </code>
|
||||||
|
///
|
||||||
|
/// See: caching (view in online documentation for working links)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="hasher">Hash of whatever inputs you used to generate the drawing data.</param>
|
||||||
|
/// <param name="redrawScope">Optional redraw scope for this command builder. See #GetRedrawScope.</param>
|
||||||
|
public static bool TryDrawHasher(DrawingData.Hasher hasher, RedrawScope redrawScope = default) => instance.gizmos.Draw(hasher, redrawScope);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A scope which will persist rendered items over multiple frames until it is disposed.
|
||||||
///
|
///
|
||||||
/// You can use <see cref="GetBuilder(RedrawScope,bool)"/> to get a builder with a given redraw scope.
|
/// You can use <see cref="GetBuilder(RedrawScope,bool)"/> to get a builder with a given redraw scope.
|
||||||
/// Everything drawn using the redraw scope will be drawn every frame until the redraw scope is disposed.
|
/// Everything drawn using the redraw scope will be drawn every frame until the redraw scope is disposed.
|
||||||
@@ -811,6 +898,8 @@ namespace Drawing {
|
|||||||
/// redrawScope.Dispose();
|
/// redrawScope.Dispose();
|
||||||
/// }
|
/// }
|
||||||
/// </code>
|
/// </code>
|
||||||
|
///
|
||||||
|
/// See: caching (view in online documentation for working links)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="associatedGameObject">If not null, the scope will only be drawn if gizmos for the associated GameObject are drawn.
|
/// <param name="associatedGameObject">If not null, the scope will only be drawn if gizmos for the associated GameObject are drawn.
|
||||||
/// This is useful in the unity editor when e.g. opening a prefab in isolation mode, to disable redraw scopes for objects outside the prefab. Has no effect in standalone builds.</param>
|
/// This is useful in the unity editor when e.g. opening a prefab in isolation mode, to disable redraw scopes for objects outside the prefab. Has no effect in standalone builds.</param>
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/DrawingManager.cs
|
assetPath: Packages/com.arongranberg.aline/DrawingManager.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/DrawingSettings.cs
|
assetPath: Packages/com.arongranberg.aline/DrawingSettings.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/DrawingUtilities.cs
|
assetPath: Packages/com.arongranberg.aline/DrawingUtilities.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Editor/DrawingEditor.asmdef
|
assetPath: Packages/com.arongranberg.aline/Editor/DrawingEditor.asmdef
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Editor/DrawingManagerEditor.cs
|
assetPath: Packages/com.arongranberg.aline/Editor/DrawingManagerEditor.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Editor/DrawingSettingsEditor.cs
|
assetPath: Packages/com.arongranberg.aline/Editor/DrawingSettingsEditor.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/GizmoCharacterExample.cs
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/GizmoCharacterExample.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/GizmoSphereExample.cs
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/GizmoSphereExample.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/Gizmos.unity
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/Gizmos.unity
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/Sphere.prefab
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/Sphere.prefab
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/TimedSpawner.cs
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/TimedSpawner.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/aline_dark_blue.mat
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/aline_dark_blue.mat
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/aline_transparent_sphere.mat
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/aline_transparent_sphere.mat
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example2_CurveEditor/CurveEditor.cs
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example2_CurveEditor/CurveEditor.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example2_CurveEditor/CurveEditor.unity
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example2_CurveEditor/CurveEditor.unity
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example3_Burst/Burst.unity
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example3_Burst/Burst.unity
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example3_Burst/BurstExample.cs
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example3_Burst/BurstExample.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example4_Styling/AlineStyling.cs
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example4_Styling/AlineStyling.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example4_Styling/Styling.unity
|
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example4_Styling/Styling.unity
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/GeometryBuilder.cs
|
assetPath: Packages/com.arongranberg.aline/GeometryBuilder.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/MonoBehaviourGizmos.cs
|
assetPath: Packages/com.arongranberg.aline/MonoBehaviourGizmos.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/PackageTools/Editor/DependencyCheck.cs
|
assetPath: Packages/com.arongranberg.aline/PackageTools/Editor/DependencyCheck.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/PackageTools/Editor/PackageToolsEditor.asmdef
|
assetPath: Packages/com.arongranberg.aline/PackageTools/Editor/PackageToolsEditor.asmdef
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Palette.cs
|
assetPath: Packages/com.arongranberg.aline/Palette.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/PersistentFilter.cs
|
assetPath: Packages/com.arongranberg.aline/PersistentFilter.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_common.cginc
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_common.cginc
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_common_line.cginc
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_common_line.cginc
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_common_surface.cginc
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_common_surface.cginc
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_common_text.cginc
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_common_text.cginc
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -136,6 +136,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_fallback_font.png
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_fallback_font.png
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -108,6 +108,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_font.png
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_font.png
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -25,6 +25,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_font.ttf
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_font.ttf
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_outline_mat.mat
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_outline_mat.mat
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_outline_mat.shader
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_outline_mat.shader
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_surface_mat.mat
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_surface_mat.mat
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_surface_mat.shader
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_surface_mat.shader
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_text.shader
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_text.shader
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_text_mat.mat
|
assetPath: Packages/com.arongranberg.aline/Resources/aline_text_mat.mat
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/SDFFont.cs
|
assetPath: Packages/com.arongranberg.aline/SDFFont.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/StreamSplitter.cs
|
assetPath: Packages/com.arongranberg.aline/StreamSplitter.cs
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
@@ -38,5 +38,5 @@
|
|||||||
],
|
],
|
||||||
"unity": "2020.3",
|
"unity": "2020.3",
|
||||||
"unityRelease": "48f1",
|
"unityRelease": "48f1",
|
||||||
"version": "1.7.6"
|
"version": "1.7.8"
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
|||||||
serializedVersion: 1
|
serializedVersion: 1
|
||||||
productId: 162772
|
productId: 162772
|
||||||
packageName: ALINE
|
packageName: ALINE
|
||||||
packageVersion: 1.7.6
|
packageVersion: 1.7.8
|
||||||
assetPath: Packages/com.arongranberg.aline/package.json
|
assetPath: Packages/com.arongranberg.aline/package.json
|
||||||
uploadId: 700292
|
uploadId: 754628
|
||||||
|
|||||||
Reference in New Issue
Block a user