Skip to content

Instantly share code, notes, and snippets.

@MattiaPezzanoAiv
Created February 23, 2018 18:09
Show Gist options
  • Save MattiaPezzanoAiv/1b3c2f2f32091b7ab7f75e7f948512c3 to your computer and use it in GitHub Desktop.
Save MattiaPezzanoAiv/1b3c2f2f32091b7ab7f75e7f948512c3 to your computer and use it in GitHub Desktop.
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyFactory.h"
UMyFactory::UMyFactory()
{
SupportedClass = UMaterial::StaticClass();
bCreateNew = true;
bEditorImport = false;
}
FText UMyFactory::GetDisplayName()const
{
return FText::FromString("Sun Material");
}
UObject* UMyFactory::FactoryCreateNew
(
UClass * InClass,
UObject * InParent,
FName InName,
EObjectFlags Flags,
UObject * Context,
FFeedbackContext * Warn
)
{
UE_LOG(LogTemp, Warning, TEXT("CIAONE PRP"));
UE_LOG(LogTemp, Warning, TEXT("%s"), *InParent->GetPathName());
UMaterial* Material = NewObject<UMaterial>(InParent,InName, Flags | RF_Transactional | RF_Public | RF_Standalone);
//Material->MarkPackageDirty();
Material->SetShadingModel(EMaterialShadingModel::MSM_Unlit); //set material unlit
/******************************************************************************************************/
//GET ALL CLASSES
UClass* TextureCoordinateClass = FindObject<UClass>(ANY_PACKAGE, TEXT("MaterialExpressionTextureCoordinate"));
if (!TextureCoordinateClass)
ESC;
UClass* ParameterClass = FindObject<UClass>(ANY_PACKAGE, TEXT("MaterialExpressionScalarParameter"));
if (!ParameterClass)
ESC;
UClass* MultiplyClass = FindObject<UClass>(ANY_PACKAGE, TEXT("MaterialExpressionMultiply"));
if (!MultiplyClass)
ESC;
/******************************************************************************************************/
//TEXTURE COORD
UMaterialExpressionTextureCoordinate* TextureCoordinate = (UMaterialExpressionTextureCoordinate*)NewObject<UObject>(Material, TextureCoordinateClass);
TextureCoordinate->UTiling = 1.0f;
TextureCoordinate->VTiling = 1.0f;
//TILING PARAMETER
UMaterialExpressionScalarParameter* TilingParameter = (UMaterialExpressionScalarParameter*)NewObject<UObject>(Material, ParameterClass);
TilingParameter->ParameterName = "Tiling";
TilingParameter->DefaultValue = 3.0f;
//MULTIPLY NODE
UMaterialExpressionMultiply* MultiplyCoordsTiling = (UMaterialExpressionMultiply*)NewObject<UObject>(Material, MultiplyClass);
FExpressionInput MultiplyCoordsTilingInputA;
MultiplyCoordsTilingInputA.Expression = TextureCoordinate; //multiply A
FExpressionInput MultiplyCoordsTilingInputB;
MultiplyCoordsTilingInputB.Expression = TilingParameter; //multiply B
MultiplyCoordsTiling->A = MultiplyCoordsTilingInputA;
MultiplyCoordsTiling->B = MultiplyCoordsTilingInputB;
FColorMaterialInput emissive;
//emissive.Expression = MultiplyCoordsTiling;
emissive.Constant = FColor::Red;
Material->EmissiveColor = emissive;
Material->PostEditChange();
return Material;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment