Skip to content
Snippets Groups Projects
Commit 0ecd655f authored by Sebastian Pape's avatar Sebastian Pape
Browse files

Moved dynamic material init into post initialize method

parent d9edb8d6
No related branches found
No related tags found
1 merge request!4Develop
...@@ -12,10 +12,9 @@ template<std::size_t SIZE> bool containsFString(const std::array<FString, SIZE> ...@@ -12,10 +12,9 @@ template<std::size_t SIZE> bool containsFString(const std::array<FString, SIZE>
return false; return false;
} }
UStaticMeshComponent* ACAVEOverlayController::createMeshComponent(const FName &name, UMaterialInterface* material, UStaticMesh* mesh, USceneComponent* parent) { UStaticMeshComponent* ACAVEOverlayController::createMeshComponent(const FName &name, UStaticMesh* mesh, USceneComponent* parent) {
UStaticMeshComponent* result = CreateDefaultSubobject<UStaticMeshComponent>(name); UStaticMeshComponent* result = CreateDefaultSubobject<UStaticMeshComponent>(name);
result->SetStaticMesh(mesh); result->SetStaticMesh(mesh);
result->SetMaterial(0, material);
result->SetupAttachment(parent); result->SetupAttachment(parent);
result->SetVisibility(false); result->SetVisibility(false);
return result; return result;
...@@ -56,18 +55,15 @@ ACAVEOverlayController::ACAVEOverlayController() ...@@ -56,18 +55,15 @@ ACAVEOverlayController::ACAVEOverlayController()
loadAsset("/CAVEOverlay/StopMaterial", sign_material_); loadAsset("/CAVEOverlay/StopMaterial", sign_material_);
loadAsset("/CAVEOverlay/Plane", plane_mesh_); loadAsset("/CAVEOverlay/Plane", plane_mesh_);
tape_material_dynamic_ = UMaterialInstanceDynamic::Create(tape_material_, NULL); tape_negative_y = createMeshComponent("TapeNegY", plane_mesh_, tape_root);
sign_material_dynamic_ = UMaterialInstanceDynamic::Create(sign_material_, NULL); tape_negative_x = createMeshComponent("TapeNegX", plane_mesh_, tape_root);
tape_positive_y = createMeshComponent("TapePosY", plane_mesh_, tape_root);
tape_positive_x = createMeshComponent("TapePosX", plane_mesh_, tape_root);
tape_negative_y = createMeshComponent("TapeNegY", tape_material_dynamic_, plane_mesh_, tape_root); sign_negative_y = createMeshComponent("SignNegY", plane_mesh_, sign_root);
tape_negative_x = createMeshComponent("TapeNegX", tape_material_dynamic_, plane_mesh_, tape_root); sign_negative_x = createMeshComponent("SignNegX", plane_mesh_, sign_root);
tape_positive_y = createMeshComponent("TapePosY", tape_material_dynamic_, plane_mesh_, tape_root); sign_positive_y = createMeshComponent("SignPosY", plane_mesh_, sign_root);
tape_positive_x = createMeshComponent("TapePosX", tape_material_dynamic_, plane_mesh_, tape_root); sign_positive_x = createMeshComponent("SignPosX", plane_mesh_, sign_root);
sign_negative_y = createMeshComponent("SignNegY", sign_material_dynamic_, plane_mesh_, sign_root);
sign_negative_x = createMeshComponent("SignNegX", sign_material_dynamic_, plane_mesh_, sign_root);
sign_positive_y = createMeshComponent("SignPosY", sign_material_dynamic_, plane_mesh_, sign_root);
sign_positive_x = createMeshComponent("SignPosX", sign_material_dynamic_, plane_mesh_, sign_root);
//Set initial Position, Rotation and Scale of Tape //Set initial Position, Rotation and Scale of Tape
tape_negative_y->SetRelativeLocationAndRotation(FVector(0, -wall_distance_, 0), FRotator(0, 0, 90)); tape_negative_y->SetRelativeLocationAndRotation(FVector(0, -wall_distance_, 0), FRotator(0, 0, 90));
...@@ -92,6 +88,25 @@ ACAVEOverlayController::ACAVEOverlayController() ...@@ -92,6 +88,25 @@ ACAVEOverlayController::ACAVEOverlayController()
sign_positive_x->SetRelativeScale3D(FVector(0.5f)); sign_positive_x->SetRelativeScale3D(FVector(0.5f));
} }
void ACAVEOverlayController::PostInitializeComponents()
{
Super::PostInitializeComponents();
//Create dynamic materials in runtime
tape_material_dynamic_ = UMaterialInstanceDynamic::Create(tape_material_, tape_root);
sign_material_dynamic_ = UMaterialInstanceDynamic::Create(sign_material_, sign_root);
tape_negative_y->SetMaterial(0, tape_material_dynamic_);
tape_negative_x->SetMaterial(0, tape_material_dynamic_);
tape_positive_y->SetMaterial(0, tape_material_dynamic_);
tape_positive_x->SetMaterial(0, tape_material_dynamic_);
sign_negative_y->SetMaterial(0, sign_material_dynamic_);
sign_negative_x->SetMaterial(0, sign_material_dynamic_);
sign_positive_y->SetMaterial(0, sign_material_dynamic_);
sign_positive_x->SetMaterial(0, sign_material_dynamic_);
}
void ACAVEOverlayController::CycleDoorType() void ACAVEOverlayController::CycleDoorType()
{ {
door_current_mode_ = static_cast<DOOR_MODE>((door_current_mode_ + 1) % DOOR_NUM_MODES); door_current_mode_ = static_cast<DOOR_MODE>((door_current_mode_ + 1) % DOOR_NUM_MODES);
......
...@@ -34,6 +34,7 @@ public: ...@@ -34,6 +34,7 @@ public:
protected: protected:
// Called when the game starts or when spawned // Called when the game starts or when spawned
virtual void BeginPlay() override; virtual void BeginPlay() override;
virtual void PostInitializeComponents() override;
private: private:
//Execution Modes //Execution Modes
...@@ -64,7 +65,7 @@ private: ...@@ -64,7 +65,7 @@ private:
UDoorOverlayData* overlay_; UDoorOverlayData* overlay_;
//Geometry and Material //Geometry and Material
UStaticMeshComponent* createMeshComponent(const FName &name, UMaterialInterface* material, UStaticMesh* mesh, USceneComponent* parent); UStaticMeshComponent* createMeshComponent(const FName &name, UStaticMesh* mesh, USceneComponent* parent);
UMaterial* tape_material_ = nullptr; UMaterial* tape_material_ = nullptr;
UMaterial* sign_material_ = nullptr; UMaterial* sign_material_ = nullptr;
float calculateOpacityFromPosition(FVector position); float calculateOpacityFromPosition(FVector position);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment