public override void LoadPlayerData(PlayerData playerData, Player player) { player.idleAnim = AssetLoader.RetrieveAsset <AnimationClip> (player.idleAnim, playerData.playerIdleAnim); player.walkAnim = AssetLoader.RetrieveAsset <AnimationClip> (player.walkAnim, playerData.playerWalkAnim); player.talkAnim = AssetLoader.RetrieveAsset <AnimationClip> (player.talkAnim, playerData.playerTalkAnim); player.runAnim = AssetLoader.RetrieveAsset <AnimationClip> (player.runAnim, playerData.playerRunAnim); }
public override void LoadNPCData(NPCData npcData, NPC npc) { npc.idleAnim = AssetLoader.RetrieveAsset(npc.idleAnim, npcData.idleAnim); npc.walkAnim = AssetLoader.RetrieveAsset(npc.walkAnim, npcData.walkAnim); npc.runAnim = AssetLoader.RetrieveAsset(npc.runAnim, npcData.talkAnim); npc.talkAnim = AssetLoader.RetrieveAsset(npc.talkAnim, npcData.runAnim); }
public override void LoadData(string stringData) { AnimatorData data = Serializer.LoadScriptData <AnimatorData> (stringData); if (data == null) { loadedData = false; return; } SavePrevented = data.savePrevented; if (savePrevented) { return; } if (!string.IsNullOrEmpty(data.controllerID)) { RuntimeAnimatorController runtimeAnimatorController = AssetLoader.RetrieveAsset(_animator.runtimeAnimatorController, data.controllerID); if (runtimeAnimatorController != null) { _animator.runtimeAnimatorController = runtimeAnimatorController; } } StringToParameterValues(Animator.parameters, data.parameterData); StringToLayerWeights(data.layerWeightData); StringToStates(data.stateData); loadedData = true; }
/** * <summary>Updates its own variables from a SoundData class.</summary> * <param name = "soundData">The SoundData class to load from</param> */ public void LoadData(SoundData soundData) { if (soundData.isPlaying) { audioSource.clip = AssetLoader.RetrieveAsset(audioSource.clip, soundData.clipID); PlayAtPoint(soundData.isLooping, soundData.samplePoint); } else { Stop(); } relativeVolume = soundData.relativeVolume; maxVolume = soundData.maxVolume; smoothVolume = soundData.smoothVolume; fadeTime = soundData.fadeTime; originalFadeTime = soundData.originalFadeTime; fadeType = (FadeType)soundData.fadeType; otherVolume = soundData.otherVolume; originalRelativeVolume = soundData.originalRelativeVolume; targetRelativeVolume = soundData.targetRelativeVolume; relativeChangeTime = soundData.relativeChangeTime; originalRelativeChangeTime = soundData.originalRelativeChangeTime; }
/** * <summary>Deserialises a string of data, and restores the GameObject to its previous state.</summary> * <param name = "stringData">The data, serialised as a string</param> */ public override void LoadData(string stringData) { MaterialData data = Serializer.LoadScriptData <MaterialData> (stringData); if (data == null) { return; } SavePrevented = data.savePrevented; if (savePrevented) { return; } Material[] mats = GetComponent <Renderer>().materials; string[] materialIDs = StringToStringArray(data._materialIDs); for (int i = 0; i < materialIDs.Length; i++) { if (mats.Length >= i) { Material _material = AssetLoader.RetrieveAsset(mats[i], materialIDs[i]); if (_material != null) { mats[i] = _material; } } } GetComponent <Renderer>().materials = mats; }
/** * <summary>Deserialises a string of data, and restores the GameObject to its previous state.</summary> * <param name = "stringData">The data, serialised as a string</param> */ public override void LoadData(string stringData, bool restoringSaveFile = false) { SoundData data = Serializer.LoadScriptData <SoundData> (stringData); if (data == null) { return; } Sound sound = GetComponent <Sound>(); AudioSource audioSource = GetComponent <AudioSource>(); sound.relativeVolume = data.relativeVolume; if (!restoringSaveFile && sound.surviveSceneChange) { return; } if (data.isPlaying) { audioSource.clip = AssetLoader.RetrieveAsset(audioSource.clip, data.clipID); sound.PlayAtPoint(data.isLooping, data.samplePoint); } else { sound.Stop(); } }
/** * <summary>Deserialises a string of data, and restores the GameObject to its previous state.</summary> * <param name = "stringData">The data, serialised as a string</param> */ public override void LoadData(string stringData) { VideoPlayerData data = Serializer.LoadScriptData <VideoPlayerData> (stringData); if (data == null) { return; } SavePrevented = data.savePrevented; if (savePrevented) { return; } if (GetComponent <VideoPlayer>()) { VideoPlayer videoPlayer = GetComponent <VideoPlayer>(); if (saveClipAsset) { VideoClip _clip = AssetLoader.RetrieveAsset(videoPlayer.clip, data.clipAssetID); if (_clip != null) { videoPlayer.clip = _clip; } } //videoPlayer.frame = data.currentFrame; videoPlayer.time = data.currentTime; if (data.isPlaying) { if (!videoPlayer.isPrepared) { loadTime = data.currentTime; playAfterLoad = true; videoPlayer.prepareCompleted += OnPrepareVideo; videoPlayer.Prepare(); } else { videoPlayer.Play(); } } else { if (data.currentTime > 0f) { if (!videoPlayer.isPrepared) { loadTime = data.currentTime; playAfterLoad = false; videoPlayer.prepareCompleted += OnPrepareVideo; videoPlayer.Prepare(); } else { videoPlayer.Pause(); } } else { videoPlayer.Stop(); } } } }
/** * <summary>Restores the class's data from a saved string.</summary> * <param name = "data">The saved string to restore from</param> * <param name = "subScene">If set, only data for a given subscene will be loaded. If null, only data for the active scene will be loaded</param> * <returns>True if the data was successfully restored</returns> */ public bool LoadData(string dataString, SubScene subScene = null) { if (string.IsNullOrEmpty(dataString)) { return(false); } string[] dataArray = dataString.Split(SaveSystem.colon[0]); // ID string listName = AdvGame.PrepareStringForLoading(dataArray[0]); resumeIndices = new int[0]; // Resume string[] resumeData = dataArray[1].Split("]"[0]); if (resumeData.Length > 0) { List <int> resumeIndexList = new List <int>(); for (int i = 0; i < resumeData.Length; i++) { int resumeIndex = -1; if (int.TryParse(resumeData[i], out resumeIndex) && resumeIndex >= 0) { resumeIndexList.Add(resumeIndex); } } resumeIndices = resumeIndexList.ToArray(); } // StartIndex int.TryParse(dataArray[2], out startIndex); // Skip queue int j = 0; int.TryParse(dataArray[3], out j); inSkipQueue = (j == 1) ? true : false; // IsRunning j = 0; int.TryParse(dataArray[4], out j); isRunning = (j == 1) ? true : false; // Conversation on end int convID = 0; int.TryParse(dataArray[5], out convID); if (convID != 0) { if (subScene != null) { conversationOnEnd = ConstantID.GetComponent <Conversation> (convID, subScene.gameObject.scene); } else { conversationOnEnd = ConstantID.GetComponent <Conversation> (convID); } } // Parameter data parameterData = dataArray[6]; // ActionList int ID = 0; if (int.TryParse(listName, out ID)) { // Scene ConstantID constantID = null; if (subScene != null) { constantID = ConstantID.GetComponent(ID, subScene.gameObject.scene); } else { constantID = ConstantID.GetComponent(ID); } if (constantID && constantID.GetComponent <ActionList>() != null) { actionList = constantID.GetComponent <ActionList>(); return(true); } } else { // Asset file ActionListAsset tempAsset = ScriptableObject.CreateInstance <ActionListAsset> (); actionListAsset = AssetLoader.RetrieveAsset <ActionListAsset> (tempAsset, listName); if (actionListAsset && actionListAsset != tempAsset) { return(true); } ACDebug.LogWarning("Could not restore data related to the ActionList asset '" + listName + "' - to restore it correctly, the asset must be placed in a folder named Resources."); } return(false); }
/** * <summary>Updates its own variables from a PlayerData class.</summary> * <param name = "playerData">The PlayerData class to load from</param> * <param name = "justAnimationData">If True, then only animation data (and sound) changes will be loaded, as opposed to position, rotaion, etc</param> */ public void LoadPlayerData(PlayerData playerData, bool justAnimationData = false) { if (!justAnimationData) { Teleport(new Vector3(playerData.playerLocX, playerData.playerLocY, playerData.playerLocZ)); SetRotation(playerData.playerRotY); SetMoveDirectionAsForward(); } walkSpeedScale = playerData.playerWalkSpeed; runSpeedScale = playerData.playerRunSpeed; // Animation clips if (animationEngine == AnimationEngine.Sprites2DToolkit || animationEngine == AnimationEngine.SpritesUnity) { idleAnimSprite = playerData.playerIdleAnim; walkAnimSprite = playerData.playerWalkAnim; talkAnimSprite = playerData.playerTalkAnim; runAnimSprite = playerData.playerRunAnim; } else if (animationEngine == AnimationEngine.Legacy) { idleAnim = AssetLoader.RetrieveAsset <AnimationClip> (idleAnim, playerData.playerIdleAnim); walkAnim = AssetLoader.RetrieveAsset <AnimationClip> (walkAnim, playerData.playerWalkAnim); talkAnim = AssetLoader.RetrieveAsset <AnimationClip> (talkAnim, playerData.playerTalkAnim); runAnim = AssetLoader.RetrieveAsset <AnimationClip> (runAnim, playerData.playerRunAnim); } else if (animationEngine == AnimationEngine.Mecanim) { moveSpeedParameter = playerData.playerWalkAnim; talkParameter = playerData.playerTalkAnim; turnParameter = playerData.playerRunAnim; } // Sound walkSound = AssetLoader.RetrieveAsset(walkSound, playerData.playerWalkSound); runSound = AssetLoader.RetrieveAsset(runSound, playerData.playerRunSound); // Portrait graphic portraitIcon.texture = AssetLoader.RetrieveAsset(portraitIcon.texture, playerData.playerPortraitGraphic); // Speech label if (playerData.playerSpeechLabel != "") { SetName(playerData.playerSpeechLabel, playerData.playerDisplayLineID); } speechLabel = playerData.playerSpeechLabel; // Rendering lockDirection = playerData.playerLockDirection; lockScale = playerData.playerLockScale; if (spriteChild && spriteChild.GetComponent <FollowSortingMap>()) { spriteChild.GetComponent <FollowSortingMap>().lockSorting = playerData.playerLockSorting; } else if (GetComponent <FollowSortingMap>()) { GetComponent <FollowSortingMap>().lockSorting = playerData.playerLockSorting; } else { ReleaseSorting(); } if (playerData.playerLockDirection) { spriteDirection = playerData.playerSpriteDirection; } if (playerData.playerLockScale) { spriteScale = playerData.playerSpriteScale; } if (playerData.playerLockSorting) { if (spriteChild && spriteChild.GetComponent <Renderer>()) { spriteChild.GetComponent <Renderer>().sortingOrder = playerData.playerSortingOrder; spriteChild.GetComponent <Renderer>().sortingLayerName = playerData.playerSortingLayer; } else if (GetComponent <Renderer>()) { GetComponent <Renderer>().sortingOrder = playerData.playerSortingOrder; GetComponent <Renderer>().sortingLayerName = playerData.playerSortingLayer; } } if (!justAnimationData) { // Active path Halt(); ForceIdle(); if (playerData.playerPathData != null && playerData.playerPathData != "" && GetComponent <Paths>()) { Paths savedPath = GetComponent <Paths>(); savedPath = Serializer.RestorePathData(savedPath, playerData.playerPathData); SetPath(savedPath, playerData.playerTargetNode, playerData.playerPrevNode, playerData.playerPathAffectY); isRunning = playerData.playerIsRunning; lockedPath = false; } else if (playerData.playerActivePath != 0) { Paths savedPath = Serializer.returnComponent <Paths> (playerData.playerActivePath); if (savedPath) { lockedPath = playerData.playerLockedPath; if (lockedPath) { SetLockedPath(savedPath); } else { SetPath(savedPath, playerData.playerTargetNode, playerData.playerPrevNode); } } } // Previous path if (playerData.lastPlayerActivePath != 0) { Paths savedPath = Serializer.returnComponent <Paths> (playerData.lastPlayerActivePath); if (savedPath) { SetLastPath(savedPath, playerData.lastPlayerTargetNode, playerData.lastPlayerPrevNode); } } // Head target lockHotspotHeadTurning = playerData.playerLockHotspotHeadTurning; if (playerData.isHeadTurning) { ConstantID _headTargetID = Serializer.returnComponent <ConstantID> (playerData.headTargetID); if (_headTargetID != null) { SetHeadTurnTarget(_headTargetID.transform, new Vector3(playerData.headTargetX, playerData.headTargetY, playerData.headTargetZ), true); } else { ClearHeadTurnTarget(true); } } else { ClearHeadTurnTarget(true); } ignoreGravity = playerData.playerIgnoreGravity; if (GetComponentsInChildren <FollowSortingMap>() != null) { FollowSortingMap[] followSortingMaps = GetComponentsInChildren <FollowSortingMap>(); SortingMap customSortingMap = Serializer.returnComponent <SortingMap> (playerData.customSortingMapID); foreach (FollowSortingMap followSortingMap in followSortingMaps) { followSortingMap.followSortingMap = playerData.followSortingMap; if (!playerData.followSortingMap) { followSortingMap.SetSortingMap(customSortingMap); } } } } ignoreGravity = playerData.playerIgnoreGravity; }
/** * <summary>Updates its own variables from a NPCData class.</summary> * <param name = "data">The NPCData class to load from</param> */ public void LoadData(NPCData data) { charState = (data.inCustomCharState) ? CharState.Custom : CharState.Idle; EndPath(); if (animationEngine == AnimationEngine.Sprites2DToolkit || animationEngine == AnimationEngine.SpritesUnity) { idleAnimSprite = data.idleAnim; walkAnimSprite = data.walkAnim; talkAnimSprite = data.talkAnim; runAnimSprite = data.runAnim; } else if (animationEngine == AnimationEngine.Legacy) { idleAnim = AssetLoader.RetrieveAsset(idleAnim, data.idleAnim); walkAnim = AssetLoader.RetrieveAsset(walkAnim, data.walkAnim); runAnim = AssetLoader.RetrieveAsset(runAnim, data.talkAnim); talkAnim = AssetLoader.RetrieveAsset(talkAnim, data.runAnim); } else if (animationEngine == AnimationEngine.Mecanim) { moveSpeedParameter = data.walkAnim; talkParameter = data.talkAnim; turnParameter = data.runAnim;; } walkSound = AssetLoader.RetrieveAsset(walkSound, data.walkSound); runSound = AssetLoader.RetrieveAsset(runSound, data.runSound); if (data.speechLabel != "") { SetName(data.speechLabel, data.displayLineID); } portraitIcon.texture = AssetLoader.RetrieveAsset(portraitIcon.texture, data.portraitGraphic); portraitIcon.ClearSprites(); portraitIcon.ClearCache(); walkSpeedScale = data.walkSpeed; runSpeedScale = data.runSpeed; // Rendering lockDirection = data.lockDirection; lockScale = data.lockScale; if (spriteChild && spriteChild.GetComponent <FollowSortingMap>()) { spriteChild.GetComponent <FollowSortingMap>().lockSorting = data.lockSorting; } else if (GetComponent <FollowSortingMap>()) { GetComponent <FollowSortingMap>().lockSorting = data.lockSorting; } else { ReleaseSorting(); } if (data.lockDirection) { spriteDirection = data.spriteDirection; } if (data.lockScale) { spriteScale = data.spriteScale; } if (data.lockSorting) { if (spriteChild && spriteChild.GetComponent <Renderer>()) { spriteChild.GetComponent <Renderer>().sortingOrder = data.sortingOrder; spriteChild.GetComponent <Renderer>().sortingLayerName = data.sortingLayer; } else if (GetComponent <Renderer>()) { GetComponent <Renderer>().sortingOrder = data.sortingOrder; GetComponent <Renderer>().sortingLayerName = data.sortingLayer; } } AC.Char charToFollow = null; if (data.followTargetID != 0) { RememberNPC followNPC = Serializer.returnComponent <RememberNPC> (data.followTargetID); if (followNPC.GetComponent <AC.Char>()) { charToFollow = followNPC.GetComponent <AC.Char>(); } } if (charToFollow != null || (data.followTargetIsPlayer && KickStarter.player != null)) { FollowAssign(charToFollow, data.followTargetIsPlayer, data.followFrequency, data.followDistance, data.followDistanceMax, data.followFaceWhenIdle, data.followRandomDirection); } else { StopFollowing(); } Halt(); if (data.pathData != null && data.pathData != "" && GetComponent <Paths>()) { Paths savedPath = GetComponent <Paths>(); savedPath = Serializer.RestorePathData(savedPath, data.pathData); SetPath(savedPath, data.targetNode, data.prevNode, data.pathAffectY); isRunning = data.isRunning; } else if (data.pathID != 0) { Paths pathObject = Serializer.returnComponent <Paths> (data.pathID); if (pathObject != null) { SetPath(pathObject, data.targetNode, data.prevNode); } else { ACDebug.LogWarning("Trying to assign a path for NPC " + this.name + ", but the path was not found - was it deleted?", gameObject); } } if (data.lastPathID != 0) { Paths pathObject = Serializer.returnComponent <Paths> (data.lastPathID); if (pathObject != null) { SetLastPath(pathObject, data.lastTargetNode, data.lastPrevNode); } else { ACDebug.LogWarning("Trying to assign the previous path for NPC " + this.name + ", but the path was not found - was it deleted?", gameObject); } } // Head target if (data.isHeadTurning) { ConstantID _headTargetID = Serializer.returnComponent <ConstantID> (data.headTargetID); if (_headTargetID != null) { SetHeadTurnTarget(_headTargetID.transform, new Vector3(data.headTargetX, data.headTargetY, data.headTargetZ), true); } else { ClearHeadTurnTarget(true); } } else { ClearHeadTurnTarget(true); } if (GetComponentsInChildren <FollowSortingMap>() != null) { FollowSortingMap[] followSortingMaps = GetComponentsInChildren <FollowSortingMap>(); SortingMap customSortingMap = Serializer.returnComponent <SortingMap> (data.customSortingMapID); foreach (FollowSortingMap followSortingMap in followSortingMaps) { followSortingMap.followSortingMap = data.followSortingMap; if (!data.followSortingMap && customSortingMap != null) { followSortingMap.SetSortingMap(customSortingMap); } else { followSortingMap.SetSortingMap(KickStarter.sceneSettings.sortingMap); } } } }
/** * <summary>Deserialises a string of data, and restores the GameObject to its previous state.</summary> * <param name = "stringData">The data, serialised as a string</param> * <param name = "restoringSaveFile">True if the game is currently loading a saved game file, as opposed to just switching scene</param> */ public override void LoadData(string stringData, bool restoringSaveFile = false) { TimelineData data = Serializer.LoadScriptData <TimelineData> (stringData); if (data == null) { return; } SavePrevented = data.savePrevented; if (savePrevented) { return; } PlayableDirector director = GetComponent <PlayableDirector>(); if (director != null && director.playableAsset != null) { TimelineAsset timeline = (TimelineAsset)director.playableAsset; if (timeline != null) { if (saveTimelineAsset) { TimelineAsset _timeline = AssetLoader.RetrieveAsset(timeline, data.timelineAssetID); if (_timeline != null) { director.playableAsset = _timeline; timeline = _timeline; } } if (saveBindings && !string.IsNullOrEmpty(data.trackObjectData)) { string[] bindingIDs = data.trackObjectData.Split(","[0]); for (int i = 0; i < bindingIDs.Length; i++) { int bindingID = 0; if (int.TryParse(bindingIDs[i], out bindingID)) { if (bindingID != 0) { var track = timeline.GetOutputTrack(i); if (track != null) { ConstantID savedObject = Serializer.returnComponent <ConstantID> (bindingID, gameObject); if (savedObject != null) { director.SetGenericBinding(track, savedObject.gameObject); } } } } } } } } director.time = data.currentTime; if (data.isPlaying) { director.Play(); } else { director.Stop(); } }
/** * <summary>Updates its own variables from a PlayerData class.</summary> * <param name = "playerData">The PlayerData class to load from</param> */ public void LoadData(PlayerData playerData) { upMovementLocked = playerData.playerUpLock; downMovementLocked = playerData.playerDownLock; leftMovementLocked = playerData.playerLeftlock; rightMovementLocked = playerData.playerRightLock; runningLocked = (PlayerMoveLock)playerData.playerRunLock; freeAimLocked = playerData.playerFreeAimLock; charState = (playerData.inCustomCharState) ? CharState.Custom : CharState.Idle; playerData.UpdateFromTempPosition(this); Teleport(new Vector3(playerData.playerLocX, playerData.playerLocY, playerData.playerLocZ)); SetRotation(playerData.playerRotY); SetMoveDirectionAsForward(); walkSpeedScale = playerData.playerWalkSpeed; runSpeedScale = playerData.playerRunSpeed; // Animation clips GetAnimEngine().LoadPlayerData(playerData, this); // Sound walkSound = AssetLoader.RetrieveAsset(walkSound, playerData.playerWalkSound); runSound = AssetLoader.RetrieveAsset(runSound, playerData.playerRunSound); // Portrait graphic portraitIcon.ReplaceTexture(AssetLoader.RetrieveAsset(portraitIcon.texture, playerData.playerPortraitGraphic)); // Speech label SetName(playerData.playerSpeechLabel, playerData.playerDisplayLineID); // Rendering lockDirection = playerData.playerLockDirection; lockScale = playerData.playerLockScale; if (spriteChild && spriteChild.GetComponent <FollowSortingMap>()) { spriteChild.GetComponent <FollowSortingMap>().lockSorting = playerData.playerLockSorting; } else if (GetComponent <FollowSortingMap>()) { GetComponent <FollowSortingMap>().lockSorting = playerData.playerLockSorting; } else { ReleaseSorting(); } if (playerData.playerLockDirection) { spriteDirection = playerData.playerSpriteDirection; UpdateFrameFlipping(true); } if (playerData.playerLockScale) { spriteScale = playerData.playerSpriteScale; } if (playerData.playerLockSorting) { if (spriteChild && spriteChild.GetComponent <Renderer>()) { spriteChild.GetComponent <Renderer>().sortingOrder = playerData.playerSortingOrder; spriteChild.GetComponent <Renderer>().sortingLayerName = playerData.playerSortingLayer; } else if (GetComponent <Renderer>()) { GetComponent <Renderer>().sortingOrder = playerData.playerSortingOrder; GetComponent <Renderer>().sortingLayerName = playerData.playerSortingLayer; } } // Inactive following AC.Char charToFollow = null; if (playerData.followTargetID != 0) { RememberNPC followNPC = ConstantID.GetComponent <RememberNPC> (playerData.followTargetID); if (followNPC.GetComponent <AC.Char> ()) { charToFollow = followNPC.GetComponent <AC.Char> (); } } if (charToFollow != null || (playerData.followTargetIsPlayer && KickStarter.player != null)) { FollowAssign(charToFollow, playerData.followTargetIsPlayer, playerData.followFrequency, playerData.followDistance, playerData.followDistanceMax, playerData.followFaceWhenIdle, playerData.followRandomDirection); } else { StopFollowing(); } // Active path Halt(); ForceIdle(); if (!string.IsNullOrEmpty(playerData.playerPathData) && GetComponent <Paths>()) { Paths savedPath = GetComponent <Paths>(); savedPath = Serializer.RestorePathData(savedPath, playerData.playerPathData); SetPath(savedPath, playerData.playerTargetNode, playerData.playerPrevNode, playerData.playerPathAffectY); isRunning = playerData.playerIsRunning; lockedPath = false; } else if (playerData.playerActivePath != 0) { Paths savedPath = ConstantID.GetComponent <Paths> (playerData.playerActivePath); if (savedPath) { lockedPath = playerData.playerLockedPath; if (lockedPath) { SetLockedPath(savedPath); } else { SetPath(savedPath, playerData.playerTargetNode, playerData.playerPrevNode); } } else { Halt(); ForceIdle(); } } else { Halt(); ForceIdle(); } // Previous path if (playerData.lastPlayerActivePath != 0) { Paths savedPath = ConstantID.GetComponent <Paths> (playerData.lastPlayerActivePath); if (savedPath) { SetLastPath(savedPath, playerData.lastPlayerTargetNode, playerData.lastPlayerPrevNode); } } // Head target lockHotspotHeadTurning = playerData.playerLockHotspotHeadTurning; if (playerData.isHeadTurning) { ConstantID _headTargetID = ConstantID.GetComponent <ConstantID> (playerData.headTargetID); if (_headTargetID != null) { SetHeadTurnTarget(_headTargetID.transform, new Vector3(playerData.headTargetX, playerData.headTargetY, playerData.headTargetZ), true); } else { ClearHeadTurnTarget(true); } } else { ClearHeadTurnTarget(true); } ignoreGravity = playerData.playerIgnoreGravity; if (GetComponentsInChildren <FollowSortingMap>() != null) { FollowSortingMap[] followSortingMaps = GetComponentsInChildren <FollowSortingMap>(); SortingMap customSortingMap = ConstantID.GetComponent <SortingMap> (playerData.customSortingMapID); foreach (FollowSortingMap followSortingMap in followSortingMaps) { followSortingMap.followSortingMap = playerData.followSortingMap; if (!playerData.followSortingMap && customSortingMap != null) { followSortingMap.SetSortingMap(customSortingMap); } else { followSortingMap.SetSortingMap(KickStarter.sceneSettings.sortingMap); } } } ignoreGravity = playerData.playerIgnoreGravity; if (GetAnimEngine() != null && GetAnimEngine().IKEnabled) { LeftHandIKController.LoadData(playerData.leftHandIKState); RightHandIKController.LoadData(playerData.rightHandIKState); } _spriteDirectionData.LoadData(playerData.spriteDirectionData); // Remember scripts if (!IsLocalPlayer()) { KickStarter.levelStorage.LoadPlayerData(this, playerData); } }
public override void LoadData(string stringData) { NPCData data = Serializer.LoadScriptData <NPCData> (stringData); if (data == null) { return; } if (data.isOn) { gameObject.layer = LayerMask.NameToLayer(KickStarter.settingsManager.hotspotLayer); } else { gameObject.layer = LayerMask.NameToLayer(KickStarter.settingsManager.deactivatedLayer); } transform.position = new Vector3(data.LocX, data.LocY, data.LocZ); transform.eulerAngles = new Vector3(data.RotX, data.RotY, data.RotZ); transform.localScale = new Vector3(data.ScaleX, data.ScaleY, data.ScaleZ); if (GetComponent <NPC>()) { NPC npc = GetComponent <NPC>(); npc.EndPath(); if (npc.animationEngine == AnimationEngine.Sprites2DToolkit || npc.animationEngine == AnimationEngine.SpritesUnity) { npc.idleAnimSprite = data.idleAnim; npc.walkAnimSprite = data.walkAnim; npc.talkAnimSprite = data.talkAnim; npc.runAnimSprite = data.runAnim; } else if (npc.animationEngine == AnimationEngine.Legacy) { npc.idleAnim = AssetLoader.RetrieveAsset(npc.idleAnim, data.idleAnim); npc.walkAnim = AssetLoader.RetrieveAsset(npc.walkAnim, data.walkAnim); npc.runAnim = AssetLoader.RetrieveAsset(npc.runAnim, data.talkAnim); npc.talkAnim = AssetLoader.RetrieveAsset(npc.talkAnim, data.runAnim); } else if (npc.animationEngine == AnimationEngine.Mecanim) { npc.moveSpeedParameter = data.walkAnim; npc.talkParameter = data.talkAnim; npc.turnParameter = data.runAnim;; } npc.walkSound = AssetLoader.RetrieveAsset(npc.walkSound, data.walkSound); npc.runSound = AssetLoader.RetrieveAsset(npc.runSound, data.runSound); npc.speechLabel = data.speechLabel; npc.portraitIcon.texture = AssetLoader.RetrieveAsset(npc.portraitIcon.texture, data.portraitGraphic); npc.walkSpeedScale = data.walkSpeed; npc.runSpeedScale = data.runSpeed; // Rendering npc.lockDirection = data.lockDirection; npc.lockScale = data.lockScale; if (npc.spriteChild && npc.spriteChild.GetComponent <FollowSortingMap>()) { npc.spriteChild.GetComponent <FollowSortingMap>().lockSorting = data.lockSorting; } else if (npc.GetComponent <FollowSortingMap>()) { npc.GetComponent <FollowSortingMap>().lockSorting = data.lockSorting; } else { npc.ReleaseSorting(); } if (data.lockDirection) { npc.spriteDirection = data.spriteDirection; } if (data.lockScale) { npc.spriteScale = data.spriteScale; } if (data.lockSorting) { if (npc.spriteChild && npc.spriteChild.GetComponent <Renderer>()) { npc.spriteChild.GetComponent <Renderer>().sortingOrder = data.sortingOrder; npc.spriteChild.GetComponent <Renderer>().sortingLayerName = data.sortingLayer; } else if (npc.GetComponent <Renderer>()) { npc.GetComponent <Renderer>().sortingOrder = data.sortingOrder; npc.GetComponent <Renderer>().sortingLayerName = data.sortingLayer; } } AC.Char charToFollow = null; if (data.followTargetID != 0) { RememberNPC followNPC = Serializer.returnComponent <RememberNPC> (data.followTargetID); if (followNPC.GetComponent <AC.Char>()) { charToFollow = followNPC.GetComponent <AC.Char>(); } } npc.FollowAssign(charToFollow, data.followTargetIsPlayer, data.followFrequency, data.followDistance, data.followDistanceMax); npc.Halt(); if (data.pathData != null && data.pathData != "" && GetComponent <Paths>()) { Paths savedPath = GetComponent <Paths>(); savedPath = Serializer.RestorePathData(savedPath, data.pathData); npc.SetPath(savedPath, data.targetNode, data.prevNode, data.pathAffectY); npc.isRunning = data.isRunning; } else if (data.pathID != 0) { Paths pathObject = Serializer.returnComponent <Paths> (data.pathID); if (pathObject != null) { npc.SetPath(pathObject, data.targetNode, data.prevNode); } else { Debug.LogWarning("Trying to assign a path for NPC " + this.name + ", but the path was not found - was it deleted?"); } } if (data.lastPathID != 0) { Paths pathObject = Serializer.returnComponent <Paths> (data.lastPathID); if (pathObject != null) { npc.SetLastPath(pathObject, data.lastTargetNode, data.lastPrevNode); } else { Debug.LogWarning("Trying to assign the previous path for NPC " + this.name + ", but the path was not found - was it deleted?"); } } // Head target if (data.isHeadTurning) { npc.SetHeadTurnTarget(new Vector3(data.headTargetX, data.headTargetY, data.headTargetZ), true); } else { npc.ClearHeadTurnTarget(true); } } }
/** * <summary>Updates its own variables from a NPCData class.</summary> * <param name = "data">The NPCData class to load from</param> */ public void LoadData(NPCData data) { charState = (data.inCustomCharState) ? CharState.Custom : CharState.Idle; EndPath(); GetAnimEngine().LoadNPCData(data, this); walkSound = AssetLoader.RetrieveAsset(walkSound, data.walkSound); runSound = AssetLoader.RetrieveAsset(runSound, data.runSound); if (!string.IsNullOrEmpty(data.speechLabel)) { SetName(data.speechLabel, data.displayLineID); } portraitIcon.ReplaceTexture(AssetLoader.RetrieveAsset(portraitIcon.texture, data.portraitGraphic)); walkSpeedScale = data.walkSpeed; runSpeedScale = data.runSpeed; // Rendering lockDirection = data.lockDirection; lockScale = data.lockScale; if (spriteChild && spriteChild.GetComponent <FollowSortingMap>()) { spriteChild.GetComponent <FollowSortingMap>().lockSorting = data.lockSorting; } else if (GetComponent <FollowSortingMap>()) { GetComponent <FollowSortingMap>().lockSorting = data.lockSorting; } else { ReleaseSorting(); } if (data.lockDirection) { spriteDirection = data.spriteDirection; UpdateFrameFlipping(true); } if (data.lockScale) { spriteScale = data.spriteScale; } if (data.lockSorting) { if (spriteChild && spriteChild.GetComponent <Renderer>()) { spriteChild.GetComponent <Renderer>().sortingOrder = data.sortingOrder; spriteChild.GetComponent <Renderer>().sortingLayerName = data.sortingLayer; } else if (GetComponent <Renderer>()) { GetComponent <Renderer>().sortingOrder = data.sortingOrder; GetComponent <Renderer>().sortingLayerName = data.sortingLayer; } } AC.Char charToFollow = null; if (data.followTargetID != 0) { RememberNPC followNPC = ConstantID.GetComponent <RememberNPC> (data.followTargetID); if (followNPC.GetComponent <AC.Char>()) { charToFollow = followNPC.GetComponent <AC.Char>(); } } if (charToFollow != null || (data.followTargetIsPlayer && KickStarter.player)) { FollowAssign(charToFollow, data.followTargetIsPlayer, data.followFrequency, data.followDistance, data.followDistanceMax, data.followFaceWhenIdle, data.followRandomDirection, false); } else { StopFollowing(); } Halt(); if (!string.IsNullOrEmpty(data.pathData) && GetComponent <Paths>()) { Paths savedPath = GetComponent <Paths>(); savedPath = Serializer.RestorePathData(savedPath, data.pathData); SetPath(savedPath, data.targetNode, data.prevNode, data.pathAffectY); isRunning = data.isRunning; } else if (data.pathID != 0) { Paths pathObject = ConstantID.GetComponent <Paths> (data.pathID); if (pathObject) { SetPath(pathObject, data.targetNode, data.prevNode); } else { ACDebug.LogWarning("Trying to assign a path for NPC " + this.name + ", but the path was not found - was it deleted?", gameObject); } } if (data.lastPathID != 0) { Paths pathObject = ConstantID.GetComponent <Paths> (data.lastPathID); if (pathObject) { SetLastPath(pathObject, data.lastTargetNode, data.lastPrevNode); } else { ACDebug.LogWarning("Trying to assign the previous path for NPC " + this.name + ", but the path was not found - was it deleted?", gameObject); } } // Head target if (data.isHeadTurning) { ConstantID _headTargetID = ConstantID.GetComponent <ConstantID> (data.headTargetID); if (_headTargetID) { SetHeadTurnTarget(_headTargetID.transform, new Vector3(data.headTargetX, data.headTargetY, data.headTargetZ), true); } else { ClearHeadTurnTarget(true); } } else { ClearHeadTurnTarget(true); } if (GetComponentsInChildren <FollowSortingMap>() != null) { FollowSortingMap[] followSortingMaps = GetComponentsInChildren <FollowSortingMap>(); SortingMap customSortingMap = ConstantID.GetComponent <SortingMap> (data.customSortingMapID); foreach (FollowSortingMap followSortingMap in followSortingMaps) { followSortingMap.followSortingMap = data.followSortingMap; if (!data.followSortingMap && customSortingMap) { followSortingMap.SetSortingMap(customSortingMap); } else { followSortingMap.SetSortingMap(KickStarter.sceneSettings.sortingMap); } } } if (GetAnimEngine() != null && GetAnimEngine().IKEnabled) { LeftHandIKController.LoadData(data.leftHandIKState); RightHandIKController.LoadData(data.rightHandIKState); } _spriteDirectionData.LoadData(data.spriteDirectionData); }
/** * <summary>Updates its own variables from a PlayerData class.</summary> * <param name = "playerData">The PlayerData class to load from</param> * <param name = "justAnimationData">If True, then only animation data (and sound) changes will be loaded, as opposed to position, rotaion, etc</param> */ public void LoadPlayerData(PlayerData playerData, bool justAnimationData = false) { if (!justAnimationData) { charState = (playerData.inCustomCharState) ? CharState.Custom : CharState.Idle; Teleport(new Vector3(playerData.playerLocX, playerData.playerLocY, playerData.playerLocZ)); SetRotation(playerData.playerRotY); SetMoveDirectionAsForward(); } walkSpeedScale = playerData.playerWalkSpeed; runSpeedScale = playerData.playerRunSpeed; // Animation clips GetAnimEngine().LoadPlayerData(playerData, this); // Sound walkSound = AssetLoader.RetrieveAsset(walkSound, playerData.playerWalkSound); runSound = AssetLoader.RetrieveAsset(runSound, playerData.playerRunSound); // Portrait graphic portraitIcon.ReplaceTexture(AssetLoader.RetrieveAsset(portraitIcon.texture, playerData.playerPortraitGraphic)); // Speech label if (!string.IsNullOrEmpty(playerData.playerSpeechLabel)) { SetName(playerData.playerSpeechLabel, playerData.playerDisplayLineID); } speechLabel = playerData.playerSpeechLabel; // Rendering lockDirection = playerData.playerLockDirection; lockScale = playerData.playerLockScale; if (spriteChild && spriteChild.GetComponent <FollowSortingMap>()) { spriteChild.GetComponent <FollowSortingMap>().lockSorting = playerData.playerLockSorting; } else if (GetComponent <FollowSortingMap>()) { GetComponent <FollowSortingMap>().lockSorting = playerData.playerLockSorting; } else { ReleaseSorting(); } if (playerData.playerLockDirection) { spriteDirection = playerData.playerSpriteDirection; } if (playerData.playerLockScale) { spriteScale = playerData.playerSpriteScale; } if (playerData.playerLockSorting) { if (spriteChild && spriteChild.GetComponent <Renderer>()) { spriteChild.GetComponent <Renderer>().sortingOrder = playerData.playerSortingOrder; spriteChild.GetComponent <Renderer>().sortingLayerName = playerData.playerSortingLayer; } else if (GetComponent <Renderer>()) { GetComponent <Renderer>().sortingOrder = playerData.playerSortingOrder; GetComponent <Renderer>().sortingLayerName = playerData.playerSortingLayer; } } if (!justAnimationData) { // Active path Halt(); ForceIdle(); } if (!string.IsNullOrEmpty(playerData.playerPathData) && GetComponent <Paths>()) { Paths savedPath = GetComponent <Paths>(); savedPath = Serializer.RestorePathData(savedPath, playerData.playerPathData); SetPath(savedPath, playerData.playerTargetNode, playerData.playerPrevNode, playerData.playerPathAffectY); isRunning = playerData.playerIsRunning; lockedPath = false; } else if (playerData.playerActivePath != 0) { Paths savedPath = Serializer.returnComponent <Paths> (playerData.playerActivePath); if (savedPath) { lockedPath = playerData.playerLockedPath; if (lockedPath) { SetLockedPath(savedPath); } else { SetPath(savedPath, playerData.playerTargetNode, playerData.playerPrevNode); } } else { Halt(); ForceIdle(); } } else { Halt(); ForceIdle(); } // Previous path if (playerData.lastPlayerActivePath != 0) { Paths savedPath = Serializer.returnComponent <Paths> (playerData.lastPlayerActivePath); if (savedPath) { SetLastPath(savedPath, playerData.lastPlayerTargetNode, playerData.lastPlayerPrevNode); } } // Head target lockHotspotHeadTurning = playerData.playerLockHotspotHeadTurning; if (playerData.isHeadTurning) { ConstantID _headTargetID = Serializer.returnComponent <ConstantID> (playerData.headTargetID); if (_headTargetID != null) { SetHeadTurnTarget(_headTargetID.transform, new Vector3(playerData.headTargetX, playerData.headTargetY, playerData.headTargetZ), true); } else { ClearHeadTurnTarget(true); } } else { ClearHeadTurnTarget(true); } ignoreGravity = playerData.playerIgnoreGravity; if (GetComponentsInChildren <FollowSortingMap>() != null) { FollowSortingMap[] followSortingMaps = GetComponentsInChildren <FollowSortingMap>(); SortingMap customSortingMap = Serializer.returnComponent <SortingMap> (playerData.customSortingMapID); foreach (FollowSortingMap followSortingMap in followSortingMaps) { followSortingMap.followSortingMap = playerData.followSortingMap; if (!playerData.followSortingMap && customSortingMap != null) { followSortingMap.SetSortingMap(customSortingMap); } else { followSortingMap.SetSortingMap(KickStarter.sceneSettings.sortingMap); } } } ignoreGravity = playerData.playerIgnoreGravity; // Remember scripts if (!IsLocalPlayer()) { KickStarter.levelStorage.LoadPlayerData(this, playerData); } }