remove Sorting flag.

alignment for all from separate window.
This commit is contained in:
2015-05-17 22:22:05 +06:00
parent 31f834c48c
commit 5fd2f46ab8
10 changed files with 70 additions and 39 deletions

View File

@@ -46,6 +46,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Assets\IsoTools\Editor\IsoAlignmentWindow.cs" />
<Compile Include="Assets\IsoTools\Editor\IsoObjectEditor.cs" />
<Reference Include="UnityEngine.UI">
<HintPath>/Applications/Unity/Unity.app/Contents/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>

View File

@@ -46,6 +46,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Assets\IsoTools\Editor\IsoAlignmentWindow.cs" />
<Compile Include="Assets\IsoTools\Editor\IsoObjectEditor.cs" />
<Reference Include="UnityEngine.UI">
<HintPath>/Applications/Unity/Unity.app/Contents/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll</HintPath>

View File

@@ -0,0 +1,39 @@
using UnityEngine;
using UnityEditor;
using System.Linq;
namespace IsoTools {
public class IsoAlignmentWindow : EditorWindow {
public static bool Alignment { get; private set; }
void AlignmentSelection() {
var iso_objects = Selection.gameObjects
.Where(p => p.GetComponent<IsoObject>())
.Select(p => p.GetComponent<IsoObject>());
foreach ( var iso_object in iso_objects ) {
iso_object.Position = iso_object.TilePosition;
iso_object.FixTransform();
}
}
[MenuItem("IsoTools/Alignment")]
static void Init() {
var window = EditorWindow.GetWindow<IsoAlignmentWindow>();
window.title = "IsoAlignment";
window.Show();
}
static IsoAlignmentWindow() {
Alignment = true;
}
void OnGUI() {
GUILayout.Space(5);
Alignment = EditorGUILayout.Toggle("Auto alignment", Alignment);
if ( GUILayout.Button("Alignment selection objects") || Alignment ) {
AlignmentSelection();
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: bc6645583f19a4c99b26459ef98d0d9c
timeCreated: 1431871954
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -26,6 +26,13 @@ namespace IsoTools {
}) / _positions.Count;
}
void AlignmentIsoObject(IsoObject iso_object) {
if ( IsoAlignmentWindow.Alignment ) {
iso_object.Position = iso_object.TilePosition;
iso_object.FixTransform();
}
}
float ZMoveIsoObjects(float delta) {
Undo.RecordObjects(_iso_zpositions.Keys.ToArray(), "Move");
return _iso_zpositions.Aggregate(0.0f, (AccIn, pair) => {
@@ -33,6 +40,7 @@ namespace IsoTools {
var iso_orig_z = pair.Value;
iso_object.PositionZ = iso_orig_z + delta;
iso_object.FixTransform();
AlignmentIsoObject(iso_object);
var z_delta = iso_object.Position.z - iso_orig_z;
return Mathf.Abs(z_delta) > Mathf.Abs(AccIn) ? z_delta : AccIn;
});
@@ -45,6 +53,7 @@ namespace IsoTools {
var iso_orig_p = pair.Value;
iso_object.transform.position = iso_orig_p + delta;
iso_object.FixIsoPosition();
AlignmentIsoObject(iso_object);
var pos_delta = iso_object.transform.position - iso_orig_p;
return pos_delta.magnitude > AccIn.magnitude ? pos_delta : AccIn;
});

View File

@@ -12,8 +12,6 @@ namespace IsoTools {
Vector2 _lastTransform = Vector2.zero;
Vector3 _lastPosition = Vector3.zero;
Vector3 _lastSize = Vector3.zero;
bool _lastSorting = false;
bool _lastAlignment = false;
#endif
[SerializeField]
@@ -76,28 +74,6 @@ namespace IsoTools {
}
}
[SerializeField]
bool _sorting = true;
/// <summary>Auto sorting tile.</summary>
public bool Sorting {
get { return _sorting; }
set {
_sorting = value;
FixTransform();
}
}
[SerializeField]
bool _alignment = true;
/// <summary>Auto alignment position by isometric tile size.</summary>
public bool Alignment {
get { return _alignment; }
set {
_alignment = value;
FixTransform();
}
}
[SerializeField]
/// <summary>Isometric object tile position.</summary>
public Vector3 TilePosition {
@@ -128,9 +104,6 @@ namespace IsoTools {
}
public void FixTransform() {
if ( Application.isEditor && Alignment ) {
_position = TilePosition;
}
Vector3 trans = IsoWorld.IsoToScreen(Position);
trans.z = transform.position.z;
transform.position = trans;
@@ -149,8 +122,6 @@ namespace IsoTools {
_lastTransform = transform.position;
_lastPosition = Position;
_lastSize = Size;
_lastSorting = Sorting;
_lastAlignment = Alignment;
#endif
}
@@ -189,8 +160,6 @@ namespace IsoTools {
}
if ( _lastPosition != _position ) Position = _position;
if ( _lastSize != _size ) Size = _size;
if ( _lastSorting != _sorting ) Sorting = _sorting;
if ( _lastAlignment != _alignment ) Alignment = _alignment;
}
}
#endif

View File

@@ -102,7 +102,7 @@ namespace IsoTools {
/// <param name="obj">Isometric object for resorting.</param>
// ------------------------------------------------------------------------
public void MarkDirty(IsoObject obj) {
if ( obj && obj.Sorting ) {
if ( obj ) {
var renderer = obj.GetComponent<Renderer>();
if ( renderer && renderer.isVisible ) {
MarkDirty();

View File

@@ -1,8 +1,8 @@
<Properties>
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" />
<MonoDevelop.Ide.Workbench ActiveDocument="Assets/IsoTools/Editor/IsoObjectEditor.cs">
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" PreferredExecutionTarget="MonoDevelop.Default" />
<MonoDevelop.Ide.Workbench ActiveDocument="Assets/IsoTools/Scripts/IsoWorld.cs">
<Files>
<File FileName="Assets/IsoTools/Editor/IsoObjectEditor.cs" Line="106" Column="25" />
<File FileName="Assets/IsoTools/Scripts/IsoWorld.cs" Line="1" Column="1" />
</Files>
</MonoDevelop.Ide.Workbench>
<MonoDevelop.Ide.DebuggingService.Breakpoints>