Initial Commit

This commit is contained in:
Simeon Radivoev 2022-02-12 12:53:50 +02:00
commit ee5c2f922d
Signed by: simeonradivoev
GPG key ID: 7611A451D2A5D37A
2255 changed files with 547750 additions and 0 deletions

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1e5614e4b96700843ba104987c4f190e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1263d004036ee7f42aeed98348b5e8cf
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,350 @@
using UnityEngine;
using UnityEngine.Tilemaps;
using UnityEditor;
using UnityEditorInternal;
using System;
using System.Collections.Generic;
namespace UnityEditor
{
[CustomEditor(typeof(RuleOverrideTile))]
internal class RuleOverrideTileEditor : Editor
{
public RuleOverrideTile overrideTile { get { return (target as RuleOverrideTile); } }
private List<KeyValuePair<Sprite, Sprite>> m_Sprites;
private List<KeyValuePair<RuleTile.TilingRule, RuleTile.TilingRule>> m_Rules;
ReorderableList m_SpriteList;
ReorderableList m_RuleList;
private float k_DefaultElementHeight { get { return RuleTileEditor.k_DefaultElementHeight; } }
private float k_PaddingBetweenRules { get { return RuleTileEditor.k_PaddingBetweenRules; } }
private float k_SingleLineHeight { get { return RuleTileEditor.k_SingleLineHeight; } }
private float k_LabelWidth { get { return RuleTileEditor.k_LabelWidth; } }
void OnEnable()
{
if (m_Sprites == null)
m_Sprites = new List<KeyValuePair<Sprite, Sprite>>();
if (m_Rules == null)
m_Rules = new List<KeyValuePair<RuleTile.TilingRule, RuleTile.TilingRule>>();
if (m_SpriteList == null)
{
overrideTile.GetOverrides(m_Sprites);
m_SpriteList = new ReorderableList(m_Sprites, typeof(KeyValuePair<Sprite, Sprite>), false, true, false, false);
m_SpriteList.drawHeaderCallback = DrawSpriteHeader;
m_SpriteList.drawElementCallback = DrawSpriteElement;
m_SpriteList.elementHeight = k_DefaultElementHeight + k_PaddingBetweenRules;
}
if (m_RuleList == null)
{
overrideTile.GetOverrides(m_Rules);
m_RuleList = new ReorderableList(m_Rules, typeof(KeyValuePair<RuleTile.TilingRule, RuleTile.TilingRule>), false, true, false, false);
m_RuleList.drawHeaderCallback = DrawRuleHeader;
m_RuleList.drawElementCallback = DrawRuleElement;
m_RuleList.elementHeightCallback = GetRuleElementHeight;
}
}
public override void OnInspectorGUI()
{
serializedObject.UpdateIfRequiredOrScript();
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Tile"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Advanced"));
serializedObject.ApplyModifiedProperties();
if (!overrideTile.m_Advanced)
{
using (new EditorGUI.DisabledScope(overrideTile.m_Tile == null))
{
EditorGUI.BeginChangeCheck();
overrideTile.GetOverrides(m_Sprites);
m_SpriteList.list = m_Sprites;
m_SpriteList.DoLayoutList();
if (EditorGUI.EndChangeCheck())
{
for (int i = 0; i < targets.Length; i++)
{
RuleOverrideTile tile = targets[i] as RuleOverrideTile;
tile.ApplyOverrides(m_Sprites);
}
}
}
}
else
{
using (new EditorGUI.DisabledScope(overrideTile.m_Tile == null))
{
overrideTile.GetOverrides(m_Rules);
m_RuleList.list = m_Rules;
m_RuleList.DoLayoutList();
}
}
}
private void SaveTile()
{
EditorUtility.SetDirty(target);
SceneView.RepaintAll();
}
private void DrawSpriteElement(Rect rect, int index, bool selected, bool focused)
{
Sprite originalSprite = m_Sprites[index].Key;
Sprite overrideSprite = m_Sprites[index].Value;
rect.y += 2;
rect.height -= k_PaddingBetweenRules;
rect.xMax = rect.xMax / 2.0f;
using (new EditorGUI.DisabledScope(true))
EditorGUI.ObjectField(new Rect(rect.xMin, rect.yMin, rect.height, rect.height), originalSprite, typeof(Sprite), false);
rect.xMin = rect.xMax;
rect.xMax *= 2.0f;
EditorGUI.BeginChangeCheck();
overrideSprite = EditorGUI.ObjectField(new Rect(rect.xMin, rect.yMin, rect.height, rect.height), overrideSprite, typeof(Sprite), false) as Sprite;
if (EditorGUI.EndChangeCheck())
{
m_Sprites[index] = new KeyValuePair<Sprite, Sprite>(originalSprite, overrideSprite);
SaveTile();
}
}
private void DrawSpriteHeader(Rect rect)
{
float xMax = rect.xMax;
rect.xMax = rect.xMax / 2.0f;
GUI.Label(rect, "Original", EditorStyles.label);
rect.xMin = rect.xMax;
rect.xMax = xMax;
GUI.Label(rect, "Override", EditorStyles.label);
}
private void DrawRuleElement(Rect rect, int index, bool selected, bool focused)
{
RuleTile.TilingRule originalRule = m_Rules[index].Key;
RuleTile.TilingRule overrideRule = m_Rules[index].Value;
float matrixWidth = k_DefaultElementHeight;
float xMax = rect.xMax;
rect.xMax = rect.xMax / 2.0f + matrixWidth - 10f;
if (index != overrideTile.m_Tile.m_TilingRules.Count)
DrawOriginalRuleElement(rect, originalRule);
else
DrawOriginalRuleElement(rect, originalRule, true);
rect.xMin = rect.xMax;
rect.xMax = xMax;
EditorGUI.BeginChangeCheck();
if (index != overrideTile.m_Tile.m_TilingRules.Count)
DrawOverrideElement(rect, originalRule);
else
DrawOverrideDefaultElement(rect, overrideRule);
if (EditorGUI.EndChangeCheck())
SaveTile();
}
public void DrawOriginalRuleElement(Rect rect, RuleTile.TilingRule originalRule, bool isDefault = false)
{
using (new EditorGUI.DisabledScope(true))
{
float yPos = rect.yMin + 2f;
float height = rect.height - k_PaddingBetweenRules;
float matrixWidth = k_DefaultElementHeight;
Rect inspectorRect = new Rect(rect.xMin, yPos, rect.width - matrixWidth * 2f - 20f, height);
Rect matrixRect = new Rect(rect.xMax - matrixWidth * 2f - 10f, yPos, matrixWidth, k_DefaultElementHeight);
Rect spriteRect = new Rect(rect.xMax - matrixWidth - 5f, yPos, matrixWidth, k_DefaultElementHeight);
if (!isDefault)
RuleTileEditor.RuleInspectorOnGUI(inspectorRect, originalRule);
else
RuleOriginalDefaultInspectorOnGUI(inspectorRect, originalRule);
RuleTileEditor.RuleMatrixOnGUI(matrixRect, originalRule);
RuleTileEditor.SpriteOnGUI(spriteRect, originalRule);
}
}
private void DrawOverrideElement(Rect rect, RuleTile.TilingRule originalRule)
{
float yPos = rect.yMin + 2f;
float height = rect.height - k_PaddingBetweenRules;
float matrixWidth = k_DefaultElementHeight;
Rect inspectorRect = new Rect(rect.xMin, yPos, rect.width - matrixWidth - 10f, height);
Rect spriteRect = new Rect(rect.xMax - matrixWidth - 5f, yPos, matrixWidth, k_DefaultElementHeight);
RuleOverrideInspectorOnGUI(inspectorRect, originalRule);
RuleTile.TilingRule overrideRule = overrideTile[originalRule];
if (overrideRule != null)
RuleTileEditor.SpriteOnGUI(spriteRect, overrideRule);
}
private void RuleOriginalDefaultInspectorOnGUI(Rect rect, RuleTile.TilingRule originalRule)
{
float y = rect.yMin;
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Rule");
EditorGUI.LabelField(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), "Default");
y += k_SingleLineHeight;
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Collider");
EditorGUI.EnumPopup(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), originalRule.m_ColliderType);
y += k_SingleLineHeight;
}
private void RuleOverrideInspectorOnGUI(Rect rect, RuleTile.TilingRule originalRule)
{
RuleTile.TilingRule overrideRule = overrideTile[originalRule];
float y = rect.yMin;
EditorGUI.BeginChangeCheck();
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Enabled");
bool enabled = EditorGUI.Toggle(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideRule != null);
y += k_SingleLineHeight;
if (EditorGUI.EndChangeCheck())
{
if (enabled)
overrideTile[originalRule] = originalRule;
else
overrideTile[originalRule] = null;
overrideRule = overrideTile[originalRule];
}
if (overrideRule == null)
return;
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Collider");
overrideRule.m_ColliderType = (Tile.ColliderType)EditorGUI.EnumPopup(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideRule.m_ColliderType);
y += k_SingleLineHeight;
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Output");
overrideRule.m_Output = (RuleTile.TilingRule.OutputSprite)EditorGUI.EnumPopup(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideRule.m_Output);
y += k_SingleLineHeight;
if (overrideRule.m_Output == RuleTile.TilingRule.OutputSprite.Animation)
{
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Speed");
overrideRule.m_AnimationSpeed = EditorGUI.FloatField(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideRule.m_AnimationSpeed);
y += k_SingleLineHeight;
}
if (overrideRule.m_Output == RuleTile.TilingRule.OutputSprite.Random)
{
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Noise");
overrideRule.m_PerlinScale = EditorGUI.Slider(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideRule.m_PerlinScale, 0.001f, 0.999f);
y += k_SingleLineHeight;
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Shuffle");
overrideRule.m_RandomTransform = (RuleTile.TilingRule.Transform)EditorGUI.EnumPopup(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideRule.m_RandomTransform);
y += k_SingleLineHeight;
}
if (overrideRule.m_Output != RuleTile.TilingRule.OutputSprite.Single)
{
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Size");
EditorGUI.BeginChangeCheck();
int newLength = EditorGUI.DelayedIntField(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideRule.m_Sprites.Length);
if (EditorGUI.EndChangeCheck())
Array.Resize(ref overrideRule.m_Sprites, Math.Max(newLength, 1));
y += k_SingleLineHeight;
for (int i = 0; i < overrideRule.m_Sprites.Length; i++)
{
overrideRule.m_Sprites[i] = EditorGUI.ObjectField(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideRule.m_Sprites[i], typeof(Sprite), false) as Sprite;
y += k_SingleLineHeight;
}
}
}
private void DrawOverrideDefaultElement(Rect rect, RuleTile.TilingRule originalRule)
{
float yPos = rect.yMin + 2f;
float height = rect.height - k_PaddingBetweenRules;
float matrixWidth = k_DefaultElementHeight;
Rect inspectorRect = new Rect(rect.xMin, yPos, rect.width - matrixWidth - 10f, height);
Rect spriteRect = new Rect(rect.xMax - matrixWidth - 5f, yPos, matrixWidth, k_DefaultElementHeight);
RuleOverrideDefaultInspectorOnGUI(inspectorRect, originalRule);
if (overrideTile.m_OverrideDefault.m_Enabled)
RuleTileEditor.SpriteOnGUI(spriteRect, overrideTile.m_OverrideDefault.m_TilingRule);
}
private void RuleOverrideDefaultInspectorOnGUI(Rect rect, RuleTile.TilingRule overrideRule)
{
float y = rect.yMin;
EditorGUI.BeginChangeCheck();
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Enabled");
bool enabled = EditorGUI.Toggle(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideTile.m_OverrideDefault.m_Enabled);
y += k_SingleLineHeight;
if (EditorGUI.EndChangeCheck())
{
overrideTile.m_OverrideDefault.m_Enabled = enabled;
overrideTile.m_OverrideDefault.m_TilingRule = overrideTile.m_OriginalDefault;
}
if (!enabled)
return;
GUI.Label(new Rect(rect.xMin, y, k_LabelWidth, k_SingleLineHeight), "Collider");
overrideRule.m_ColliderType = (Tile.ColliderType)EditorGUI.EnumPopup(new Rect(rect.xMin + k_LabelWidth, y, rect.width - k_LabelWidth, k_SingleLineHeight), overrideRule.m_ColliderType);
y += k_SingleLineHeight;
}
private void DrawRuleHeader(Rect rect)
{
overrideTile.Override();
float matrixWidth = k_DefaultElementHeight;
float xMax = rect.xMax;
rect.xMax = rect.xMax / 2.0f + matrixWidth - 10f;
GUI.Label(rect, "Original", EditorStyles.label);
rect.xMin = rect.xMax;
rect.xMax = xMax;
GUI.Label(rect, "Override", EditorStyles.label);
}
private float GetRuleElementHeight(int index)
{
if (index != overrideTile.m_Tile.m_TilingRules.Count)
{
var overrideRule = overrideTile[overrideTile.m_Tile.m_TilingRules[index]];
float overrideHeight = GetRuleElementHeight(overrideRule);
float originalHeight = GetRuleElementHeight(overrideTile.m_Tile.m_TilingRules[index]);
return Mathf.Max(overrideHeight, originalHeight);
}
else
{
var overrideRule = overrideTile.m_OverrideDefault.m_Enabled ? overrideTile.m_OverrideDefault.m_TilingRule : null;
float overrideHeight = GetRuleElementHeight(overrideRule);
float originalHeight = GetRuleElementHeight(new RuleTile.TilingRule());
return Mathf.Max(overrideHeight, originalHeight);
}
}
private float GetRuleElementHeight(RuleTile.TilingRule rule)
{
float height = k_DefaultElementHeight + k_PaddingBetweenRules;
if (rule != null)
{
switch (rule.m_Output)
{
case RuleTile.TilingRule.OutputSprite.Random:
height = k_DefaultElementHeight + k_SingleLineHeight * (rule.m_Sprites.Length + 3) + k_PaddingBetweenRules;
break;
case RuleTile.TilingRule.OutputSprite.Animation:
height = k_DefaultElementHeight + k_SingleLineHeight * (rule.m_Sprites.Length + 2) + k_PaddingBetweenRules;
break;
}
}
return height;
}
}
}

View file

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

View file

@ -0,0 +1,331 @@
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine.Tilemaps;
namespace UnityEngine
{
[Serializable, CreateAssetMenu]
public class RuleOverrideTile : TileBase
{
public bool m_Advanced;
public OverrideTilingRule m_OverrideDefault = new OverrideTilingRule();
public List<OverrideTilingRule> m_OverrideTilingRules = new List<OverrideTilingRule>();
public List<TileSpritePair> m_Sprites = new List<TileSpritePair>();
public RuleTile m_Tile;
private RuleTile m_RuntimeTile;
public Sprite this[Sprite originalSprite]
{
get
{
foreach (var spritePair in m_Sprites)
{
if (spritePair.m_OriginalSprite == originalSprite)
{
return spritePair.m_OverrideSprite;
}
}
return null;
}
set
{
if (value == null)
{
m_Sprites = m_Sprites.Where(spritePair => spritePair.m_OriginalSprite != originalSprite).ToList();
}
else
{
foreach (var spritePair in m_Sprites)
{
if (spritePair.m_OriginalSprite == originalSprite)
{
spritePair.m_OverrideSprite = value;
return;
}
}
m_Sprites.Add(new TileSpritePair { m_OriginalSprite = originalSprite, m_OverrideSprite = value });
}
}
}
public RuleTile.TilingRule this[RuleTile.TilingRule originalRule]
{
get
{
if (!m_Tile)
{
return null;
}
var index = m_Tile.m_TilingRules.IndexOf(originalRule);
if (index == -1)
{
return null;
}
if (m_OverrideTilingRules.Count < index + 1)
{
return null;
}
return m_OverrideTilingRules[index].m_Enabled ? m_OverrideTilingRules[index].m_TilingRule : null;
}
set
{
if (!m_Tile)
{
return;
}
var index = m_Tile.m_TilingRules.IndexOf(originalRule);
if (index == -1)
{
return;
}
if (value == null)
{
if (m_OverrideTilingRules.Count < index + 1)
{
return;
}
m_OverrideTilingRules[index].m_Enabled = false;
while (m_OverrideTilingRules.Count > 0 && !m_OverrideTilingRules[m_OverrideTilingRules.Count - 1].m_Enabled)
{
m_OverrideTilingRules.RemoveAt(m_OverrideTilingRules.Count - 1);
}
}
else
{
while (m_OverrideTilingRules.Count < index + 1)
{
m_OverrideTilingRules.Add(new OverrideTilingRule());
}
m_OverrideTilingRules[index].m_Enabled = true;
m_OverrideTilingRules[index].m_TilingRule = CloneTilingRule(value);
m_OverrideTilingRules[index].m_TilingRule.m_Neighbors = null;
}
}
}
public RuleTile.TilingRule m_OriginalDefault
{
get
{
return new RuleTile.TilingRule
{
m_Sprites = new[] { m_Tile != null ? m_Tile.m_DefaultSprite : null },
m_ColliderType = m_Tile != null ? m_Tile.m_DefaultColliderType : Tile.ColliderType.None
};
}
}
public override bool GetTileAnimationData(Vector3Int position, ITilemap tilemap, ref TileAnimationData tileAnimationData)
{
if (!m_RuntimeTile)
{
Override();
}
return m_RuntimeTile.GetTileAnimationData(position, tilemap, ref tileAnimationData);
}
public override void GetTileData(Vector3Int position, ITilemap tilemap, ref TileData tileData)
{
if (!m_RuntimeTile)
{
Override();
}
m_RuntimeTile.GetTileData(position, tilemap, ref tileData);
}
public override void RefreshTile(Vector3Int position, ITilemap tilemap)
{
if (!m_RuntimeTile)
{
Override();
}
m_RuntimeTile.RefreshTile(position, tilemap);
}
public override bool StartUp(Vector3Int position, ITilemap tilemap, GameObject go)
{
Override();
return m_RuntimeTile.StartUp(position, tilemap, go);
}
public void ApplyOverrides(IList<KeyValuePair<Sprite, Sprite>> overrides)
{
if (overrides == null)
{
throw new ArgumentNullException("overrides");
}
for (var i = 0; i < overrides.Count; i++)
{
this[overrides[i].Key] = overrides[i].Value;
}
}
public void GetOverrides(List<KeyValuePair<Sprite, Sprite>> overrides)
{
if (overrides == null)
{
throw new ArgumentNullException("overrides");
}
overrides.Clear();
if (!m_Tile)
{
return;
}
var originalSprites = new List<Sprite>();
if (m_Tile.m_DefaultSprite)
{
originalSprites.Add(m_Tile.m_DefaultSprite);
}
foreach (var rule in m_Tile.m_TilingRules)
foreach (var sprite in rule.m_Sprites)
{
if (sprite && !originalSprites.Contains(sprite))
{
originalSprites.Add(sprite);
}
}
foreach (var sprite in originalSprites)
{
overrides.Add(new KeyValuePair<Sprite, Sprite>(sprite, this[sprite]));
}
}
public void ApplyOverrides(IList<KeyValuePair<RuleTile.TilingRule, RuleTile.TilingRule>> overrides)
{
if (overrides == null)
{
throw new ArgumentNullException("overrides");
}
for (var i = 0; i < overrides.Count; i++)
{
this[overrides[i].Key] = overrides[i].Value;
}
}
public void GetOverrides(List<KeyValuePair<RuleTile.TilingRule, RuleTile.TilingRule>> overrides)
{
if (overrides == null)
{
throw new ArgumentNullException("overrides");
}
overrides.Clear();
if (!m_Tile)
{
return;
}
foreach (var originalRule in m_Tile.m_TilingRules)
{
var overrideRule = this[originalRule];
overrides.Add(new KeyValuePair<RuleTile.TilingRule, RuleTile.TilingRule>(originalRule, overrideRule));
}
overrides.Add(new KeyValuePair<RuleTile.TilingRule, RuleTile.TilingRule>(m_OriginalDefault, m_OverrideDefault.m_TilingRule));
}
public void Override()
{
m_RuntimeTile = m_Tile ? Instantiate(m_Tile) : new RuleTile();
m_RuntimeTile.m_Self = this;
if (!m_Advanced)
{
if (m_RuntimeTile.m_DefaultSprite)
{
m_RuntimeTile.m_DefaultSprite = this[m_RuntimeTile.m_DefaultSprite];
}
if (m_RuntimeTile.m_TilingRules != null)
{
foreach (var rule in m_RuntimeTile.m_TilingRules)
{
for (var i = 0; i < rule.m_Sprites.Length; i++)
{
if (rule.m_Sprites[i])
{
rule.m_Sprites[i] = this[rule.m_Sprites[i]];
}
}
}
}
}
else
{
if (m_OverrideDefault.m_Enabled)
{
m_RuntimeTile.m_DefaultSprite = m_OverrideDefault.m_TilingRule.m_Sprites.Length > 0
? m_OverrideDefault.m_TilingRule.m_Sprites[0]
: null;
m_RuntimeTile.m_DefaultColliderType = m_OverrideDefault.m_TilingRule.m_ColliderType;
}
if (m_RuntimeTile.m_TilingRules != null)
{
for (var i = 0; i < m_RuntimeTile.m_TilingRules.Count; i++)
{
var originalRule = m_RuntimeTile.m_TilingRules[i];
var overrideRule = this[m_Tile.m_TilingRules[i]];
if (overrideRule == null)
{
continue;
}
CopyTilingRule(overrideRule, originalRule, false);
}
}
}
}
public RuleTile.TilingRule CloneTilingRule(RuleTile.TilingRule from)
{
var clone = new RuleTile.TilingRule();
CopyTilingRule(from, clone, true);
return clone;
}
public void CopyTilingRule(RuleTile.TilingRule from, RuleTile.TilingRule to, bool copyRule)
{
if (copyRule)
{
to.m_Neighbors = from.m_Neighbors;
to.m_RuleTransform = from.m_RuleTransform;
}
to.m_Sprites = from.m_Sprites.Clone() as Sprite[];
to.m_AnimationSpeed = from.m_AnimationSpeed;
to.m_PerlinScale = from.m_PerlinScale;
to.m_Output = from.m_Output;
to.m_ColliderType = from.m_ColliderType;
to.m_RandomTransform = from.m_RandomTransform;
}
[Serializable]
public class TileSpritePair
{
public Sprite m_OriginalSprite;
public Sprite m_OverrideSprite;
}
[Serializable]
public class OverrideTilingRule
{
public bool m_Enabled;
public RuleTile.TilingRule m_TilingRule = new RuleTile.TilingRule();
}
}
}

View file

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