1
0
KF2-Dev-Scripts/Engine/Classes/MeshComponent.uc

80 lines
2.9 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
class MeshComponent extends PrimitiveComponent
native(Mesh)
noexport
abstract;
/** Per-Component material overrides. These must NOT be set directly or a race condition can occur between GC and the rendering thread. */
var(Rendering) const array<MaterialInterface> Materials;
/**
* @param ElementIndex - The element to access the material of.
* @return the material used by the indexed element of this mesh.
*/
native function MaterialInterface GetMaterial(int ElementIndex);
/**
* Changes the material applied to an element of the mesh.
* @param ElementIndex - The element to access the material of.
* @return the material used by the indexed element of this mesh.
*/
native virtual function SetMaterial(int ElementIndex, MaterialInterface Material);
/** @return The total number of elements in the mesh. */
native function int GetNumElements();
/**
* Tell the streaming system to start loading all textures with all mip-levels.
* @param Seconds Number of seconds to force all mip-levels to be resident
* @param bPrioritizeCharacterTextures Whether character textures should be prioritized for a while by the streaming system
* @param CinematicTextureGroups Bitfield indicating which texture groups that use extra high-resolution mips
*/
native final function PrestreamTextures( float Seconds, bool bPrioritizeCharacterTextures, optional int CinematicTextureGroups = 0 );
/**
* Creates a material instance for the specified element index. The parent of the instance is set to the material being replaced.
* @param ElementIndex - The index of the skin to replace the material for.
*/
function MaterialInstanceConstant CreateAndSetMaterialInstanceConstant(int ElementIndex)
{
local MaterialInstanceConstant Instance;
// Create the material instance.
Instance = new(self) class'MaterialInstanceConstant';
Instance.SetParent(GetMaterial(ElementIndex));
// Assign it to the given mesh element.
// This MUST be done after setting the parent; otherwise the component will use the default material in place of the invalid material instance.
SetMaterial(ElementIndex,Instance);
return Instance;
}
/**
* Creates a material instance for the specified element index. The parent of the instance is set to the material being replaced.
* @param ElementIndex - The index of the skin to replace the material for.
*/
function MaterialInstanceTimeVarying CreateAndSetMaterialInstanceTimeVarying(int ElementIndex)
{
local MaterialInstanceTimeVarying Instance;
// Create the material instance.
Instance = new(self) class'MaterialInstanceTimeVarying';
Instance.SetParent(GetMaterial(ElementIndex));
// Assign it to the given mesh element.
SetMaterial(ElementIndex,Instance);
return Instance;
}
defaultproperties
{
CastShadow=TRUE
bAcceptsLights=TRUE
bUseAsOccluder=TRUE
}