Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using UnityEngine;
using SuperTiled2Unity.Editor.Geometry;
using System.Linq;

namespace SuperTiled2Unity.Editor
{
Expand Down Expand Up @@ -27,7 +28,7 @@ public static void AddCollider(this CollisionObject collision, SuperTile tile, G
}
else if (collision.CollisionShapeType == CollisionShapeType.Point)
{
AddPointCollider(go, collision, importContext);
AddPointCollider(go, collision, tile, importContext);
}

// Additional settings on the collider that was just added
Expand Down Expand Up @@ -55,14 +56,20 @@ private static void AddPolygonCollider(GameObject go, CollisionObject collision,
var convexPolygons = composition.Compose(triangles);

PolygonUtils.AddCompositePolygonCollider(go, convexPolygons, importContext);
foreach (var superCollider in go.GetComponentsInChildren<SuperColliderComponent>()) {
superCollider.m_ObjectType = collision.m_ObjectType;
AddSuperCustomProperties(go, collision, tile, importContext);
}
}

private static void AddEdgeCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext)
{
var edge = go.AddComponent<EdgeCollider2D>();
edge.points = importContext.MakePointsPPU(collision.Points);

go.AddComponent<SuperColliderComponent>();
var superCollision = go.AddComponent<SuperColliderComponent>();
superCollision.m_ObjectType = collision.m_ObjectType;
AddSuperCustomProperties(go, collision, tile, importContext);
}

private static void AddEllipseCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext)
Expand All @@ -79,7 +86,9 @@ private static void AddEllipseCollider(GameObject go, CollisionObject collision,
go.transform.localPosition = new Vector3(xpos, ypos);
go.transform.localEulerAngles = new Vector3(0, 0, importContext.MakeRotation(collision.m_Rotation));

go.AddComponent<SuperColliderComponent>();
var superCollision = go.AddComponent<SuperColliderComponent>();
superCollision.m_ObjectType = collision.m_ObjectType;
AddSuperCustomProperties(go, collision, tile, importContext);
}
else
{
Expand All @@ -99,18 +108,39 @@ private static void AddBoxCollider(GameObject go, CollisionObject collision, Sup
go.transform.localPosition = new Vector3(xpos, ypos);
go.transform.localEulerAngles = new Vector3(0, 0, importContext.MakeRotation(collision.m_Rotation));

go.AddComponent<SuperColliderComponent>();
var superCollision = go.AddComponent<SuperColliderComponent>();
superCollision.m_ObjectType = collision.m_ObjectType;
AddSuperCustomProperties(go, collision, tile, importContext);
}

private static void AddPointCollider(GameObject go, CollisionObject collision, SuperImportContext importContext)
private static void AddPointCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext)
{
var xpos = importContext.MakeScalar(collision.m_Position.x);
var ypos = importContext.MakeScalar(collision.m_Position.y);

go.transform.localPosition = new Vector3(xpos, ypos);
go.transform.localEulerAngles = new Vector3(0, 0, importContext.MakeRotation(collision.m_Rotation));

go.AddComponent<SuperColliderComponent>();
var superCollision = go.AddComponent<SuperColliderComponent>();
superCollision.m_ObjectType = collision.m_ObjectType;
AddSuperCustomProperties(go, collision, tile, importContext);
}

private static void AddSuperCustomProperties(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext)
{
var properties = collision.m_CustomProperties.ToList();
// Do we have any properties from a tile to add?
if (tile != null)
{
properties.CombineFromSource(tile.m_CustomProperties);
}

// Add properties from our object type (this should be last)
properties.AddPropertiesFromType(collision.m_ObjectType, importContext);

// Sort the properties alphabetically
var component = go.AddComponent<SuperCustomProperties>();
component.m_Properties = properties.OrderBy(p => p.m_Name).ToList();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public class Shape
// Editor code to help us manage when we draw gizmo colliders for this component
public List<Shape> m_PolygonShapes = new List<Shape>();
public List<Shape> m_OutlineShapes = new List<Shape>();
public string m_ObjectType;

#if UNITY_EDITOR
public void AddPolygonShape(IEnumerable<Vector2> points)
Expand Down