rj-action-library/Runtime/Presets/App/MainModule.cs

164 lines
3.5 KiB
C#

using Godot;
using System.Threading.Tasks;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class MainModule: PresetModule
{
[ExportGroup("Basic")]
[Export]
public bool localeManager = true;
[Export]
public bool sensorManager = true;
[Export]
public bool timeLineManager = true;
[Export]
public bool audioManager = true;
[ExportGroup("Camera")]
[Export]
public bool cameraManager = true;
[Export]
public bool mainCamera = true;
[Export]
public bool debugEditorCamera = true;
[Export]
public bool worldEnvironment = true;
public async Task ProcessPass( PresetContext context )
{
if ( PresetPass.Process != context.pass )
{
return;
}
CreateBasic( context );
CreateCamera( context );
return;
}
void CreateBasic( PresetContext context )
{
var root = context.root;
if ( localeManager )
{
root.CreateChild<LocaleManager>( "Locale Manager" );
}
if ( sensorManager )
{
root.CreateChild<SensorManagerSetup>( "Sensor Manager Setup" );
}
if ( timeLineManager )
{
var tm = root.CreateChild<TimeLineManager>( "Timeline Manager" );
var timelinePath = "res://addons/rokojori_action_library/Runtime/Time/TimeLines/";
var gameTime = ResourceLoader.Load<TimeLine>( timelinePath + "GameTime.tres" );
var realTime = ResourceLoader.Load<TimeLine>( timelinePath + "RealTime.tres" );
tm.gametimeTimeline = gameTime;
tm.realtimeTimeline = realTime;
tm.timeLines = [ gameTime, realTime ];
}
if ( audioManager )
{
root.CreateChild<AudioManager>( "Audio Manager" );
}
}
void CreateCamera( PresetContext context )
{
var hasCameraSetup = cameraManager || worldEnvironment || mainCamera || debugEditorCamera;
if ( ! hasCameraSetup )
{
return;
}
var root = context.root;
var cameraSetup = root.CreateChild<CameraSetupIcon>( "Camera Setup" );
CameraManager camManager = null;
if ( cameraManager )
{
camManager = cameraSetup.CreateChild<CameraManager>( "Camera Manager" );
}
if ( worldEnvironment )
{
var env = cameraSetup.CreateChild<WorldEnvironment>();
env.Environment = new Environment();
env.Environment.BackgroundMode = Environment.BGMode.Sky;
env.Environment.Sky = new Sky();
env.Environment.Sky.SkyMaterial = new ProceduralSkyMaterial();
if ( camManager != null )
{
camManager.worldEnvironment = env;
}
var camAtts = new CameraAttributesPractical();
env.CameraAttributes = camAtts;
camAtts.DofBlurNearEnabled = true;
camAtts.DofBlurNearDistance = 0.2f;
camAtts.DofBlurNearTransition = 0.1f;
camAtts.DofBlurAmount = 0.25f;
}
if ( mainCamera )
{
var mainCam = cameraSetup.CreateChild<Camera3D>( "Main Camera" );
if ( camManager != null )
{
camManager.camera = mainCam;
}
}
if ( debugEditorCamera )
{
var editorCamera = cameraSetup.CreateChild<EditorCamera>( "Debug Editor Camera" );
if ( camManager != null )
{
camManager.debugCamera = editorCamera;
var toggleSensor = new KeySensor();
toggleSensor.key = Key.F5;
camManager.debugCameraToggle = toggleSensor;
}
}
}
}
}