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_Name: Test
|
||||
m_EditorClassIdentifier: Core::Reset.Items.Weapon
|
||||
itemName: Test Weapon
|
||||
permanency: 0
|
||||
essenceRequiredForPermanency: 0
|
||||
weaponModel: {fileID: 0}
|
||||
|
||||
@@ -3,4 +3,5 @@ using UnityEngine;
|
||||
public interface IInteractable{
|
||||
public void Interact();
|
||||
public void CancelInteract();
|
||||
public void OnObserverDetected(EnvironmentObserver observer);
|
||||
}
|
||||
|
||||
@@ -3,5 +3,8 @@ using UnityEngine;
|
||||
namespace Reset.Items{
|
||||
public class Ability : Item, IEquipable{
|
||||
public NodeCanvas.Framework.Graph behaviourGraph;
|
||||
public override void DrawItemInfo(Vector3 position){
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ using UnityEngine;
|
||||
|
||||
namespace Reset.Items{
|
||||
public abstract class Item : ScriptableObject{
|
||||
public string itemName{ get; set; }
|
||||
public string itemName;
|
||||
|
||||
public float permanency;
|
||||
public float essenceRequiredForPermanency;
|
||||
@@ -20,5 +20,7 @@ namespace Reset.Items{
|
||||
newItemDrop.item = this;
|
||||
return newItemDrop;
|
||||
}
|
||||
|
||||
public abstract void DrawItemInfo(Vector3 position);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Drawing;
|
||||
using Unity.Netcode;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -34,5 +35,11 @@ namespace Reset.Items{
|
||||
public void DestroyOnOwnerRpc(){
|
||||
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 Drawing;
|
||||
using NodeCanvas.StateMachines;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -11,5 +12,11 @@ namespace Reset.Items{
|
||||
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.GetComponent<IInteractable>() != null) {
|
||||
hit.transform.GetComponent<IInteractable>().OnObserverDetected(this);
|
||||
}
|
||||
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
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ALINE.asmdef
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
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
|
||||
private class PassData {
|
||||
public Camera camera;
|
||||
public bool allowDisablingWireframe;
|
||||
}
|
||||
|
||||
public override void RecordRenderGraph (RenderGraph renderGraph, ContextContainer frameData) {
|
||||
var cameraData = frameData.Get<UniversalCameraData>();
|
||||
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)) {
|
||||
bool allowDisablingWireframe = false;
|
||||
passData.allowDisablingWireframe = false;
|
||||
|
||||
if (Application.isEditor && (cameraData.cameraType & (CameraType.SceneView | CameraType.Preview)) != 0) {
|
||||
// We need this to be able to disable wireframe rendering in the scene view
|
||||
builder.AllowGlobalStateModification(true);
|
||||
allowDisablingWireframe = true;
|
||||
passData.allowDisablingWireframe = true;
|
||||
}
|
||||
|
||||
builder.SetRenderAttachment(resourceData.activeColorTexture, 0);
|
||||
@@ -53,7 +60,7 @@ namespace Drawing {
|
||||
|
||||
builder.SetRenderFunc<PassData>(
|
||||
(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
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
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)
|
||||
- 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.
|
||||
|
||||
## 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 \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.
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/CHANGELOG.md
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -769,8 +769,12 @@ namespace Drawing {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Multiply all coordinates until the next 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.
|
||||
/// Multiply all coordinates until the next <see cref="PopMatrix"/> with the given matrix.
|
||||
///
|
||||
/// 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>
|
||||
public void PushMatrix (Matrix4x4 matrix) {
|
||||
Reserve<float4x4>();
|
||||
@@ -779,8 +783,12 @@ namespace Drawing {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Multiply all coordinates until the next 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.
|
||||
/// Multiply all coordinates until the next <see cref="PopMatrix"/> with the given matrix.
|
||||
///
|
||||
/// 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>
|
||||
public void PushMatrix (float4x4 matrix) {
|
||||
Reserve<float4x4>();
|
||||
@@ -789,8 +797,12 @@ namespace Drawing {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// Multiply all coordinates until the next <see cref="PopMatrix"/> with the given matrix.
|
||||
///
|
||||
/// 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>
|
||||
public void PushSetMatrix (Matrix4x4 matrix) {
|
||||
Reserve<float4x4>();
|
||||
@@ -800,7 +812,11 @@ namespace Drawing {
|
||||
|
||||
/// <summary>
|
||||
/// 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>
|
||||
public void PushSetMatrix (float4x4 matrix) {
|
||||
Reserve<float4x4>();
|
||||
@@ -808,7 +824,12 @@ namespace Drawing {
|
||||
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 () {
|
||||
Reserve(4);
|
||||
Add(Command.PopMatrix);
|
||||
@@ -1053,7 +1074,7 @@ namespace Drawing {
|
||||
///
|
||||
/// [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="Arc(float3,float3,float3)"/>
|
||||
/// </summary>
|
||||
@@ -1089,7 +1110,7 @@ namespace Drawing {
|
||||
///
|
||||
/// [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)"/>
|
||||
/// </summary>
|
||||
/// <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>
|
||||
public enum SymbolDecoration {
|
||||
public enum SymbolDecoration : byte {
|
||||
/// <summary>
|
||||
/// No symbol.
|
||||
///
|
||||
@@ -1611,20 +1632,43 @@ namespace Drawing {
|
||||
float3 prev;
|
||||
float offset;
|
||||
readonly float symbolSize;
|
||||
readonly float symbolSpacing;
|
||||
readonly float connectingSegmentLength;
|
||||
readonly float symbolPadding;
|
||||
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="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="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>
|
||||
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 (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");
|
||||
@@ -1633,15 +1677,20 @@ namespace Drawing {
|
||||
this.symbol = symbol;
|
||||
this.symbolSize = symbolSize;
|
||||
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.up = new float3(0, 1, 0);
|
||||
symbolOffset = symbol == SymbolDecoration.ArrowHead ? -0.25f * symbolSize : 0;
|
||||
if (reverseSymbols) {
|
||||
symbolOffset = -symbolOffset;
|
||||
}
|
||||
symbolOffset += 0.5f * symbolSize;
|
||||
offset = -1;
|
||||
odd = false;
|
||||
this.offset = (this.connectingSegmentLength * 0.5f + offset) % symbolSpacing;
|
||||
// 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>
|
||||
@@ -1652,34 +1701,52 @@ 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="next">The next point in the polyline to move to.</param>
|
||||
public void MoveTo (ref CommandBuilder draw, float3 next) {
|
||||
if (offset == -1) {
|
||||
offset = this.symbolSpacing * 0.5f;
|
||||
if (state == State.NotStarted) {
|
||||
prev = next;
|
||||
state = State.ConnectingSegment;
|
||||
return;
|
||||
}
|
||||
|
||||
var len = math.length(next - prev);
|
||||
var invLen = math.rcp(len);
|
||||
var dir = next - prev;
|
||||
float3 up = default;
|
||||
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)) {
|
||||
up = new float3(0, 0, 1);
|
||||
}
|
||||
}
|
||||
if (reverseSymbols) dir = -dir;
|
||||
if (offset > 0 && !odd) {
|
||||
draw.Line(prev, math.lerp(prev, next, math.min(offset * invLen, 1)));
|
||||
}
|
||||
while (offset < len) {
|
||||
if (odd) {
|
||||
var pLast = math.lerp(prev, next, offset * invLen);
|
||||
offset += symbolSpacing;
|
||||
|
||||
var currentPositionOnSegment = 0f;
|
||||
while (true) {
|
||||
if (state == State.ConnectingSegment) {
|
||||
if (offset >= 0 && offset != currentPositionOnSegment) {
|
||||
currentPositionOnSegment = math.max(0, currentPositionOnSegment);
|
||||
var pLast = math.lerp(prev, next, currentPositionOnSegment * invLen);
|
||||
var p = math.lerp(prev, next, math.min(offset * invLen, 1));
|
||||
draw.Line(pLast, p);
|
||||
}
|
||||
|
||||
if (offset < len) {
|
||||
state = State.PreSymbolPadding;
|
||||
currentPositionOnSegment = offset;
|
||||
offset += symbolPadding;
|
||||
} else {
|
||||
var p = math.lerp(prev, next, (offset + symbolOffset) * invLen);
|
||||
break;
|
||||
}
|
||||
} 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;
|
||||
@@ -1691,9 +1758,20 @@ namespace Drawing {
|
||||
draw.Circle(p, up, symbolSize * 0.5f);
|
||||
break;
|
||||
}
|
||||
offset += symbolSize + symbolPadding;
|
||||
}
|
||||
odd = !odd;
|
||||
|
||||
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");
|
||||
}
|
||||
}
|
||||
offset -= len;
|
||||
prev = next;
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/CommandBuilder.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -162,7 +162,7 @@ namespace Drawing {
|
||||
///
|
||||
/// [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)"/>
|
||||
/// </summary>
|
||||
/// <param name="center">Center of the circle or arc.</param>
|
||||
@@ -380,7 +380,7 @@ namespace Drawing {
|
||||
/// See: <see cref="Draw.SolidBox"/>
|
||||
/// </summary>
|
||||
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>
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/CommandBuilder2D.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/CommandBuilder2DExtensions.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/CommandBuilderExtensions.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
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
|
||||
guid: b22e5f8074c5ce792861020e4d344a86
|
||||
guid: 76243a61ee71cb534816a0138b268178
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Documentation/documentation.html
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 15017efce836c1a3982fc6ad3b0bc909
|
||||
guid: 648b4ab8bbdc27e50b3841c386b2d587
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Documentation/documentation.pdf
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Documentation/index.md
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -14,6 +14,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
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.
|
||||
/// 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>
|
||||
public void Dispose () {
|
||||
if (gizmos.IsAllocated) {
|
||||
@@ -119,41 +119,7 @@ namespace Drawing {
|
||||
}
|
||||
};
|
||||
|
||||
/// <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>
|
||||
/// <summary>Helper for drawing Gizmos in a performant way</summary>
|
||||
public class DrawingData {
|
||||
/// <summary>Combines hashes into a single hash value</summary>
|
||||
public struct Hasher : IEquatable<Hasher> {
|
||||
@@ -161,6 +127,7 @@ namespace Drawing {
|
||||
|
||||
public static Hasher NotSupplied => new Hasher { hash = ulong.MaxValue };
|
||||
|
||||
[System.Obsolete("Use the constructor instead")]
|
||||
public static Hasher Create<T>(T init) {
|
||||
var h = new Hasher();
|
||||
|
||||
@@ -168,17 +135,17 @@ namespace Drawing {
|
||||
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) {
|
||||
// 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)
|
||||
this.hash = (1572869UL * this.hash) ^ (ulong)hash.GetHashCode() + 12289;
|
||||
}
|
||||
|
||||
public ulong Hash {
|
||||
get {
|
||||
return hash;
|
||||
}
|
||||
}
|
||||
public readonly ulong Hash => hash;
|
||||
|
||||
public override int GetHashCode () {
|
||||
return (int)hash;
|
||||
@@ -208,7 +175,11 @@ namespace Drawing {
|
||||
JobHandle buildJob, splitterJob;
|
||||
public List<MeshWithType> meshes;
|
||||
|
||||
public bool isValid => type != Type.Invalid;
|
||||
public bool isValid {
|
||||
get {
|
||||
return type != Type.Invalid;
|
||||
}
|
||||
}
|
||||
|
||||
public struct CapturedState {
|
||||
public Matrix4x4 matrix;
|
||||
@@ -615,6 +586,18 @@ namespace Drawing {
|
||||
public void Submit (DrawingData gizmos) {
|
||||
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 {
|
||||
// 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)) {
|
||||
@@ -825,6 +808,8 @@ namespace Drawing {
|
||||
Stack<int> freeSlots;
|
||||
Stack<List<int> > freeLists;
|
||||
|
||||
public bool isEmpty => data == null || freeSlots.Count == data.Length;
|
||||
|
||||
public int memoryUsage {
|
||||
get {
|
||||
int sum = 0;
|
||||
@@ -1346,7 +1331,7 @@ namespace Drawing {
|
||||
/// </summary>
|
||||
public bool Draw (Hasher hasher, RedrawScope scope) {
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -1549,6 +1534,9 @@ namespace Drawing {
|
||||
/// <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>
|
||||
public void Render (Camera cam, bool allowGizmos, CommandBufferWrapper commandBuffer, bool allowCameraDefault) {
|
||||
// Early out when there's nothing to render
|
||||
if (processedData.isEmpty) return;
|
||||
|
||||
LoadMaterials();
|
||||
|
||||
// Warn if the materials could not be found
|
||||
@@ -1559,9 +1547,6 @@ namespace Drawing {
|
||||
return;
|
||||
}
|
||||
|
||||
var planes = frustrumPlanes;
|
||||
GeometryUtility.CalculateFrustumPlanes(cam, planes);
|
||||
|
||||
if (!cameraVersions.TryGetValue(cam, out Range cameraRenderingRange)) {
|
||||
cameraRenderingRange = new Range { start = int.MinValue, end = int.MinValue };
|
||||
}
|
||||
@@ -1616,12 +1601,18 @@ namespace Drawing {
|
||||
processedData.CollectMeshes(cameraRenderingRange.start, meshes, cam, allowGizmos, allowCameraDefault);
|
||||
processedData.PoolDynamicMeshes(this);
|
||||
MarkerCollectMeshes.End();
|
||||
|
||||
// Early out if nothing is being rendered
|
||||
if (meshes.Count > 0) {
|
||||
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();
|
||||
|
||||
var planes = frustrumPlanes;
|
||||
GeometryUtility.CalculateFrustumPlanes(cam, planes);
|
||||
|
||||
int colorID = Shader.PropertyToID("_Color");
|
||||
int colorFadeID = Shader.PropertyToID("_FadeColor");
|
||||
var solidBaseColor = new Color(1, 1, 1, settings.solidOpacity);
|
||||
@@ -1682,6 +1673,7 @@ namespace Drawing {
|
||||
|
||||
meshes.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
cameraVersions[cam] = cameraRenderingRange;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
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.
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using System;
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
using UnityEditor.SceneManagement;
|
||||
#endif
|
||||
using System.Collections.Generic;
|
||||
using Unity.Jobs;
|
||||
using Unity.Mathematics;
|
||||
using UnityEngine.Rendering;
|
||||
using Unity.Profiling;
|
||||
#if MODULE_RENDER_PIPELINES_UNIVERSAL
|
||||
using UnityEngine.Rendering.Universal;
|
||||
using UnityEngine.Profiling;
|
||||
#endif
|
||||
#if MODULE_RENDER_PIPELINES_HIGH_DEFINITION
|
||||
using UnityEngine.Rendering.HighDefinition;
|
||||
@@ -140,6 +137,7 @@ namespace Drawing {
|
||||
public DrawingData gizmos;
|
||||
static List<GizmoDrawerGroup> gizmoDrawers = new List<GizmoDrawerGroup>();
|
||||
static Dictionary<System.Type, int> gizmoDrawerIndices = new Dictionary<System.Type, int>();
|
||||
static bool ignoreAllDrawing;
|
||||
static DrawingManager _instance;
|
||||
bool framePassed;
|
||||
int lastFrameCount = int.MinValue;
|
||||
@@ -238,6 +236,14 @@ namespace Drawing {
|
||||
};
|
||||
_instance = go.AddComponent<DrawingManager>();
|
||||
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>
|
||||
@@ -594,6 +600,10 @@ namespace Drawing {
|
||||
#if UNITY_EDITOR
|
||||
void DrawGizmos (bool usingRenderPipeline) {
|
||||
GizmoContext.SetDirty();
|
||||
|
||||
// Reduce overhead if there's nothing to render
|
||||
if (gizmoDrawers.Count == 0) return;
|
||||
|
||||
MarkerGizmosAllowed.Begin();
|
||||
|
||||
// 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).
|
||||
/// </summary>
|
||||
public static void Register (IDrawGizmos item) {
|
||||
if (ignoreAllDrawing) return;
|
||||
|
||||
var tp = item.GetType();
|
||||
|
||||
int index;
|
||||
@@ -782,9 +794,41 @@ namespace Drawing {
|
||||
|
||||
/// <summary>
|
||||
/// 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: 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">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);
|
||||
|
||||
/// <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.
|
||||
/// 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();
|
||||
/// }
|
||||
/// </code>
|
||||
///
|
||||
/// See: caching (view in online documentation for working links)
|
||||
/// </summary>
|
||||
/// <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>
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/DrawingManager.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/DrawingSettings.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/DrawingUtilities.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Editor/DrawingEditor.asmdef
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Editor/DrawingManagerEditor.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Editor/DrawingSettingsEditor.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/GizmoCharacterExample.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/GizmoSphereExample.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/Gizmos.unity
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/Sphere.prefab
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/TimedSpawner.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -10,6 +10,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/aline_dark_blue.mat
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -10,6 +10,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example1_Gizmos/aline_transparent_sphere.mat
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example2_CurveEditor/CurveEditor.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example2_CurveEditor/CurveEditor.unity
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example3_Burst/Burst.unity
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example3_Burst/BurstExample.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example4_Styling/AlineStyling.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/ExampleScenes~/Example4_Styling/Styling.unity
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/GeometryBuilder.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/MonoBehaviourGizmos.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/PackageTools/Editor/DependencyCheck.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/PackageTools/Editor/PackageToolsEditor.asmdef
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Palette.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/PersistentFilter.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -11,6 +11,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_common.cginc
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -12,6 +12,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_common_line.cginc
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -12,6 +12,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_common_surface.cginc
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_common_text.cginc
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -136,6 +136,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_fallback_font.png
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -108,6 +108,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_font.png
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -25,6 +25,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_font.ttf
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -10,6 +10,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_outline_mat.mat
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -11,6 +11,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_outline_mat.shader
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -4,6 +4,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_surface_mat.mat
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -4,6 +4,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_surface_mat.shader
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -11,6 +11,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_text.shader
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -10,6 +10,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/Resources/aline_text_mat.mat
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/SDFFont.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -13,6 +13,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/StreamSplitter.cs
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
@@ -38,5 +38,5 @@
|
||||
],
|
||||
"unity": "2020.3",
|
||||
"unityRelease": "48f1",
|
||||
"version": "1.7.6"
|
||||
"version": "1.7.8"
|
||||
}
|
||||
@@ -9,6 +9,6 @@ AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 162772
|
||||
packageName: ALINE
|
||||
packageVersion: 1.7.6
|
||||
packageVersion: 1.7.8
|
||||
assetPath: Packages/com.arongranberg.aline/package.json
|
||||
uploadId: 700292
|
||||
uploadId: 754628
|
||||
|
||||
Reference in New Issue
Block a user