Skip to content

Commit

Permalink
feat: surface patch
Browse files Browse the repository at this point in the history
fixes #333
  • Loading branch information
ManuelRauber committed Jun 6, 2023
1 parent 526b8b0 commit 5b01a8c
Show file tree
Hide file tree
Showing 25 changed files with 8,386 additions and 40 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified FairyTaleDefender/Assets/_Game/Models/Environment/Tiles/Flat.fbx
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
using System;
using System.Linq;
using UnityEditor;
using UnityEngine;

namespace BoundfoxStudios.FairyTaleDefender.Editor.AssetProcessors
{
public class DefaultMaterialsAssetPostprocessor : AssetPostprocessor
{
private const string ColorPaletteSummerMaterialGuid = "178b74dc53be54709b84d85209d03744";
private const string TileSurfaceMaterialGuid = "4a52ce37bf16a42a29e689c796f909ac";

private Material? OnAssignMaterialModel(Material material, Renderer renderer)
{
if (TryHandleMaterial(material, "ColorPalette", FindColorPaletteSummerMaterial, out var colorPaletteMaterial))
{
return colorPaletteMaterial;
}

if (TryHandleMaterial(material, "Surface", FindTileSurfaceMaterial, out var surfaceMaterial))
{
return surfaceMaterial;
}

return null;
}

private bool TryHandleMaterial(Material material, string name, Func<Material?> materialAccessor,
out Material? materialToApply)
{
materialToApply = null;

if (material.name != name)
{
return false;
}

var importer = (ModelImporter)assetImporter;
var existingRemaps = importer.GetExternalObjectMap();
var hasRemap = existingRemaps.Any(kvp => kvp.Key.name == name);

if (hasRemap)
{
return false;
}

materialToApply = materialAccessor();

return true;
}

private Material? FindColorPaletteSummerMaterial() => FindMaterial(ColorPaletteSummerMaterialGuid);

private Material? FindTileSurfaceMaterial() => FindMaterial(TileSurfaceMaterialGuid);

private Material? FindMaterial(string guidString)
{
GUID.TryParse(guidString, out var guid);
context.DependsOnSourceAsset(guid);
var path = AssetDatabase.GUIDToAssetPath(guidString);
return AssetDatabase.LoadAssetAtPath<Material>(path);
}

public override uint GetVersion() => 5;
}
}
Loading

0 comments on commit 5b01a8c

Please sign in to comment.