示例#1
0
        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>();
        }