/** * Combs the scene for data to store, combines it into a SingleLevelData variable, and adds it to the SingleLevelData List, allLevelData. */ public void StoreCurrentLevelData() { List <TransformData> thisLevelTransforms = PopulateTransformData(); List <ScriptData> thisLevelScripts = PopulateScriptData(); SingleLevelData thisLevelData = new SingleLevelData(); thisLevelData.sceneNumber = UnityVersionHandler.GetCurrentSceneNumber(); thisLevelData.activeLists = KickStarter.actionListManager.GetSaveData(); if (KickStarter.sceneSettings) { if (KickStarter.sceneSettings.navMesh && KickStarter.sceneSettings.navMesh.GetComponent <ConstantID>()) { thisLevelData.navMesh = Serializer.GetConstantID(KickStarter.sceneSettings.navMesh.gameObject); } if (KickStarter.sceneSettings.defaultPlayerStart && KickStarter.sceneSettings.defaultPlayerStart.GetComponent <ConstantID>()) { thisLevelData.playerStart = Serializer.GetConstantID(KickStarter.sceneSettings.defaultPlayerStart.gameObject); } if (KickStarter.sceneSettings.sortingMap && KickStarter.sceneSettings.sortingMap.GetComponent <ConstantID>()) { thisLevelData.sortingMap = Serializer.GetConstantID(KickStarter.sceneSettings.sortingMap.gameObject); } if (KickStarter.sceneSettings.cutsceneOnLoad && KickStarter.sceneSettings.cutsceneOnLoad.GetComponent <ConstantID>()) { thisLevelData.onLoadCutscene = Serializer.GetConstantID(KickStarter.sceneSettings.cutsceneOnLoad.gameObject); } if (KickStarter.sceneSettings.cutsceneOnStart && KickStarter.sceneSettings.cutsceneOnStart.GetComponent <ConstantID>()) { thisLevelData.onStartCutscene = Serializer.GetConstantID(KickStarter.sceneSettings.cutsceneOnStart.gameObject); } if (KickStarter.sceneSettings.tintMap && KickStarter.sceneSettings.tintMap.GetComponent <ConstantID>()) { thisLevelData.tintMap = Serializer.GetConstantID(KickStarter.sceneSettings.tintMap.gameObject); } } thisLevelData.localVariablesData = SaveSystem.CreateVariablesData(KickStarter.localVariables.localVars, false, VariableLocation.Local); thisLevelData.allTransformData = thisLevelTransforms; thisLevelData.allScriptData = thisLevelScripts; bool found = false; for (int i = 0; i < allLevelData.Count; i++) { if (allLevelData[i].sceneNumber == UnityVersionHandler.GetCurrentSceneNumber()) { allLevelData[i] = thisLevelData; found = true; break; } } if (!found) { allLevelData.Add(thisLevelData); } }
/** * <summary>Updates a VisibilityData class with its own variables that need saving.</summary> * <param name = "visibilityData">The original VisibilityData class</param> * <returns>The updated VisibilityData class</returns> */ public VisibilityData SaveData(VisibilityData visibilityData) { visibilityData.useDefaultTintMap = useDefaultTintMap; visibilityData.tintIntensity = targetIntensity; visibilityData.tintMapID = 0; if (!useDefaultTintMap && tintMap != null && tintMap.gameObject != null) { visibilityData.tintMapID = Serializer.GetConstantID(tintMap.gameObject); } return(visibilityData); }
/** * <summary>Updates a PlayerData class with its own variables that need saving.</summary> * <param name = "playerData">The original PlayerData class</param> * <returns>The updated PlayerData class</returns> */ public PlayerData SavePlayerData(PlayerData playerData) { playerData.playerID = ID; playerData.playerLocX = transform.position.x; playerData.playerLocY = transform.position.y; playerData.playerLocZ = transform.position.z; playerData.playerRotY = TransformRotation.eulerAngles.y; playerData.playerWalkSpeed = walkSpeedScale; playerData.playerRunSpeed = runSpeedScale; // Animation clips if (animationEngine == AnimationEngine.Sprites2DToolkit || animationEngine == AnimationEngine.SpritesUnity) { playerData.playerIdleAnim = idleAnimSprite; playerData.playerWalkAnim = walkAnimSprite; playerData.playerRunAnim = runAnimSprite; playerData.playerTalkAnim = talkAnimSprite; } else if (animationEngine == AnimationEngine.Legacy) { playerData.playerIdleAnim = AssetLoader.GetAssetInstanceID(idleAnim); playerData.playerWalkAnim = AssetLoader.GetAssetInstanceID(walkAnim); playerData.playerRunAnim = AssetLoader.GetAssetInstanceID(runAnim); playerData.playerTalkAnim = AssetLoader.GetAssetInstanceID(talkAnim); } else if (animationEngine == AnimationEngine.Mecanim) { playerData.playerWalkAnim = moveSpeedParameter; playerData.playerTalkAnim = talkParameter; playerData.playerRunAnim = turnParameter; } // Sound playerData.playerWalkSound = AssetLoader.GetAssetInstanceID(walkSound); playerData.playerRunSound = AssetLoader.GetAssetInstanceID(runSound); // Portrait graphic playerData.playerPortraitGraphic = AssetLoader.GetAssetInstanceID(portraitIcon.texture); // Speech label playerData.playerSpeechLabel = GetName(); playerData.playerDisplayLineID = displayLineID; // Rendering playerData.playerLockDirection = lockDirection; playerData.playerLockScale = lockScale; if (spriteChild && spriteChild.GetComponent <FollowSortingMap>()) { playerData.playerLockSorting = spriteChild.GetComponent <FollowSortingMap>().lockSorting; } else if (GetComponent <FollowSortingMap>()) { playerData.playerLockSorting = GetComponent <FollowSortingMap>().lockSorting; } else { playerData.playerLockSorting = false; } playerData.playerSpriteDirection = spriteDirection; playerData.playerSpriteScale = spriteScale; if (spriteChild && spriteChild.GetComponent <Renderer>()) { playerData.playerSortingOrder = spriteChild.GetComponent <Renderer>().sortingOrder; playerData.playerSortingLayer = spriteChild.GetComponent <Renderer>().sortingLayerName; } else if (GetComponent <Renderer>()) { playerData.playerSortingOrder = GetComponent <Renderer>().sortingOrder; playerData.playerSortingLayer = GetComponent <Renderer>().sortingLayerName; } playerData.playerActivePath = 0; playerData.lastPlayerActivePath = 0; if (GetPath()) { playerData.playerTargetNode = GetTargetNode(); playerData.playerPrevNode = GetPrevNode(); playerData.playerIsRunning = isRunning; playerData.playerPathAffectY = activePath.affectY; if (GetComponent <Paths>() && GetPath() == GetComponent <Paths>()) { playerData.playerPathData = Serializer.CreatePathData(GetComponent <Paths>()); playerData.playerLockedPath = false; } else { playerData.playerPathData = ""; playerData.playerActivePath = Serializer.GetConstantID(GetPath().gameObject); playerData.playerLockedPath = lockedPath; } } if (GetLastPath()) { playerData.lastPlayerTargetNode = GetLastTargetNode(); playerData.lastPlayerPrevNode = GetLastPrevNode(); playerData.lastPlayerActivePath = Serializer.GetConstantID(GetLastPath().gameObject); } playerData.playerIgnoreGravity = ignoreGravity; // Head target playerData.playerLockHotspotHeadTurning = lockHotspotHeadTurning; if (headFacing == HeadFacing.Manual && headTurnTarget != null) { playerData.isHeadTurning = true; playerData.headTargetID = Serializer.GetConstantID(headTurnTarget); if (playerData.headTargetID == 0) { ACDebug.LogWarning("The Player's head-turning target Transform, " + headTurnTarget + ", was not saved because it has no Constant ID"); } playerData.headTargetX = headTurnTargetOffset.x; playerData.headTargetY = headTurnTargetOffset.y; playerData.headTargetZ = headTurnTargetOffset.z; } else { playerData.isHeadTurning = false; playerData.headTargetID = 0; playerData.headTargetX = 0f; playerData.headTargetY = 0f; playerData.headTargetZ = 0f; } if (GetComponentInChildren <FollowSortingMap>() != null) { FollowSortingMap followSortingMap = GetComponentInChildren <FollowSortingMap>(); playerData.followSortingMap = followSortingMap.followSortingMap; if (!playerData.followSortingMap && followSortingMap.GetSortingMap() != null) { if (followSortingMap.GetSortingMap().GetComponent <ConstantID>() != null) { playerData.customSortingMapID = followSortingMap.GetSortingMap().GetComponent <ConstantID>().constantID; } else { ACDebug.LogWarning("The Player's SortingMap, " + followSortingMap.GetSortingMap().name + ", was not saved because it has no Constant ID"); playerData.customSortingMapID = 0; } } else { playerData.customSortingMapID = 0; } } else { playerData.followSortingMap = false; playerData.customSortingMapID = 0; } return(playerData); }
private void SendSceneToData(SubScene subScene = null) { SceneSettings sceneSettings = (subScene == null) ? KickStarter.sceneSettings : subScene.SceneSettings; LocalVariables localVariables = (subScene == null) ? KickStarter.localVariables : subScene.LocalVariables; List <TransformData> thisLevelTransforms = PopulateTransformData(subScene); List <ScriptData> thisLevelScripts = PopulateScriptData(subScene); SingleLevelData thisLevelData = new SingleLevelData(); thisLevelData.sceneNumber = (subScene == null) ? UnityVersionHandler.GetCurrentSceneNumber() : subScene.SceneInfo.number; thisLevelData.activeLists = KickStarter.actionListManager.GetSaveData(subScene); if (sceneSettings != null) { if (sceneSettings.navMesh && sceneSettings.navMesh.GetComponent <ConstantID>()) { thisLevelData.navMesh = Serializer.GetConstantID(sceneSettings.navMesh.gameObject); } if (sceneSettings.defaultPlayerStart && sceneSettings.defaultPlayerStart.GetComponent <ConstantID>()) { thisLevelData.playerStart = Serializer.GetConstantID(sceneSettings.defaultPlayerStart.gameObject); } if (sceneSettings.sortingMap && sceneSettings.sortingMap.GetComponent <ConstantID>()) { thisLevelData.sortingMap = Serializer.GetConstantID(sceneSettings.sortingMap.gameObject); } if (sceneSettings.cutsceneOnLoad && sceneSettings.cutsceneOnLoad.GetComponent <ConstantID>()) { thisLevelData.onLoadCutscene = Serializer.GetConstantID(sceneSettings.cutsceneOnLoad.gameObject); } if (sceneSettings.cutsceneOnStart && sceneSettings.cutsceneOnStart.GetComponent <ConstantID>()) { thisLevelData.onStartCutscene = Serializer.GetConstantID(sceneSettings.cutsceneOnStart.gameObject); } if (sceneSettings.tintMap && sceneSettings.tintMap.GetComponent <ConstantID>()) { thisLevelData.tintMap = Serializer.GetConstantID(sceneSettings.tintMap.gameObject); } } thisLevelData.localVariablesData = SaveSystem.CreateVariablesData(localVariables.localVars, false, VariableLocation.Local); thisLevelData.allTransformData = thisLevelTransforms; thisLevelData.allScriptData = thisLevelScripts; bool found = false; for (int i = 0; i < allLevelData.Count; i++) { if (allLevelData[i].sceneNumber == thisLevelData.sceneNumber) { allLevelData[i] = thisLevelData; found = true; break; } } if (!found) { allLevelData.Add(thisLevelData); } }
/** * <summary>Updates a NPCData class with its own variables that need saving.</summary> * <param name = "npcData">The original NPCData class</param> * <returns>The updated NPCData class</returns> */ public NPCData SaveData(NPCData npcData) { npcData.RotX = TransformRotation.eulerAngles.x; npcData.RotY = TransformRotation.eulerAngles.y; npcData.RotZ = TransformRotation.eulerAngles.z; npcData.inCustomCharState = (charState == CharState.Custom && GetAnimator() != null && GetAnimator().GetComponent <RememberAnimator>()); if (animationEngine == AnimationEngine.Sprites2DToolkit || animationEngine == AnimationEngine.SpritesUnity) { npcData.idleAnim = idleAnimSprite; npcData.walkAnim = walkAnimSprite; npcData.talkAnim = talkAnimSprite; npcData.runAnim = runAnimSprite; } else if (animationEngine == AnimationEngine.Legacy) { npcData.idleAnim = AssetLoader.GetAssetInstanceID(idleAnim); npcData.walkAnim = AssetLoader.GetAssetInstanceID(walkAnim); npcData.runAnim = AssetLoader.GetAssetInstanceID(runAnim); npcData.talkAnim = AssetLoader.GetAssetInstanceID(talkAnim); } else if (animationEngine == AnimationEngine.Mecanim) { npcData.walkAnim = moveSpeedParameter; npcData.talkAnim = talkParameter; npcData.runAnim = turnParameter; } npcData.walkSound = AssetLoader.GetAssetInstanceID(walkSound); npcData.runSound = AssetLoader.GetAssetInstanceID(runSound); npcData.speechLabel = GetName(); npcData.displayLineID = displayLineID; npcData.portraitGraphic = AssetLoader.GetAssetInstanceID(portraitIcon.texture); npcData.walkSpeed = walkSpeedScale; npcData.runSpeed = runSpeedScale; // Rendering npcData.lockDirection = lockDirection; npcData.lockScale = lockScale; if (spriteChild && spriteChild.GetComponent <FollowSortingMap>()) { npcData.lockSorting = spriteChild.GetComponent <FollowSortingMap>().lockSorting; } else if (GetComponent <FollowSortingMap>()) { npcData.lockSorting = GetComponent <FollowSortingMap>().lockSorting; } else { npcData.lockSorting = false; } npcData.spriteDirection = spriteDirection; npcData.spriteScale = spriteScale; if (spriteChild && spriteChild.GetComponent <Renderer>()) { npcData.sortingOrder = spriteChild.GetComponent <Renderer>().sortingOrder; npcData.sortingLayer = spriteChild.GetComponent <Renderer>().sortingLayerName; } else if (GetComponent <Renderer>()) { npcData.sortingOrder = GetComponent <Renderer>().sortingOrder; npcData.sortingLayer = GetComponent <Renderer>().sortingLayerName; } npcData.pathID = 0; npcData.lastPathID = 0; if (GetPath()) { npcData.targetNode = GetTargetNode(); npcData.prevNode = GetPreviousNode(); npcData.isRunning = isRunning; npcData.pathAffectY = GetPath().affectY; if (GetPath() == GetComponent <Paths>()) { npcData.pathData = Serializer.CreatePathData(GetComponent <Paths>()); } else { if (GetPath().GetComponent <ConstantID>()) { npcData.pathID = GetPath().GetComponent <ConstantID>().constantID; } else { ACDebug.LogWarning("Want to save path data for " + name + " but path has no ID!", gameObject); } } } if (GetLastPath()) { npcData.lastTargetNode = GetLastTargetNode(); npcData.lastPrevNode = GetLastPrevNode(); if (GetLastPath().GetComponent <ConstantID>()) { npcData.lastPathID = GetLastPath().GetComponent <ConstantID>().constantID; } else { ACDebug.LogWarning("Want to save previous path data for " + name + " but path has no ID!", gameObject); } } if (followTarget) { if (!followTargetIsPlayer) { if (followTarget.GetComponent <ConstantID>()) { npcData.followTargetID = followTarget.GetComponent <ConstantID>().constantID; npcData.followTargetIsPlayer = followTargetIsPlayer; npcData.followFrequency = followFrequency; npcData.followDistance = followDistance; npcData.followDistanceMax = followDistanceMax; npcData.followFaceWhenIdle = followFaceWhenIdle; npcData.followRandomDirection = followRandomDirection; } else { ACDebug.LogWarning("Want to save follow data for " + name + " but " + followTarget.name + " has no ID!", gameObject); } } else { npcData.followTargetID = 0; npcData.followTargetIsPlayer = followTargetIsPlayer; npcData.followFrequency = followFrequency; npcData.followDistance = followDistance; npcData.followDistanceMax = followDistanceMax; //followFaceWhenIdle = false; npcData.followFaceWhenIdle = followFaceWhenIdle; npcData.followRandomDirection = followRandomDirection; } } else { npcData.followTargetID = 0; npcData.followTargetIsPlayer = false; npcData.followFrequency = 0f; npcData.followDistance = 0f; npcData.followDistanceMax = 0f; npcData.followFaceWhenIdle = false; npcData.followRandomDirection = false; } if (headFacing == HeadFacing.Manual && headTurnTarget != null) { npcData.isHeadTurning = true; npcData.headTargetID = Serializer.GetConstantID(headTurnTarget); if (npcData.headTargetID == 0) { ACDebug.LogWarning("The NPC " + gameObject.name + "'s head-turning target Transform, " + headTurnTarget + ", was not saved because it has no Constant ID", gameObject); } npcData.headTargetX = headTurnTargetOffset.x; npcData.headTargetY = headTurnTargetOffset.y; npcData.headTargetZ = headTurnTargetOffset.z; } else { npcData.isHeadTurning = false; npcData.headTargetID = 0; npcData.headTargetX = 0f; npcData.headTargetY = 0f; npcData.headTargetZ = 0f; } if (GetComponentInChildren <FollowSortingMap>() != null) { FollowSortingMap followSortingMap = GetComponentInChildren <FollowSortingMap>(); npcData.followSortingMap = followSortingMap.followSortingMap; if (!npcData.followSortingMap && followSortingMap.GetSortingMap() != null) { if (followSortingMap.GetSortingMap().GetComponent <ConstantID>() != null) { npcData.customSortingMapID = followSortingMap.GetSortingMap().GetComponent <ConstantID>().constantID; } else { ACDebug.LogWarning("The NPC " + gameObject.name + "'s SortingMap, " + followSortingMap.GetSortingMap().name + ", was not saved because it has no Constant ID"); npcData.customSortingMapID = 0; } } else { npcData.customSortingMapID = 0; } } else { npcData.followSortingMap = false; npcData.customSortingMapID = 0; } return(npcData); }
private void SaveSceneData(SubScene subScene = null) { Scene scene = (subScene) ? subScene.gameObject.scene : SceneChanger.CurrentScene; SceneSettings sceneSettings = (subScene == null) ? KickStarter.sceneSettings : subScene.SceneSettings; LocalVariables localVariables = (subScene == null) ? KickStarter.localVariables : subScene.LocalVariables; List <TransformData> thisLevelTransforms = PopulateTransformData(scene); List <ScriptData> thisLevelScripts = PopulateScriptData(scene); SingleLevelData thisLevelData = new SingleLevelData(); thisLevelData.sceneNumber = (subScene == null) ? SceneChanger.CurrentSceneIndex : subScene.SceneIndex; thisLevelData.activeLists = KickStarter.actionListManager.GetSaveData(subScene); if (sceneSettings) { if (sceneSettings.navMesh) { thisLevelData.navMesh = Serializer.GetConstantID(sceneSettings.navMesh.gameObject, false); } if (sceneSettings.defaultPlayerStart) { thisLevelData.playerStart = Serializer.GetConstantID(sceneSettings.defaultPlayerStart.gameObject, false); } if (sceneSettings.sortingMap) { thisLevelData.sortingMap = Serializer.GetConstantID(sceneSettings.sortingMap.gameObject, false); } if (sceneSettings.cutsceneOnLoad) { thisLevelData.onLoadCutscene = Serializer.GetConstantID(sceneSettings.cutsceneOnLoad.gameObject, false); } if (sceneSettings.cutsceneOnStart) { thisLevelData.onStartCutscene = Serializer.GetConstantID(sceneSettings.cutsceneOnStart.gameObject, false); } if (sceneSettings.tintMap) { thisLevelData.tintMap = Serializer.GetConstantID(sceneSettings.tintMap.gameObject, false); } } if (localVariables) { thisLevelData.localVariablesData = SaveSystem.CreateVariablesData(localVariables.localVars, false, VariableLocation.Local); } thisLevelData.allTransformData = thisLevelTransforms; thisLevelData.allScriptData = thisLevelScripts; if (allLevelData == null) { allLevelData = new List <SingleLevelData>(); } for (int i = 0; i < allLevelData.Count; i++) { if (allLevelData[i].DataMatchesScene(thisLevelData)) { allLevelData[i] = thisLevelData; return; } } allLevelData.Add(thisLevelData); }
/** * <summary>Updates a PlayerData class with its own variables that need saving.</summary> * <param name = "playerData">The original PlayerData class</param> * <returns>The updated PlayerData class</returns> */ public PlayerData SaveData(PlayerData playerData) { playerData.playerID = ID; playerData.playerLocX = transform.position.x; playerData.playerLocY = transform.position.y; playerData.playerLocZ = transform.position.z; playerData.playerRotY = TransformRotation.eulerAngles.y; playerData.inCustomCharState = (charState == CharState.Custom && GetAnimator() != null && GetAnimator().GetComponent <RememberAnimator>()); playerData.playerWalkSpeed = walkSpeedScale; playerData.playerRunSpeed = runSpeedScale; playerData.playerUpLock = upMovementLocked; playerData.playerDownLock = downMovementLocked; playerData.playerLeftlock = leftMovementLocked; playerData.playerRightLock = rightMovementLocked; playerData.playerRunLock = (int)runningLocked; playerData.playerFreeAimLock = freeAimLocked; // Animation clips playerData = GetAnimEngine().SavePlayerData(playerData, this); // Sound playerData.playerWalkSound = AssetLoader.GetAssetInstanceID(walkSound); playerData.playerRunSound = AssetLoader.GetAssetInstanceID(runSound); // Portrait graphic playerData.playerPortraitGraphic = AssetLoader.GetAssetInstanceID(portraitIcon.texture); // Speech label playerData.playerSpeechLabel = GetName(); playerData.playerDisplayLineID = displayLineID; // Rendering playerData.playerLockDirection = lockDirection; playerData.playerLockScale = lockScale; if (spriteChild && spriteChild.GetComponent <FollowSortingMap>()) { playerData.playerLockSorting = spriteChild.GetComponent <FollowSortingMap>().lockSorting; } else if (GetComponent <FollowSortingMap>()) { playerData.playerLockSorting = GetComponent <FollowSortingMap>().lockSorting; } else { playerData.playerLockSorting = false; } playerData.playerSpriteDirection = GetSpriteDirectionToSave(); playerData.playerSpriteScale = spriteScale; if (spriteChild && spriteChild.GetComponent <Renderer>()) { playerData.playerSortingOrder = spriteChild.GetComponent <Renderer>().sortingOrder; playerData.playerSortingLayer = spriteChild.GetComponent <Renderer>().sortingLayerName; } else if (GetComponent <Renderer>()) { playerData.playerSortingOrder = GetComponent <Renderer>().sortingOrder; playerData.playerSortingLayer = GetComponent <Renderer>().sortingLayerName; } playerData.playerActivePath = 0; playerData.lastPlayerActivePath = 0; if (GetPath()) { playerData.playerTargetNode = GetTargetNode(); playerData.playerPrevNode = GetPreviousNode(); playerData.playerIsRunning = isRunning; playerData.playerPathAffectY = activePath.affectY; if (GetComponent <Paths>() && GetPath() == GetComponent <Paths>()) { playerData.playerPathData = Serializer.CreatePathData(GetComponent <Paths>()); playerData.playerLockedPath = false; } else { playerData.playerPathData = string.Empty; playerData.playerActivePath = Serializer.GetConstantID(GetPath().gameObject); playerData.playerLockedPath = lockedPath; } } if (GetLastPath()) { playerData.lastPlayerTargetNode = GetLastTargetNode(); playerData.lastPlayerPrevNode = GetLastPrevNode(); playerData.lastPlayerActivePath = Serializer.GetConstantID(GetLastPath().gameObject); } playerData.playerIgnoreGravity = ignoreGravity; // Head target playerData.playerLockHotspotHeadTurning = lockHotspotHeadTurning; if (headFacing == HeadFacing.Manual && headTurnTarget != null) { playerData.isHeadTurning = true; playerData.headTargetID = Serializer.GetConstantID(headTurnTarget); if (playerData.headTargetID == 0) { ACDebug.LogWarning("The Player's head-turning target Transform, " + headTurnTarget + ", was not saved because it has no Constant ID", gameObject); } playerData.headTargetX = headTurnTargetOffset.x; playerData.headTargetY = headTurnTargetOffset.y; playerData.headTargetZ = headTurnTargetOffset.z; } else { playerData.isHeadTurning = false; playerData.headTargetID = 0; playerData.headTargetX = 0f; playerData.headTargetY = 0f; playerData.headTargetZ = 0f; } FollowSortingMap followSortingMap = GetComponentInChildren <FollowSortingMap>(); if (followSortingMap != null) { playerData.followSortingMap = followSortingMap.followSortingMap; if (!playerData.followSortingMap && followSortingMap.GetSortingMap() != null) { if (followSortingMap.GetSortingMap().GetComponent <ConstantID>() != null) { playerData.customSortingMapID = followSortingMap.GetSortingMap().GetComponent <ConstantID>().constantID; } else { ACDebug.LogWarning("The Player's SortingMap, " + followSortingMap.GetSortingMap().name + ", was not saved because it has no Constant ID", gameObject); playerData.customSortingMapID = 0; } } else { playerData.customSortingMapID = 0; } } else { playerData.followSortingMap = false; playerData.customSortingMapID = 0; } // Inactive Player follow if (followTarget != null && !IsActivePlayer()) { if (!followTargetIsPlayer) { if (followTarget.GetComponent <ConstantID> ()) { playerData.followTargetID = followTarget.GetComponent <ConstantID> ().constantID; playerData.followTargetIsPlayer = followTargetIsPlayer; playerData.followFrequency = followFrequency; playerData.followDistance = followDistance; playerData.followDistanceMax = followDistanceMax; playerData.followFaceWhenIdle = followFaceWhenIdle; playerData.followRandomDirection = followRandomDirection; } else { ACDebug.LogWarning("Want to save follow data for " + name + " but " + followTarget.name + " has no ID!", gameObject); } } else { playerData.followTargetID = 0; playerData.followTargetIsPlayer = followTargetIsPlayer; playerData.followFrequency = followFrequency; playerData.followDistance = followDistance; playerData.followDistanceMax = followDistanceMax; playerData.followFaceWhenIdle = followFaceWhenIdle; playerData.followRandomDirection = followRandomDirection; } } else { playerData.followTargetID = 0; playerData.followTargetIsPlayer = false; playerData.followFrequency = 0f; playerData.followDistance = 0f; playerData.followDistanceMax = 0f; playerData.followFaceWhenIdle = false; playerData.followRandomDirection = false; } playerData.leftHandIKState = LeftHandIKController.CreateSaveData(); playerData.rightHandIKState = RightHandIKController.CreateSaveData(); playerData.spriteDirectionData = spriteDirectionData.SaveData(); // Remember scripts if (!IsLocalPlayer() && gameObject.activeInHierarchy) { playerData = KickStarter.levelStorage.SavePlayerData(this, playerData); } return(playerData); }