41 lines
1.4 KiB
C#
41 lines
1.4 KiB
C#
using System.Xml.Linq;
|
|
using UnityEngine;
|
|
|
|
namespace SuperTiled2Unity.Editor
|
|
{
|
|
// Helps us create SuperLayer objects from XML
|
|
public abstract class SuperLayerLoader
|
|
{
|
|
protected XElement Xml { get; }
|
|
protected TiledAssetImporter Importer { get; }
|
|
|
|
protected SuperLayerLoader(XElement xml, TiledAssetImporter importer)
|
|
{
|
|
Xml = xml;
|
|
Importer = importer;
|
|
}
|
|
|
|
public SuperLayer CreateLayer(GameObject go)
|
|
{
|
|
var layer = CreateLayerComponent(go);
|
|
|
|
layer.m_TiledName = Xml.GetAttributeAs("name", "layer");
|
|
layer.m_Visible = Xml.GetAttributeAs("visible", true);
|
|
layer.m_OffsetX = Xml.GetAttributeAs("offsetx", 0.0f);
|
|
layer.m_OffsetY = Xml.GetAttributeAs("offsety", 0.0f);
|
|
layer.m_ParallaxX = Xml.GetAttributeAs("parallaxx", 1.0f);
|
|
layer.m_ParallaxY = Xml.GetAttributeAs("parallaxy", 1.0f);
|
|
layer.m_Opacity = Xml.GetAttributeAs("opacity", 1.0f);
|
|
layer.m_TintColor = Xml.GetAttributeAsColor("tintcolor", Color.white);
|
|
|
|
// Internal method will get the layer component it wants and fill out any extra data needed from the xml element.
|
|
InternalLoadFromXml(go);
|
|
|
|
return layer;
|
|
}
|
|
|
|
protected abstract SuperLayer CreateLayerComponent(GameObject go);
|
|
protected abstract void InternalLoadFromXml(GameObject go);
|
|
}
|
|
}
|