Initial commit

This commit is contained in:
AbstractConcept 2022-09-13 00:36:34 -05:00
commit 3c7cc0c973
8391 changed files with 704313 additions and 0 deletions

View file

@ -0,0 +1,186 @@
using System;
using UnityEngine;
namespace UnityEditor.U2D.Animation
{
internal partial class MeshTool : BaseTool
{
private MeshCache m_Mesh;
private ISelection<int> m_SelectionOverride;
private SpriteMeshController m_SpriteMeshController;
private SpriteMeshView m_SpriteMeshView;
private RectSelectionTool<int> m_RectSelectionTool = new RectSelectionTool<int>();
private RectVertexSelector m_RectVertexSelector = new RectVertexSelector();
private UnselectTool<int> m_UnselectTool = new UnselectTool<int>();
private ITriangulator m_Triangulator;
public MeshCache mesh
{
get { return m_Mesh; }
}
public SpriteMeshViewMode mode
{
get { return m_SpriteMeshView.mode; }
set { m_SpriteMeshView.mode = value; }
}
public bool disable
{
get { return m_SpriteMeshController.disable; }
set { m_SpriteMeshController.disable = value; }
}
public ISelection<int> selectionOverride
{
get { return m_SelectionOverride; }
set { m_SelectionOverride = value; }
}
public override int defaultControlID
{
get
{
if (m_Mesh == null)
return 0;
return m_RectSelectionTool.controlID;
}
}
private ISelection<int> selection
{
get
{
if(selectionOverride != null)
return selectionOverride;
return skinningCache.vertexSelection;
}
}
internal override void OnCreate()
{
m_SpriteMeshController = new SpriteMeshController();
m_SpriteMeshView = new SpriteMeshView(new GUIWrapper());
m_Triangulator = new Triangulator();
}
protected override void OnActivate()
{
m_SpriteMeshController.disable = false;
m_SelectionOverride = null;
SetupSprite(skinningCache.selectedSprite);
skinningCache.events.selectedSpriteChanged.AddListener(OnSelectedSpriteChanged);
}
protected override void OnDeactivate()
{
skinningCache.events.selectedSpriteChanged.RemoveListener(OnSelectedSpriteChanged);
}
private void OnSelectedSpriteChanged(SpriteCache sprite)
{
SetupSprite(sprite);
}
internal void SetupSprite(SpriteCache sprite)
{
var mesh = sprite.GetMesh();
if (m_Mesh != null
&& m_Mesh != mesh
&& selection.Count > 0)
selection.Clear();
m_Mesh = mesh;
m_SpriteMeshController.spriteMeshData = m_Mesh;
}
private void SetupGUI()
{
m_SpriteMeshController.spriteMeshView = m_SpriteMeshView;
m_SpriteMeshController.triangulator = m_Triangulator;
m_SpriteMeshController.cacheUndo = skinningCache;
m_RectSelectionTool.cacheUndo = skinningCache;
m_RectSelectionTool.rectSelector = m_RectVertexSelector;
m_RectVertexSelector.selection = selection;
m_UnselectTool.cacheUndo = skinningCache;
m_UnselectTool.selection = selection;
m_SpriteMeshController.frame = new Rect(Vector2.zero, m_Mesh.sprite.textureRect.size);
m_SpriteMeshController.selection = selection;
m_SpriteMeshView.defaultControlID = defaultControlID;
m_RectVertexSelector.spriteMeshData = m_Mesh;
}
protected override void OnGUI()
{
if (m_Mesh == null)
return;
SetupGUI();
var handlesMatrix = Handles.matrix;
Handles.matrix *= m_Mesh.sprite.GetLocalToWorldMatrixFromMode();
BeginPositionOverride();
EditorGUI.BeginChangeCheck();
var guiEnabled = GUI.enabled;
var moveAction = m_SpriteMeshController.spriteMeshView.IsActionHot(MeshEditorAction.MoveEdge) || m_SpriteMeshController.spriteMeshView.IsActionHot(MeshEditorAction.MoveVertex);
GUI.enabled = (!skinningCache.IsOnVisualElement() && guiEnabled) || moveAction;
m_SpriteMeshController.OnGUI();
GUI.enabled = guiEnabled;
if (EditorGUI.EndChangeCheck())
UpdateMesh();
m_RectSelectionTool.OnGUI();
m_UnselectTool.OnGUI();
Handles.matrix = handlesMatrix;
EndPositionOverride();
}
public void BeginPositionOverride()
{
if(m_Mesh != null)
{
m_Mesh.vertexPositionOverride = null;
var skeleton = skinningCache.GetEffectiveSkeleton(m_Mesh.sprite);
Debug.Assert(skeleton != null);
if (skeleton.isPosePreview)
m_Mesh.vertexPositionOverride = m_Mesh.sprite.GetMeshPreview().vertices;
}
}
public void EndPositionOverride()
{
if(m_Mesh != null)
m_Mesh.vertexPositionOverride = null;
}
public void UpdateWeights()
{
InvokeMeshChanged();
}
public void UpdateMesh()
{
InvokeMeshChanged();
}
private void InvokeMeshChanged()
{
if(m_Mesh != null)
skinningCache.events.meshChanged.Invoke(m_Mesh);
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 72bf58aecc1877e48b77ac8a0408b0c6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,101 @@
using System;
using UnityEngine;
namespace UnityEditor.U2D.Animation
{
internal class MeshToolWrapper : BaseTool
{
private MeshTool m_MeshTool;
private SkeletonTool m_SkeletonTool;
private SpriteMeshViewMode m_MeshMode;
private bool m_Disable = false;
private SkeletonMode m_SkeletonMode;
protected MeshPreviewBehaviour m_MeshPreviewBehaviour = new MeshPreviewBehaviour();
public MeshTool meshTool
{
get { return m_MeshTool; }
set { m_MeshTool = value; }
}
public SkeletonTool skeletonTool
{
get { return m_SkeletonTool; }
set { m_SkeletonTool = value; }
}
public SpriteMeshViewMode meshMode
{
get { return m_MeshMode; }
set { m_MeshMode = value; }
}
public bool disableMeshEditor
{
get { return m_Disable; }
set { m_Disable = value; }
}
public SkeletonMode skeletonMode
{
get { return m_SkeletonMode; }
set { m_SkeletonMode = value; }
}
public override int defaultControlID
{
get
{
Debug.Assert(meshTool != null);
return meshTool.defaultControlID;
}
}
public override IMeshPreviewBehaviour previewBehaviour
{
get { return m_MeshPreviewBehaviour; }
}
protected override void OnActivate()
{
Debug.Assert(meshTool != null);
skeletonTool.enableBoneInspector = false;
skeletonTool.Activate();
meshTool.Activate();
m_MeshPreviewBehaviour.drawWireframe = true;
m_MeshPreviewBehaviour.showWeightMap = false;
m_MeshPreviewBehaviour.overlaySelected = false;
}
protected override void OnDeactivate()
{
skeletonTool.Deactivate();
meshTool.Deactivate();
}
protected override void OnGUI()
{
DoSkeletonGUI();
DoMeshGUI();
}
protected void DoSkeletonGUI()
{
Debug.Assert(skeletonTool != null);
skeletonTool.mode = skeletonMode;
skeletonTool.editBindPose = false;
skeletonTool.DoGUI();
}
protected void DoMeshGUI()
{
Debug.Assert(meshTool != null);
meshTool.disable = disableMeshEditor;
meshTool.mode = meshMode;
meshTool.DoGUI();
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 19c21ce977fd53a46857b0dac2845685
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: