DatasmithSceneFactory.h
1 // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
2 
3 #pragma once
4 
5 #include "DatasmithAnimationElements.h"
6 #include "DatasmithMaterialElements.h"
7 #include "IDatasmithSceneElements.h"
8 #include "Templates/SharedPointer.h"
9 
10 /**
11  * Factory to create the scene elements used for the export and import process.
12  * The shared pointer returned is the only one existing at that time.
13  * Make sure to hang onto it until the scene element isn't needed anymore.
14  */
15 class DATASMITHCORE_API FDatasmithSceneFactory
16 {
17 public:
18  static TSharedPtr< IDatasmithElement > CreateElement( EDatasmithElementType InType, const TCHAR* InName );
19 
20  static TSharedRef< IDatasmithActorElement > CreateActor( const TCHAR* InName );
21 
22  static TSharedRef< IDatasmithCameraActorElement > CreateCameraActor( const TCHAR* InName );
23 
24  static TSharedRef< IDatasmithCompositeTexture > CreateCompositeTexture();
25 
26  static TSharedRef< IDatasmithCustomActorElement > CreateCustomActor( const TCHAR* InName );
27 
28  static TSharedRef< IDatasmithLandscapeElement > CreateLandscape( const TCHAR* InName );
29 
30  static TSharedRef< IDatasmithPostProcessVolumeElement > CreatePostProcessVolume( const TCHAR* InName );
31 
32  static TSharedRef< IDatasmithEnvironmentElement > CreateEnvironment( const TCHAR* InName );
33 
34  static TSharedRef< IDatasmithPointLightElement > CreatePointLight( const TCHAR* InName );
35  static TSharedRef< IDatasmithSpotLightElement > CreateSpotLight( const TCHAR* InName );
36  static TSharedRef< IDatasmithDirectionalLightElement > CreateDirectionalLight( const TCHAR* InName );
37  static TSharedRef< IDatasmithAreaLightElement > CreateAreaLight( const TCHAR* InName );
38  static TSharedRef< IDatasmithLightmassPortalElement > CreateLightmassPortal( const TCHAR* InName );
39 
40  static TSharedRef< IDatasmithKeyValueProperty > CreateKeyValueProperty( const TCHAR* InName );
41 
42  static TSharedRef< IDatasmithMeshElement > CreateMesh( const TCHAR* InName );
43 
44  static TSharedRef< IDatasmithMeshActorElement > CreateMeshActor( const TCHAR* InName );
45 
46  static TSharedRef< IDatasmithHierarchicalInstancedStaticMeshActorElement > CreateHierarchicalInstanceStaticMeshActor( const TCHAR* InName );
47 
48  static TSharedRef< IDatasmithMaterialElement > CreateMaterial( const TCHAR* InName );
49 
50  static TSharedRef< IDatasmithMasterMaterialElement > CreateMasterMaterial( const TCHAR* InName );
51 
52  static TSharedRef< IDatasmithUEPbrMaterialElement > CreateUEPbrMaterial( const TCHAR* InName );
53 
54  static TSharedRef< IDatasmithMetaDataElement > CreateMetaData( const TCHAR* InName );
55 
56  static TSharedRef< IDatasmithMaterialIDElement > CreateMaterialId( const TCHAR* InName );
57 
58  static TSharedRef< IDatasmithPostProcessElement > CreatePostProcess();
59 
60  static TSharedRef< IDatasmithShaderElement > CreateShader( const TCHAR* InName );
61 
62  static TSharedRef< IDatasmithTextureElement > CreateTexture( const TCHAR* InName );
63 
64  static TSharedRef< IDatasmithLevelSequenceElement > CreateLevelSequence( const TCHAR* InName );
65  static TSharedRef< IDatasmithTransformAnimationElement > CreateTransformAnimation( const TCHAR* InName );
66  static TSharedRef< IDatasmithVisibilityAnimationElement > CreateVisibilityAnimation( const TCHAR* InName );
67  static TSharedRef< IDatasmithSubsequenceAnimationElement > CreateSubsequenceAnimation( const TCHAR* InName );
68 
69  static TSharedRef< IDatasmithScene > CreateScene( const TCHAR* InName );
70  static TSharedRef< IDatasmithScene > DuplicateScene( const TSharedRef< IDatasmithScene >& InScene );
71 };
FDatasmithSceneFactory
Factory to create the scene elements used for the export and import process.
Definition: DatasmithSceneFactory.h:15