straywild/main/runtime_performance_profile.gd

65 lines
1.6 KiB
GDScript3
Raw Normal View History

class_name RuntimePerformanceProfile
extends RefCounted
const PROFILE_ENVIRONMENT_VARIABLE: String = (
"straywild_PERFORMANCE_PROFILE"
)
const LEGACY_LIGHT_ENVIRONMENT_VARIABLE: String = "straywild_LOW_END"
const NETFISHING_PROFILE_ENVIRONMENT_VARIABLE := (
"NETFISHING_PERFORMANCE_PROFILE"
)
const NETFISHING_LIGHT_ENVIRONMENT_VARIABLE := "NETFISHING_LOW_END"
const NORMAL_PROFILE: StringName = &"normal"
const LIGHT_PROFILE: StringName = &"light"
const NORMAL_WORLD_RENDER_SCALE: float = 1.0
2026-08-18 01:02:13 -04:00
const LIGHT_WORLD_RENDER_SCALE: float = 0.375
var _profile_name: StringName = NORMAL_PROFILE
static func from_environment() -> RuntimePerformanceProfile:
var profile_name: String = OS.get_environment(
PROFILE_ENVIRONMENT_VARIABLE
)
if profile_name.is_empty():
profile_name = OS.get_environment(
NETFISHING_PROFILE_ENVIRONMENT_VARIABLE
)
return from_name(
StringName(profile_name),
(
OS.get_environment(LEGACY_LIGHT_ENVIRONMENT_VARIABLE) == "1"
or OS.get_environment(NETFISHING_LIGHT_ENVIRONMENT_VARIABLE) == "1"
),
)
static func from_name(
profile_name: StringName,
legacy_light_requested: bool = false,
) -> RuntimePerformanceProfile:
var profile := RuntimePerformanceProfile.new()
if profile_name == LIGHT_PROFILE or (
profile_name.is_empty() and legacy_light_requested
):
profile._profile_name = LIGHT_PROFILE
else:
profile._profile_name = NORMAL_PROFILE
return profile
func get_profile_name() -> StringName:
return _profile_name
func is_light() -> bool:
return _profile_name == LIGHT_PROFILE
func get_world_render_scale() -> float:
return (
LIGHT_WORLD_RENDER_SCALE
if is_light()
else NORMAL_WORLD_RENDER_SCALE
)