public static void UpdateProperties(this SuperMap superMap, SuperImportContext importContext) { var cellSize = superMap.CalculateCellSize(); // The cell size has to take pixels per unit into account superMap.CellSize = importContext.MakeSize(cellSize); }
private void CalculateTransform() { Matrix4x4 matTileOffset = Matrix4x4.Translate(m_ImportContext.MakePoint(m_Tile.m_TileOffsetX, m_Tile.m_TileOffsetY)); if (!m_TileId.HasFlip) { m_Transform = matTileOffset; return; } var tileCenter = m_ImportContext.MakeSize(m_Tile.m_Width, -m_Tile.m_Height) * 0.5f; Matrix4x4 matTransIn = Matrix4x4.identity; Matrix4x4 matFlip = Matrix4x4.identity; Matrix4x4 matTransOut = Matrix4x4.identity; // Go to the tile center matTransIn = Matrix4x4.Translate(-tileCenter); // Do the flips if (m_TileId.HasHorizontalFlip) { matFlip *= HorizontalFlipMatrix; } if (m_TileId.HasVerticalFlip) { matFlip *= VerticalFlipMatrix; } if (m_TileId.HasDiagonalFlip) { matFlip *= DiagonalFlipMatrix; } // Go out of the tile center if (!m_TileId.HasDiagonalFlip) { matTransOut = Matrix4x4.Translate(tileCenter); } else { float diff = m_ImportContext.MakeScalar(m_Tile.m_Height - m_Tile.m_Width) * 0.5f; tileCenter.x += diff; tileCenter.y -= diff; matTransOut = Matrix4x4.Translate(tileCenter); } // Put it all together Matrix4x4 mat = matTileOffset * matTransOut * matFlip * matTransIn; // Remember our transformation matrix m_Transform = mat; }
private static void AddBoxCollider(GameObject go, CollisionObject collision, SuperTile tile, SuperImportContext importContext) { var box = go.AddComponent <BoxCollider2D>(); box.offset = importContext.MakePointPPU(collision.m_Size.x, -collision.m_Size.y) * 0.5f; box.size = importContext.MakeSize(collision.m_Size); 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>(); }