Switch points generation from managed thread to unmanaged thread; Change Spline to NativeSpline; Add converter for DistributionMode and update cloner editor ui; Add MeshData type for object distribution calculation; Add ObjectDistributionSetting and ObjectDistributionCalculation(Vertex and Edge Mode);

This commit is contained in:
Misaki
2024-09-17 18:27:35 +09:00
parent 1c39403cbf
commit 0ae44d6139
23 changed files with 559 additions and 148 deletions

View File

@@ -11,7 +11,6 @@ namespace Misaki.ArtTool
public static void Initialize()
{
var boolToDisplayGroup = new ConverterGroup("BoolToDisplayConvertor");
boolToDisplayGroup.AddConverter((ref bool v) => BoolToDisplayConverter.ConvertTo(v));
boolToDisplayGroup.AddConverter((ref StyleEnum<DisplayStyle> v) => BoolToDisplayConverter.ConvertBack(v));
@@ -19,7 +18,6 @@ namespace Misaki.ArtTool
var inverseBoolToDisplayGroup = new ConverterGroup("InverseBoolToDisplayConverter");
inverseBoolToDisplayGroup.AddConverter((ref bool v) => InverseBoolToDisplayConverter.ConvertTo(v));
inverseBoolToDisplayGroup.AddConverter((ref StyleEnum<DisplayStyle> v) => InverseBoolToDisplayConverter.ConvertBack(v));
@@ -27,7 +25,6 @@ namespace Misaki.ArtTool
var float2ToVector2Group = new ConverterGroup("Float2ToVector2Converter");
float2ToVector2Group.AddConverter((ref float2 v) => Float2ToVector2Converter.ConvertTo(v));
float2ToVector2Group.AddConverter((ref Vector2 v) => Float2ToVector2Converter.ConvertBack(v));
@@ -35,11 +32,50 @@ namespace Misaki.ArtTool
var float3ToVector3Group = new ConverterGroup("Float3ToVector3Converter");
float3ToVector3Group.AddConverter((ref float3 v) => Float3ToVector3Converter.ConvertTo(v));
float3ToVector3Group.AddConverter((ref Vector3 v) => Float3ToVector3Converter.ConvertBack(v));
ConverterGroups.RegisterConverterGroup(float3ToVector3Group);
var int2ToVector2IntGroup = new ConverterGroup("int2ToVector2IntConverter");
int2ToVector2IntGroup.AddConverter((ref int2 v) => Int2ToVector2IntConverter.ConvertTo(v));
int2ToVector2IntGroup.AddConverter((ref Vector2Int v) => Int2ToVector2IntConverter.ConvertBack(v));
ConverterGroups.RegisterConverterGroup(int2ToVector2IntGroup);
var int3ToVector3IntGroup = new ConverterGroup("int3ToVector3IntConverter");
int3ToVector3IntGroup.AddConverter((ref int3 v) => Int3ToVector3IntConverter.ConvertTo(v));
int3ToVector3IntGroup.AddConverter((ref Vector3Int v) => Int3ToVector3IntConverter.ConvertBack(v));
ConverterGroups.RegisterConverterGroup(int3ToVector3IntGroup);
// Converter in ui-toolkit does not support converter parameters right now, we have to register all the types one by one
var objectModeToDisplayStyleGroup = new ConverterGroup("ObjectModeToDisplayStyleConverter");
objectModeToDisplayStyleGroup.AddConverter((ref DistributionMode v) => DistributionModeToDisplayStyleConverter.ObjectModeConvertTo(v));
var splineModeToDisplayStyleGroup = new ConverterGroup("SplineModeToDisplayStyleConverter");
splineModeToDisplayStyleGroup.AddConverter((ref DistributionMode v) => DistributionModeToDisplayStyleConverter.SplineModeConvertTo(v));
var linearModeToDisplayStyleGroup = new ConverterGroup("LinearModeToDisplayStyleConverter");
linearModeToDisplayStyleGroup.AddConverter((ref DistributionMode v) => DistributionModeToDisplayStyleConverter.LinearModeConvertTo(v));
var gridModeToDisplayStyleGroup = new ConverterGroup("GridModeToDisplayStyleConverter");
gridModeToDisplayStyleGroup.AddConverter((ref DistributionMode v) => DistributionModeToDisplayStyleConverter.GridModeConvertTo(v));
var radialModeToDisplayStyleGroup = new ConverterGroup("RadialModeToDisplayStyleConverter");
radialModeToDisplayStyleGroup.AddConverter((ref DistributionMode v) => DistributionModeToDisplayStyleConverter.RadialModeConvertTo(v));
var honeycombModeToDisplayStyleGroup = new ConverterGroup("HoneycombModeToDisplayStyleConverter");
honeycombModeToDisplayStyleGroup.AddConverter((ref DistributionMode v) => DistributionModeToDisplayStyleConverter.HoneycombModeConvertTo(v));
ConverterGroups.RegisterConverterGroup(objectModeToDisplayStyleGroup);
ConverterGroups.RegisterConverterGroup(splineModeToDisplayStyleGroup);
ConverterGroups.RegisterConverterGroup(linearModeToDisplayStyleGroup);
ConverterGroups.RegisterConverterGroup(gridModeToDisplayStyleGroup);
ConverterGroups.RegisterConverterGroup(radialModeToDisplayStyleGroup);
ConverterGroups.RegisterConverterGroup(honeycombModeToDisplayStyleGroup);
}
}
}

View File

@@ -1,7 +1,67 @@
using UnityEngine.UIElements;
namespace Misaki.ArtTool
{
public struct DistributionModeToDisplayStyleConverter
{
public static StyleEnum<DisplayStyle> ObjectModeConvertTo(DistributionMode mode)
{
if (mode == DistributionMode.Object)
{
return DisplayStyle.Flex;
}
return DisplayStyle.None;
}
public static StyleEnum<DisplayStyle> SplineModeConvertTo(DistributionMode mode)
{
if (mode == DistributionMode.Spline)
{
return DisplayStyle.Flex;
}
return DisplayStyle.None;
}
public static StyleEnum<DisplayStyle> LinearModeConvertTo(DistributionMode mode)
{
if (mode == DistributionMode.Linear)
{
return DisplayStyle.Flex;
}
return DisplayStyle.None;
}
public static StyleEnum<DisplayStyle> GridModeConvertTo(DistributionMode mode)
{
if (mode == DistributionMode.Grid)
{
return DisplayStyle.Flex;
}
return DisplayStyle.None;
}
public static StyleEnum<DisplayStyle> RadialModeConvertTo(DistributionMode mode)
{
if (mode == DistributionMode.Radial)
{
return DisplayStyle.Flex;
}
return DisplayStyle.None;
}
public static StyleEnum<DisplayStyle> HoneycombModeConvertTo(DistributionMode mode)
{
if (mode == DistributionMode.Honeycomb)
{
return DisplayStyle.Flex;
}
return DisplayStyle.None;
}
}
}

View File

@@ -0,0 +1,31 @@
using Unity.Mathematics;
using UnityEngine;
namespace Misaki.ArtTool
{
public struct Int2ToVector2IntConverter
{
public static Vector2Int ConvertTo(int2 value)
{
return new Vector2Int(value.x, value.y);
}
public static int2 ConvertBack(Vector2Int value)
{
return new int2(value.x, value.y);
}
}
public struct Int3ToVector3IntConverter
{
public static Vector3Int ConvertTo(int3 value)
{
return new Vector3Int(value.x, value.y, value.z);
}
public static int3 ConvertBack(Vector3Int value)
{
return new int3(value.x, value.y, value.z);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c271b5a6b3fadff498bc8f938e501eee