73 lines
1.6 KiB
C#
73 lines
1.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Godot;
|
|
using System;
|
|
|
|
|
|
|
|
namespace Rokojori
|
|
{
|
|
[Tool]
|
|
[GlobalClass]
|
|
public partial class SetBakingMaterials:RJAction
|
|
{
|
|
[Export]
|
|
public Node targetContainer;
|
|
|
|
public enum BakingMaterialMode
|
|
{
|
|
Albedo,
|
|
Normals,
|
|
ORM,
|
|
Depth
|
|
}
|
|
|
|
[Export]
|
|
public BakingMaterialMode mode;
|
|
|
|
public override void _OnTrigger()
|
|
{
|
|
var baseMaterial = GetBaseMaterial();
|
|
|
|
Nodes.ForEach<VisualInstance3D>( targetContainer,
|
|
( v )=>
|
|
{
|
|
|
|
}
|
|
);
|
|
}
|
|
|
|
|
|
|
|
public static readonly string materialsPath = "res://addons/rokojori_action_library/External/Imposter/materials/";
|
|
static Dictionary<string,Material> _cachedMaterials = new Dictionary<string, Material>();
|
|
|
|
public static Material LoadMaterial( string materialName )
|
|
{
|
|
if ( _cachedMaterials.ContainsKey( materialName ) )
|
|
{
|
|
return _cachedMaterials[ materialName ];
|
|
}
|
|
|
|
var loadedMaterial = ResourceLoader.Load( materialsPath + materialName ) as Material;
|
|
_cachedMaterials[ materialName ] = loadedMaterial;
|
|
|
|
return loadedMaterial;
|
|
}
|
|
|
|
public Material GetBaseMaterial()
|
|
{
|
|
switch ( mode )
|
|
{
|
|
case BakingMaterialMode.Albedo: return LoadMaterial( "albedo_material.material" );
|
|
case BakingMaterialMode.Normals: return LoadMaterial( "normal_baker.material" );
|
|
case BakingMaterialMode.ORM: return LoadMaterial( "orm_baker.material" );
|
|
case BakingMaterialMode.Depth: return LoadMaterial( "depth_baker.material" );
|
|
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
}
|
|
} |