Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #ifndef TERRAFORMINGCOMPONENT_H
- #define TERRAFORMINGCOMPONENT_H
- #include <AzCore/Component/Component.h>
- #include <AzCore/Component/EntityBus.h>
- #include <AzCore/Component/TickBus.h>
- // EBUS
- #include <AzFramework/Entity/GameEntityContextBus.h>
- #include "TerraformingBus.h"
- #include <ITerrain.h>
- namespace GameProject
- {
- class TerraformingComponent:
- public AZ::Component,
- public AZ::EntityBus::MultiHandler,
- public AZ::TickBus::Handler,
- public AzFramework::GameEntityContextEventBus::Handler,
- public TerraformingBus::Handler
- {
- public:
- AZ_COMPONENT(TerraformingComponent, "{23DD0B83-BDEA-4354-B677-8F6AB26DDFC3}", AZ::Component);
- TerraformingComponent() {};
- virtual ~TerraformingComponent() {};
- static void Reflect(AZ::ReflectContext* context);
- void Init() override;
- void Activate() override;
- void Deactivate() override;
- // AZ::TickBus
- void OnTick(float deltaTime, AZ::ScriptTimePoint time);
- //GameEntityContextEventBus
- void OnGameEntitiesStarted() override;
- void OnGameEntitiesReset() override;
- // TerraformingBus
- void UpdateTerrainCutout(AZ::Vector3 pos, float radius, bool cutout = true) override;
- void UpdateTerrain();
- void UpdateTerrainUnderEntity(float radius, float inland);
- void UpdateTerrainUnderEntityOptimized(float radius, float inland);
- void SaveOriginalTerrain();
- void RestoreOriginalTerrain();
- private:
- float* pOriginalTerrain = nullptr;
- float* pCurTerrain = nullptr;
- ITerrain::SurfaceWeight* pCurTerrainSW = nullptr;
- float m_Value = 0.0f;
- AZ::SimpleLcgRandom m_RndGenerator;
- float m_radius = 32.0f;
- float m_inland = 16.0f;
- bool m_wholeTerrainNoise = false;
- bool m_saveAndRestoreOriginalTerrain = true;
- };
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement