private static void SetupCamera(LevelStage levelStage, GameModeBaseConfig gameMode, GameLevelGridModel levelGridModel, IPlayer defaultPlayer) { // Camera setup and follow var mainCamera = Camera.main; if (mainCamera == null) { return; } var playerPosition = defaultPlayer.Hero.WorldPosition.xy; var levelSize = levelGridModel.Size; var levelConfig = gameMode.LevelConfigs[levelStage.LevelIndex]; var cameraRect = math.float2(Screen.width * 2f / Screen.height, 1) * mainCamera.orthographicSize; var fieldRect = (levelSize - cameraRect) / 2f; var fieldMargins = (float4)levelConfig.ViewportPadding / levelConfig.OriginalPixelsPerUnits; var position = math.clamp(playerPosition, fieldMargins.xy - fieldRect, fieldRect + fieldMargins.zw); mainCamera.transform.position = math.float3(position, -1); }
private static LevelStageConfig GetLevelStageConfig(GameModeBaseConfig gameMode, LevelStage levelStage) { return(gameMode.LevelConfigs[levelStage.LevelIndex].LevelStages[levelStage.LevelStageIndex]); }