public void RestoreSaveData(object dataIn)
        {
            if (!loot)
            {
                return;
            }

            LootContainerData_v1 data = (LootContainerData_v1)dataIn;

            if (data.loadID != LoadID)
            {
                return;
            }

            // Restore billboard only if this is a billboard-based loot container
            if (loot.ContainerType == LootContainerTypes.RandomTreasure ||
                loot.ContainerType == LootContainerTypes.CorpseMarker ||
                loot.ContainerType == LootContainerTypes.DroppedLoot)
            {
                DaggerfallBillboard billboard = loot.GetComponent <DaggerfallBillboard>();

                // Interiors and exteriors need special handling to ensure loot is always placed correctly for pre and post floating y saves
                // Dungeons are not involved with floating y and don't need any changes
                WorldContext lootContext = GetLootWorldContext(loot);
                if (lootContext == WorldContext.Interior)
                {
                    RestoreInteriorPositionHandler(loot, data, lootContext);
                }
                else if (lootContext == WorldContext.Exterior)
                {
                    RestoreExteriorPositionHandler(loot, data, lootContext);
                }
                else
                {
                    loot.transform.position = data.currentPosition;
                }

                // Restore appearance
                if (MeshReplacement.SwapCustomFlatGameobject(data.textureArchive, data.textureRecord, loot.transform, Vector3.zero, lootContext == WorldContext.Dungeon))
                {
                    // Use imported model instead of billboard
                    if (billboard)
                    {
                        Destroy(billboard);
                    }
                    Destroy(GetComponent <MeshRenderer>());
                }
                else if (billboard)
                {
                    // Restore billboard appearance if present
                    billboard.SetMaterial(data.textureArchive, data.textureRecord);
                }
            }

            // Restore items
            loot.Items.DeserializeItems(data.items);

            // Restore other data
            loot.ContainerType  = data.containerType;
            loot.ContainerImage = data.containerImage;
            loot.TextureArchive = data.textureArchive;
            loot.TextureRecord  = data.textureRecord;
            loot.stockedDate    = data.stockedDate;
            loot.playerOwned    = data.playerOwned;
            loot.customDrop     = data.customDrop;
            loot.entityName     = data.entityName;
            loot.isEnemyClass   = data.isEnemyClass;

            // Remove loot container if empty
            if (loot.Items.Count == 0)
            {
                GameObjectHelper.RemoveLootContainer(loot);
            }
        }