public void RebuildMovables(SceneContentData currentSceneContentData, CurrentSceneManager currentSceneManager)
    {
        foreach (SceneContentData.MovableData movableData in currentSceneContentData.movablesData)
        {
            foreach (Movable movable in currentSceneManager.GetMovableObjects())
            {
                if (Helper.GetObjectLocalIdInFile(movable) == movableData.localIdInFile)
                {
                    PrepareDataForEntity(movable, delegate()
                    {
                        movable.moveSpeed = movableData.moveSpeed;
                        movable.IsMoving  = movableData.IsMoving;
                        movable.AreMovementsRestrained = movableData.AreMovementsRestrained;
                        movable.IsImmobilized          = movableData.IsImmobilized;
                        movable.IsInCinematicMode      = movableData.IsInCinematicMode;

                        movable.LastMove = new Vector3
                                               (movableData.LastMove[0],
                                               movableData.LastMove[1],
                                               movableData.LastMove[2]
                                               );

                        movable.MoveInput = new Vector3
                                                (movableData.MoveInput[0],
                                                movableData.MoveInput[1],
                                                movableData.MoveInput[2]
                                                );
                    });
                }
            }
        }
    }
    public void RebuildTransformSaveHolders(SceneContentData currentSceneContentData, CurrentSceneManager currentSceneManager)
    {
        foreach (SceneContentData.TransformSaveHolderData transformSaveHolderData in currentSceneContentData.transformSaveHoldersData)
        {
            foreach (MonoBehaviour transformSaveHolder in currentSceneManager.GetTransformSaveHolders())
            {
                if (Helper.GetObjectLocalIdInFile(transformSaveHolder) == transformSaveHolderData.localIdInFile)
                {
                    PrepareDataForEntity(transformSaveHolder, delegate()
                    {
                        transformSaveHolder.transform.position = new Vector2(
                            transformSaveHolderData.position[0],
                            transformSaveHolderData.position[1]
                            );

                        transformSaveHolder.transform.rotation = new Quaternion(
                            transformSaveHolderData.rotation[0],
                            transformSaveHolderData.rotation[1],
                            transformSaveHolderData.rotation[2],
                            transformSaveHolderData.rotation[3]
                            );

                        transformSaveHolder.gameObject.SetActive(transformSaveHolderData.isActive);
                    });
                }
            }
        }
    }
    public override void RebuildFromData(ObjectData objectData)
    {
        SceneContentData    currentSceneContentData = (SceneContentData)objectData;
        CurrentSceneManager currentSceneManager     = (CurrentSceneManager)entityManager;

        CallAfterSceneLoaded(delegate()
        {
            RebuildTransformSaveHolders(currentSceneContentData, currentSceneManager);
            RebuildMovables(currentSceneContentData, currentSceneManager);
            RebuildEnnemies(currentSceneContentData, currentSceneManager);
        });
    }
 public void RebuildEnnemies(SceneContentData currentSceneContentData, CurrentSceneManager currentSceneManager)
 {
     foreach (SceneContentData.EnnemyData ennemyData in currentSceneContentData.ennemiesData)
     {
         foreach (EnnemyController ennemyController in currentSceneManager.GetEnnemies())
         {
             if (Helper.GetObjectLocalIdInFile(ennemyController) == ennemyData.localIdInFile)
             {
                 PrepareDataForEntity(ennemyController, delegate()
                 {
                     ennemyController.averageMoveTime         = ennemyData.averageMoveTime;
                     ennemyController.betweenMovesAverageTime = ennemyData.betweenMovesAverageTime;
                     ennemyController.TimeBetweenMovesCounter = ennemyData.TimeBetweenMovesCounter;
                     ennemyController.MoveTimeCounter         = ennemyData.MoveTimeCounter;
                 });
             }
         }
     }
 }
 public void RebuildAutoMovings(SceneContentData currentSceneContentData, CurrentSceneManager currentSceneManager)
 {
     foreach (SceneContentData.AutoMovingData autoMovingData in currentSceneContentData.autoMovingsData)
     {
         foreach (AutoMoving autoMoving in currentSceneManager.GetMovableObjects())
         {
             if (Helper.GetObjectLocalIdInFile(autoMoving) == autoMovingData.localIdInFile)
             {
                 PrepareDataForEntity(autoMoving, delegate()
                 {
                     autoMoving.averageMoveTime              = autoMovingData.averageMoveTime;
                     autoMoving.averageMoveTimeDelta         = autoMovingData.averageMoveTimeDelta;
                     autoMoving.betweenMovesAverageTimeDelta = autoMovingData.betweenMovesAverageTimeDelta;
                     autoMoving.moveDirectionType            = (AutoMoving.AutomoveDirectionType)autoMovingData.moveDirectionType;
                     autoMoving.TimeBetweenMovesCounter      = autoMovingData.TimeBetweenMovesCounter;
                     autoMoving.MoveTimeCounter              = autoMovingData.MoveTimeCounter;
                     autoMoving.CanMove = autoMovingData.CanMove;
                 });
             }
         }
     }
 }