logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Class ReoccupiedMovedPathPlanner

    Finds the one combination that corrupts an additive package upgrade: a GUID that the PREVIOUS release shipped at one path now ships at a different path, while the OLD path is occupied by a different GUID in the current shipped set. Unity imports by GUID — an incoming entry whose GUID already exists in the customer project is written onto the path that currently OWNS that GUID, not onto the incoming path. On an upgrading project the moved file's content is therefore redirect-written onto the old path, the new path is never created, and the different-GUID occupant of the old path is dropped as an unknown GUID collision — compilation breaks, and the cleaner cannot heal it because the old path is still a shipped path (so the stranded file is not an orphan). Each half alone is safe: a GUID-preserving move is covered by the restore payloads, and a path that gets a new GUID is covered by the tombstones. Only the combination is a defect; the remedy is to keep the previous-release GUID at the old path and give the moved file the new GUID, or to stop re-occupying the old path. A blank-GUID occupant is never reported: AssetDatabase.AssetPathToGUID yields a blank GUID only for a path that does not exist, so a guid-less entry is not a shipped file and cannot take part in a redirect-write. A GUID the previous snapshot lists at several paths is checked against every one of them. Pure: no Unity API calls, so it is unit-testable without a running editor.

    Inheritance
    object
    ReoccupiedMovedPathPlanner
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    Namespace: Serenity.Editor.PackageBootstrapper
    Assembly: Serenity.PackageBootstrapper.Editor.dll
    Syntax
    public static class ReoccupiedMovedPathPlanner

    Methods

    FindReoccupiedMovedPaths(IEnumerable<ShippedAssetEntry>, IEnumerable<ShippedAssetEntry>)

    Declaration
    public static List<ReoccupiedMovedPath> FindReoccupiedMovedPaths(IEnumerable<ShippedAssetEntry> previousReleaseEntries, IEnumerable<ShippedAssetEntry> currentEntries)
    Parameters
    Type Name Description
    IEnumerable<ShippedAssetEntry> previousReleaseEntries
    IEnumerable<ShippedAssetEntry> currentEntries
    Returns
    Type Description
    List<ReoccupiedMovedPath>
    In this article
    © 2026 Serenity. All Rights Reserved