Fix null data bug during first load
This commit is contained in:
@@ -119,7 +119,7 @@ NavMeshSettings:
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1001 &1278960003
|
||||
--- !u!1001 &594024951
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
@@ -127,47 +127,47 @@ PrefabInstance:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: -774367247743995920, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
- target: {fileID: -774367247743995920, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
propertyPath: m_Enabled
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -364223573239433514, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
- target: {fileID: -364223573239433514, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -364223573239433514, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
- target: {fileID: -364223573239433514, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -364223573239433514, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
- target: {fileID: -364223573239433514, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -364223573239433514, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
- target: {fileID: -364223573239433514, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -364223573239433514, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
- target: {fileID: -364223573239433514, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -364223573239433514, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
- target: {fileID: -364223573239433514, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -364223573239433514, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
- target: {fileID: -364223573239433514, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8980549144392899874, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
- target: {fileID: 8980549144392899874, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: splat_30000
|
||||
value: splat_45000
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: -4216948427090074523, guid: 37755a41ea5c1174cad6f111ea2f209b, type: 3}
|
||||
m_SourcePrefab: {fileID: -4216948427090074523, guid: 25c54d8c074f08447ab1c822a6a052fa, type: 3}
|
||||
--- !u!1 &1826889287
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -179,6 +179,7 @@ GameObject:
|
||||
- component: {fileID: 1826889290}
|
||||
- component: {fileID: 1826889289}
|
||||
- component: {fileID: 1826889288}
|
||||
- component: {fileID: 1826889291}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
@@ -260,6 +261,50 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1826889291
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1826889287}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalCameraData
|
||||
m_RenderShadows: 1
|
||||
m_RequiresDepthTextureOption: 2
|
||||
m_RequiresOpaqueTextureOption: 2
|
||||
m_CameraType: 0
|
||||
m_Cameras: []
|
||||
m_RendererIndex: -1
|
||||
m_VolumeLayerMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 1
|
||||
m_VolumeTrigger: {fileID: 0}
|
||||
m_VolumeFrameworkUpdateModeOption: 2
|
||||
m_RenderPostProcessing: 0
|
||||
m_Antialiasing: 0
|
||||
m_AntialiasingQuality: 2
|
||||
m_StopNaN: 0
|
||||
m_Dithering: 0
|
||||
m_ClearDepth: 1
|
||||
m_AllowXRRendering: 1
|
||||
m_AllowHDROutput: 1
|
||||
m_UseScreenCoordOverride: 0
|
||||
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_RequiresDepthTexture: 0
|
||||
m_RequiresColorTexture: 0
|
||||
m_TaaSettings:
|
||||
m_Quality: 3
|
||||
m_FrameInfluence: 0.1
|
||||
m_JitterScale: 1
|
||||
m_MipBias: 0
|
||||
m_VarianceClampScale: 0.9
|
||||
m_ContrastAdaptiveSharpening: 0
|
||||
m_Version: 2
|
||||
--- !u!1 &1911516430
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -393,4 +438,4 @@ SceneRoots:
|
||||
m_Roots:
|
||||
- {fileID: 1826889290}
|
||||
- {fileID: 1911516433}
|
||||
- {fileID: 1278960003}
|
||||
- {fileID: 594024951}
|
||||
|
||||
@@ -1,87 +1,92 @@
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections;
|
||||
using System.Linq;
|
||||
using System;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace SplatVfx {
|
||||
|
||||
public sealed class SplatData : ScriptableObject
|
||||
namespace SplatVfx
|
||||
{
|
||||
#region Public properties
|
||||
|
||||
public int SplatCount => PositionArray.Length;
|
||||
public GraphicsBuffer PositionBuffer => GetCachedBuffers().position;
|
||||
public GraphicsBuffer ScaleBuffer => GetCachedBuffers().scale;
|
||||
public GraphicsBuffer RotationBuffer => GetCachedBuffers().rotation;
|
||||
public GraphicsBuffer ColorBuffer => GetCachedBuffers().color;
|
||||
public GraphicsBuffer OpacityBuffer => GetCachedBuffers().opacity;
|
||||
public GraphicsBuffer SHBuffer => GetCachedBuffers().sh;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Serialized data
|
||||
|
||||
[field:SerializeField] public Vector3[] PositionArray { get; set; }
|
||||
[field:SerializeField] public Vector3[] ScaleArray { get; set; }
|
||||
[field:SerializeField] public Quaternion[] RotationArray { get; set; }
|
||||
[field:SerializeField] public Color[] ColorArray { get; set; }
|
||||
[field:SerializeField] public float[] OpacityArray { get; set; }
|
||||
[field:SerializeField] public float[,] SHArray { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public methods
|
||||
|
||||
public void ReleaseGpuResources()
|
||||
public sealed class SplatData : ScriptableObject
|
||||
{
|
||||
_cachedBuffers.position?.Release();
|
||||
_cachedBuffers.scale?.Release();
|
||||
_cachedBuffers.rotation?.Release();
|
||||
_cachedBuffers.color?.Release();
|
||||
_cachedBuffers.opacity?.Release();
|
||||
_cachedBuffers = (null, null, null, null, null, null);
|
||||
}
|
||||
#region Public properties
|
||||
|
||||
#endregion
|
||||
public int SplatCount => PositionArray.Length;
|
||||
public GraphicsBuffer PositionBuffer => GetCachedBuffers().position;
|
||||
public GraphicsBuffer ScaleBuffer => GetCachedBuffers().scale;
|
||||
public GraphicsBuffer RotationBuffer => GetCachedBuffers().rotation;
|
||||
public GraphicsBuffer ColorBuffer => GetCachedBuffers().color;
|
||||
public GraphicsBuffer OpacityBuffer => GetCachedBuffers().opacity;
|
||||
public GraphicsBuffer SHBuffer => GetCachedBuffers().sh;
|
||||
|
||||
#region GPU resource management
|
||||
#endregion
|
||||
|
||||
(GraphicsBuffer position, GraphicsBuffer scale, GraphicsBuffer rotation,
|
||||
GraphicsBuffer color, GraphicsBuffer opacity, GraphicsBuffer sh)
|
||||
_cachedBuffers;
|
||||
#region Serialized data
|
||||
|
||||
static unsafe GraphicsBuffer NewBuffer<T>(int count) where T : unmanaged
|
||||
=> new GraphicsBuffer(GraphicsBuffer.Target.Structured, count, sizeof(T));
|
||||
[field: SerializeField] public Vector3[] PositionArray { get; set; }
|
||||
[field: SerializeField] public Vector3[] ScaleArray { get; set; }
|
||||
[field: SerializeField] public Quaternion[] RotationArray { get; set; }
|
||||
[field: SerializeField] public Color[] ColorArray { get; set; }
|
||||
[field: SerializeField] public float[] OpacityArray { get; set; }
|
||||
[field: SerializeField] public float[,] SHArray { get; set; }
|
||||
|
||||
(GraphicsBuffer position, GraphicsBuffer scale, GraphicsBuffer rotation,
|
||||
GraphicsBuffer color, GraphicsBuffer opacity, GraphicsBuffer sh)
|
||||
GetCachedBuffers()
|
||||
{
|
||||
if (_cachedBuffers.position == null)
|
||||
#endregion
|
||||
|
||||
#region Public methods
|
||||
|
||||
public void ReleaseGpuResources()
|
||||
{
|
||||
_cachedBuffers.position = NewBuffer<Vector3>(SplatCount);
|
||||
_cachedBuffers.scale = NewBuffer<Vector3>(SplatCount);
|
||||
_cachedBuffers.rotation = NewBuffer<Quaternion>(SplatCount);
|
||||
_cachedBuffers.color = NewBuffer<Color>(SplatCount);
|
||||
_cachedBuffers.opacity = NewBuffer<float>(SplatCount);
|
||||
_cachedBuffers.sh = NewBuffer<float>(SplatCount * 45);
|
||||
|
||||
_cachedBuffers.position.SetData(PositionArray);
|
||||
_cachedBuffers.scale.SetData(ScaleArray);
|
||||
_cachedBuffers.rotation.SetData(RotationArray);
|
||||
_cachedBuffers.color.SetData(ColorArray);
|
||||
_cachedBuffers.opacity.SetData(OpacityArray);
|
||||
_cachedBuffers.sh.SetData(SHArray);
|
||||
_cachedBuffers.position?.Release();
|
||||
_cachedBuffers.scale?.Release();
|
||||
_cachedBuffers.rotation?.Release();
|
||||
_cachedBuffers.color?.Release();
|
||||
_cachedBuffers.opacity?.Release();
|
||||
_cachedBuffers.sh?.Release();
|
||||
_cachedBuffers = (null, null, null, null, null, null);
|
||||
}
|
||||
return _cachedBuffers;
|
||||
|
||||
#endregion
|
||||
|
||||
#region GPU resource management
|
||||
|
||||
(GraphicsBuffer position, GraphicsBuffer scale, GraphicsBuffer rotation,
|
||||
GraphicsBuffer color, GraphicsBuffer opacity, GraphicsBuffer sh)
|
||||
_cachedBuffers;
|
||||
|
||||
static unsafe GraphicsBuffer NewBuffer<T>(int count) where T : unmanaged
|
||||
=> new GraphicsBuffer(GraphicsBuffer.Target.Structured, count, sizeof(T));
|
||||
|
||||
(GraphicsBuffer position, GraphicsBuffer scale, GraphicsBuffer rotation,
|
||||
GraphicsBuffer color, GraphicsBuffer opacity, GraphicsBuffer sh)
|
||||
GetCachedBuffers()
|
||||
{
|
||||
if (_cachedBuffers.position == null)
|
||||
{
|
||||
_cachedBuffers.position = NewBuffer<Vector3>(SplatCount);
|
||||
_cachedBuffers.scale = NewBuffer<Vector3>(SplatCount);
|
||||
_cachedBuffers.rotation = NewBuffer<Quaternion>(SplatCount);
|
||||
_cachedBuffers.color = NewBuffer<Color>(SplatCount);
|
||||
_cachedBuffers.opacity = NewBuffer<float>(SplatCount);
|
||||
_cachedBuffers.sh = NewBuffer<float>(SplatCount * 45);
|
||||
|
||||
_cachedBuffers.position.SetData(PositionArray);
|
||||
// _cachedBuffers.scale.SetData(ScaleArray);
|
||||
// _cachedBuffers.rotation.SetData(RotationArray);
|
||||
// _cachedBuffers.color.SetData(ColorArray);
|
||||
// _cachedBuffers.opacity.SetData(OpacityArray);
|
||||
// _cachedBuffers.sh.SetData(SHArray);
|
||||
}
|
||||
return _cachedBuffers;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ScriptableObject implementation
|
||||
|
||||
void OnDisable() => ReleaseGpuResources();
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ScriptableObject implementation
|
||||
|
||||
void OnDisable() => ReleaseGpuResources();
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,62 +1,67 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using UnityEngine.VFX;
|
||||
using UnityEngine.VFX.Utility;
|
||||
|
||||
namespace SplatVfx {
|
||||
|
||||
[AddComponentMenu("VFX/Property Binders/Splat Data Binder")]
|
||||
[VFXBinder("Splat Data")]
|
||||
public sealed class VFXSplatDataBinder : VFXBinderBase
|
||||
namespace SplatVfx
|
||||
{
|
||||
public SplatData SplatData = null;
|
||||
|
||||
// public string SplatCountProperty
|
||||
// { get => (string)_splatCountProperty;
|
||||
// set => _splatCountProperty = value; }
|
||||
|
||||
public string PositionBufferProperty
|
||||
{ get => (string)_positionBufferProperty;
|
||||
set => _positionBufferProperty = value; }
|
||||
|
||||
// public string AxisBufferProperty
|
||||
// { get => (string)_axisBufferProperty;
|
||||
// set => _axisBufferProperty = value; }
|
||||
|
||||
// public string ColorBufferProperty
|
||||
// { get => (string)_colorBufferProperty;
|
||||
// set => _colorBufferProperty = value; }
|
||||
|
||||
// [VFXPropertyBinding("System.UInt32"), SerializeField]
|
||||
// ExposedProperty _splatCountProperty = "SplatCount";
|
||||
|
||||
[VFXPropertyBinding("UnityEngine.GraphicsBuffer"), SerializeField]
|
||||
ExposedProperty _positionBufferProperty = "PositionBuffer";
|
||||
|
||||
// [VFXPropertyBinding("UnityEngine.GraphicsBuffer"), SerializeField]
|
||||
// ExposedProperty _axisBufferProperty = "AxisBuffer";
|
||||
|
||||
// [VFXPropertyBinding("UnityEngine.GraphicsBuffer"), SerializeField]
|
||||
// ExposedProperty _colorBufferProperty = "ColorBuffer";
|
||||
|
||||
public override bool IsValid(VisualEffect component)
|
||||
=> SplatData != null &&
|
||||
// component.HasUInt(_splatCountProperty) &&
|
||||
component.HasGraphicsBuffer(_positionBufferProperty); // &&
|
||||
// component.HasGraphicsBuffer(_axisBufferProperty) &&
|
||||
// component.HasGraphicsBuffer(_colorBufferProperty);
|
||||
|
||||
public override void UpdateBinding(VisualEffect component)
|
||||
[AddComponentMenu("VFX/Property Binders/Splat Data Binder")]
|
||||
[VFXBinder("Splat Data")]
|
||||
public sealed class VFXSplatDataBinder : VFXBinderBase
|
||||
{
|
||||
// component.SetUInt(_splatCountProperty, (uint)SplatData.SplatCount);
|
||||
component.SetGraphicsBuffer(_positionBufferProperty, SplatData.PositionBuffer);
|
||||
// component.SetGraphicsBuffer(_axisBufferProperty, SplatData.AxisBuffer);
|
||||
// component.SetGraphicsBuffer(_colorBufferProperty, SplatData.ColorBuffer);
|
||||
public SplatData SplatData = null;
|
||||
|
||||
// public string SplatCountProperty
|
||||
// { get => (string)_splatCountProperty;
|
||||
// set => _splatCountProperty = value; }
|
||||
|
||||
public string PositionBufferProperty
|
||||
{
|
||||
get => (string)_positionBufferProperty;
|
||||
set => _positionBufferProperty = value;
|
||||
}
|
||||
|
||||
// public string AxisBufferProperty
|
||||
// { get => (string)_axisBufferProperty;
|
||||
// set => _axisBufferProperty = value; }
|
||||
|
||||
// public string ColorBufferProperty
|
||||
// { get => (string)_colorBufferProperty;
|
||||
// set => _colorBufferProperty = value; }
|
||||
|
||||
// [VFXPropertyBinding("System.UInt32"), SerializeField]
|
||||
// ExposedProperty _splatCountProperty = "SplatCount";
|
||||
|
||||
[VFXPropertyBinding("UnityEngine.GraphicsBuffer"), SerializeField]
|
||||
ExposedProperty _positionBufferProperty = "PositionBuffer";
|
||||
|
||||
// [VFXPropertyBinding("UnityEngine.GraphicsBuffer"), SerializeField]
|
||||
// ExposedProperty _axisBufferProperty = "AxisBuffer";
|
||||
|
||||
// [VFXPropertyBinding("UnityEngine.GraphicsBuffer"), SerializeField]
|
||||
// ExposedProperty _colorBufferProperty = "ColorBuffer";
|
||||
|
||||
public override bool IsValid(VisualEffect component)
|
||||
=> SplatData != null &&
|
||||
// component.HasUInt(_splatCountProperty) &&
|
||||
component.HasGraphicsBuffer(_positionBufferProperty); // &&
|
||||
// component.HasGraphicsBuffer(_axisBufferProperty) &&
|
||||
// component.HasGraphicsBuffer(_colorBufferProperty);
|
||||
|
||||
public override void UpdateBinding(VisualEffect component)
|
||||
{
|
||||
// component.SetUInt(_splatCountProperty, (uint)SplatData.SplatCount);
|
||||
component.SetGraphicsBuffer(_positionBufferProperty, SplatData.PositionBuffer);
|
||||
// component.SetGraphicsBuffer(_axisBufferProperty, SplatData.AxisBuffer);
|
||||
// component.SetGraphicsBuffer(_colorBufferProperty, SplatData.ColorBuffer);
|
||||
}
|
||||
|
||||
// public override string ToString()
|
||||
// => $"Splat Data : {_splatCountProperty}, {_positionBufferProperty}, "
|
||||
// // + $"{_axisBufferProperty}, {_colorBufferProperty}";
|
||||
// + $"{_colorBufferProperty}";
|
||||
}
|
||||
|
||||
// public override string ToString()
|
||||
// => $"Splat Data : {_splatCountProperty}, {_positionBufferProperty}, "
|
||||
// // + $"{_axisBufferProperty}, {_colorBufferProperty}";
|
||||
// + $"{_colorBufferProperty}";
|
||||
}
|
||||
|
||||
} // namespace SplatVfx
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
namespace SplatVfx.Editor {
|
||||
|
||||
[CustomEditor(typeof(SplatData))]
|
||||
public sealed class SplatDataInspector : UnityEditor.Editor
|
||||
namespace SplatVfx.Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
var count = ((SplatData)target).SplatCount;
|
||||
EditorGUILayout.LabelField("Splat Count", $"{count:N0}");
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace SplatVfx.Editor
|
||||
[CustomEditor(typeof(SplatData))]
|
||||
public sealed class SplatDataInspector : UnityEditor.Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
var count = ((SplatData)target).SplatCount;
|
||||
EditorGUILayout.LabelField("Splat Count", $"{count:N0}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -42,13 +42,13 @@ namespace SplatVfx.Editor
|
||||
{
|
||||
var ply = ParsePLYFile(context.assetPath);
|
||||
var header_info = ParseHeader(ply.header);
|
||||
|
||||
var data = ImportAsSplatData(header_info, ply.binaryData);
|
||||
var prefab = CreatePrefab(data);
|
||||
|
||||
data.name = Path.GetFileNameWithoutExtension(context.assetPath);
|
||||
|
||||
context.AddObjectToAsset("prefab", prefab);
|
||||
context.AddObjectToAsset("data", data);
|
||||
|
||||
var prefab = CreatePrefab(data);
|
||||
context.AddObjectToAsset("prefab", prefab);
|
||||
context.SetMainObject(prefab);
|
||||
}
|
||||
|
||||
@@ -61,13 +61,13 @@ namespace SplatVfx.Editor
|
||||
GameObject CreatePrefab(SplatData data)
|
||||
{
|
||||
var go = new GameObject();
|
||||
var vfx = go.AddComponent<VisualEffect>();
|
||||
vfx.visualEffectAsset = EditorResources.Load<VisualEffectAsset>(DefaultVfxPath);
|
||||
|
||||
var vfx = go.AddComponent<VisualEffect>();
|
||||
vfx.visualEffectAsset = EditorResources.Load<VisualEffectAsset>(DefaultVfxPath);
|
||||
var binderBase = go.AddComponent<VFXPropertyBinder>();
|
||||
var binder = binderBase.AddPropertyBinder<VFXSplatDataBinder>();
|
||||
|
||||
var binderBase = go.AddComponent<VFXPropertyBinder>();
|
||||
var binder = binderBase.AddPropertyBinder<VFXSplatDataBinder>();
|
||||
binder.SplatData = data;
|
||||
binder.SplatData = data;
|
||||
|
||||
return go;
|
||||
}
|
||||
@@ -76,7 +76,6 @@ namespace SplatVfx.Editor
|
||||
|
||||
#region Reader implementation
|
||||
|
||||
[BurstCompile]
|
||||
(string header, byte[] binaryData) ParsePLYFile(string filePath)
|
||||
{
|
||||
using var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
|
||||
@@ -103,7 +102,6 @@ namespace SplatVfx.Editor
|
||||
return (headerBuilder.ToString(), binaryData);
|
||||
}
|
||||
|
||||
[BurstCompile]
|
||||
(string format, int num_element, List<(string, string)> properties)
|
||||
ParseHeader(string header)
|
||||
{
|
||||
|
||||
@@ -68,10 +68,10 @@ MonoBehaviour:
|
||||
categories: []
|
||||
uiBounds:
|
||||
serializedVersion: 2
|
||||
x: 269
|
||||
x: 283
|
||||
y: -492
|
||||
width: 885
|
||||
height: 1049
|
||||
width: 871
|
||||
height: 1065
|
||||
--- !u!114 &114350483966674976
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
@@ -145,8 +145,8 @@ MonoBehaviour:
|
||||
capacity: 10000
|
||||
stripCapacity: 16
|
||||
particlePerStripCount: 16
|
||||
needsComputeBounds: 1
|
||||
boundsMode: 2
|
||||
needsComputeBounds: 0
|
||||
boundsMode: 0
|
||||
m_Space: 0
|
||||
--- !u!114 &114946465509916290
|
||||
MonoBehaviour:
|
||||
@@ -168,6 +168,7 @@ MonoBehaviour:
|
||||
m_UICollapsed: 0
|
||||
m_UISuperCollapsed: 0
|
||||
m_InputSlots:
|
||||
- {fileID: 8926484042661614672}
|
||||
- {fileID: 8926484042661614562}
|
||||
m_OutputSlots: []
|
||||
m_Label: Initialize Particles
|
||||
@@ -589,7 +590,7 @@ MonoBehaviour:
|
||||
linkedSlots:
|
||||
- outputSlot: {fileID: 8926484042661614594}
|
||||
inputSlot: {fileID: 8926484042661614654}
|
||||
position: {x: 297, y: 19}
|
||||
position: {x: 311, y: 18}
|
||||
expandedSlots: []
|
||||
expanded: 1
|
||||
supecollapsed: 1
|
||||
@@ -763,7 +764,7 @@ MonoBehaviour:
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 114350483966674976}
|
||||
m_Children: []
|
||||
m_UIPosition: {x: 269, y: 62}
|
||||
m_UIPosition: {x: 283, y: 61}
|
||||
m_UICollapsed: 0
|
||||
m_UISuperCollapsed: 1
|
||||
m_InputSlots: []
|
||||
@@ -834,7 +835,7 @@ MonoBehaviour:
|
||||
m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor,
|
||||
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_SerializableObject: '{"position":{"x":0.0,"y":0.0,"z":1.0}}'
|
||||
m_Space: 1
|
||||
m_Space: 0
|
||||
m_Property:
|
||||
name: _Position
|
||||
m_serializedType:
|
||||
@@ -993,7 +994,7 @@ MonoBehaviour:
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 114350483966674976}
|
||||
m_Children: []
|
||||
m_UIPosition: {x: 485, y: 62}
|
||||
m_UIPosition: {x: 499, y: 61}
|
||||
m_UICollapsed: 0
|
||||
m_UISuperCollapsed: 1
|
||||
m_InputSlots:
|
||||
@@ -1271,3 +1272,309 @@ MonoBehaviour:
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
--- !u!114 &8926484042661614672
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlot
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 0}
|
||||
m_Children:
|
||||
- {fileID: 8926484042661614673}
|
||||
- {fileID: 8926484042661614677}
|
||||
m_UIPosition: {x: 0, y: 0}
|
||||
m_UICollapsed: 1
|
||||
m_UISuperCollapsed: 0
|
||||
m_MasterSlot: {fileID: 8926484042661614672}
|
||||
m_MasterData:
|
||||
m_Owner: {fileID: 114946465509916290}
|
||||
m_Value:
|
||||
m_Type:
|
||||
m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor,
|
||||
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_SerializableObject: '{"center":{"x":0.0,"y":0.0,"z":0.0},"size":{"x":1.0,"y":1.0,"z":1.0}}'
|
||||
m_Space: 0
|
||||
m_Property:
|
||||
name: bounds
|
||||
m_serializedType:
|
||||
m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor,
|
||||
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
--- !u!114 &8926484042661614673
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 8926484042661614672}
|
||||
m_Children:
|
||||
- {fileID: 8926484042661614674}
|
||||
- {fileID: 8926484042661614675}
|
||||
- {fileID: 8926484042661614676}
|
||||
m_UIPosition: {x: 0, y: 0}
|
||||
m_UICollapsed: 1
|
||||
m_UISuperCollapsed: 0
|
||||
m_MasterSlot: {fileID: 8926484042661614672}
|
||||
m_MasterData:
|
||||
m_Owner: {fileID: 0}
|
||||
m_Value:
|
||||
m_Type:
|
||||
m_SerializableType:
|
||||
m_SerializableObject:
|
||||
m_Space: -1
|
||||
m_Property:
|
||||
name: center
|
||||
m_serializedType:
|
||||
m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0,
|
||||
Culture=neutral, PublicKeyToken=null
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
--- !u!114 &8926484042661614674
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 8926484042661614673}
|
||||
m_Children: []
|
||||
m_UIPosition: {x: 0, y: 0}
|
||||
m_UICollapsed: 1
|
||||
m_UISuperCollapsed: 0
|
||||
m_MasterSlot: {fileID: 8926484042661614672}
|
||||
m_MasterData:
|
||||
m_Owner: {fileID: 0}
|
||||
m_Value:
|
||||
m_Type:
|
||||
m_SerializableType:
|
||||
m_SerializableObject:
|
||||
m_Space: -1
|
||||
m_Property:
|
||||
name: x
|
||||
m_serializedType:
|
||||
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
--- !u!114 &8926484042661614675
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 8926484042661614673}
|
||||
m_Children: []
|
||||
m_UIPosition: {x: 0, y: 0}
|
||||
m_UICollapsed: 1
|
||||
m_UISuperCollapsed: 0
|
||||
m_MasterSlot: {fileID: 8926484042661614672}
|
||||
m_MasterData:
|
||||
m_Owner: {fileID: 0}
|
||||
m_Value:
|
||||
m_Type:
|
||||
m_SerializableType:
|
||||
m_SerializableObject:
|
||||
m_Space: -1
|
||||
m_Property:
|
||||
name: y
|
||||
m_serializedType:
|
||||
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
--- !u!114 &8926484042661614676
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 8926484042661614673}
|
||||
m_Children: []
|
||||
m_UIPosition: {x: 0, y: 0}
|
||||
m_UICollapsed: 1
|
||||
m_UISuperCollapsed: 0
|
||||
m_MasterSlot: {fileID: 8926484042661614672}
|
||||
m_MasterData:
|
||||
m_Owner: {fileID: 0}
|
||||
m_Value:
|
||||
m_Type:
|
||||
m_SerializableType:
|
||||
m_SerializableObject:
|
||||
m_Space: -1
|
||||
m_Property:
|
||||
name: z
|
||||
m_serializedType:
|
||||
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
--- !u!114 &8926484042661614677
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 8926484042661614672}
|
||||
m_Children:
|
||||
- {fileID: 8926484042661614678}
|
||||
- {fileID: 8926484042661614679}
|
||||
- {fileID: 8926484042661614680}
|
||||
m_UIPosition: {x: 0, y: 0}
|
||||
m_UICollapsed: 1
|
||||
m_UISuperCollapsed: 0
|
||||
m_MasterSlot: {fileID: 8926484042661614672}
|
||||
m_MasterData:
|
||||
m_Owner: {fileID: 0}
|
||||
m_Value:
|
||||
m_Type:
|
||||
m_SerializableType:
|
||||
m_SerializableObject:
|
||||
m_Space: -1
|
||||
m_Property:
|
||||
name: size
|
||||
m_serializedType:
|
||||
m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0,
|
||||
Culture=neutral, PublicKeyToken=null
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
--- !u!114 &8926484042661614678
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 8926484042661614677}
|
||||
m_Children: []
|
||||
m_UIPosition: {x: 0, y: 0}
|
||||
m_UICollapsed: 1
|
||||
m_UISuperCollapsed: 0
|
||||
m_MasterSlot: {fileID: 8926484042661614672}
|
||||
m_MasterData:
|
||||
m_Owner: {fileID: 0}
|
||||
m_Value:
|
||||
m_Type:
|
||||
m_SerializableType:
|
||||
m_SerializableObject:
|
||||
m_Space: -1
|
||||
m_Property:
|
||||
name: x
|
||||
m_serializedType:
|
||||
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
--- !u!114 &8926484042661614679
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 8926484042661614677}
|
||||
m_Children: []
|
||||
m_UIPosition: {x: 0, y: 0}
|
||||
m_UICollapsed: 1
|
||||
m_UISuperCollapsed: 0
|
||||
m_MasterSlot: {fileID: 8926484042661614672}
|
||||
m_MasterData:
|
||||
m_Owner: {fileID: 0}
|
||||
m_Value:
|
||||
m_Type:
|
||||
m_SerializableType:
|
||||
m_SerializableObject:
|
||||
m_Space: -1
|
||||
m_Property:
|
||||
name: y
|
||||
m_serializedType:
|
||||
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
--- !u!114 &8926484042661614680
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat
|
||||
m_UIIgnoredErrors: []
|
||||
m_Parent: {fileID: 8926484042661614677}
|
||||
m_Children: []
|
||||
m_UIPosition: {x: 0, y: 0}
|
||||
m_UICollapsed: 1
|
||||
m_UISuperCollapsed: 0
|
||||
m_MasterSlot: {fileID: 8926484042661614672}
|
||||
m_MasterData:
|
||||
m_Owner: {fileID: 0}
|
||||
m_Value:
|
||||
m_Type:
|
||||
m_SerializableType:
|
||||
m_SerializableObject:
|
||||
m_Space: -1
|
||||
m_Property:
|
||||
name: z
|
||||
m_serializedType:
|
||||
m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral,
|
||||
PublicKeyToken=b77a5c561934e089
|
||||
m_Direction: 0
|
||||
m_LinkedSlots: []
|
||||
|
||||
Reference in New Issue
Block a user