2023-07-04 19:47:54 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <JuceHeader.h>
|
|
|
|
#include "PluginProcessor.h"
|
|
|
|
#include "components/EffectComponent.h"
|
2023-07-22 12:44:13 +00:00
|
|
|
#include "components/SvgButton.h"
|
2023-07-04 19:47:54 +00:00
|
|
|
|
|
|
|
class OscirenderAudioProcessorEditor;
|
2024-01-17 01:26:07 +00:00
|
|
|
class PerspectiveComponent : public juce::GroupComponent {
|
2023-07-04 19:47:54 +00:00
|
|
|
public:
|
2024-01-17 01:26:07 +00:00
|
|
|
PerspectiveComponent(OscirenderAudioProcessor&, OscirenderAudioProcessorEditor&);
|
|
|
|
~PerspectiveComponent();
|
2023-07-04 19:47:54 +00:00
|
|
|
|
|
|
|
void resized() override;
|
2023-07-05 13:14:27 +00:00
|
|
|
void mouseMove(const juce::MouseEvent& event) override;
|
2023-07-05 14:17:17 +00:00
|
|
|
void disableMouseRotation();
|
2023-07-04 19:47:54 +00:00
|
|
|
private:
|
|
|
|
OscirenderAudioProcessor& audioProcessor;
|
|
|
|
OscirenderAudioProcessorEditor& pluginEditor;
|
|
|
|
|
2024-01-07 19:48:02 +00:00
|
|
|
EffectComponent perspective{audioProcessor, *audioProcessor.perspective, 0};
|
|
|
|
EffectComponent focalLength{audioProcessor, *audioProcessor.perspective, 1};
|
|
|
|
EffectComponent distance{audioProcessor, *audioProcessor.perspective, 2};
|
|
|
|
EffectComponent rotateSpeed{audioProcessor, *audioProcessor.perspective, 3};
|
|
|
|
EffectComponent rotateX{audioProcessor, *audioProcessor.perspective, 4};
|
|
|
|
EffectComponent rotateY{audioProcessor, *audioProcessor.perspective, 5};
|
|
|
|
EffectComponent rotateZ{audioProcessor, *audioProcessor.perspective, 6};
|
2023-07-04 19:47:54 +00:00
|
|
|
|
2023-07-05 13:14:27 +00:00
|
|
|
juce::TextButton resetRotation{"Reset Rotation"};
|
|
|
|
juce::ToggleButton mouseRotate{"Rotate with Mouse (Esc to disable)"};
|
2024-01-30 19:29:31 +00:00
|
|
|
|
|
|
|
std::shared_ptr<SvgButton> fixedRotateX = std::make_shared<SvgButton>("fixedRotateX", juce::String(BinaryData::fixed_rotate_svg), juce::Colours::white, juce::Colours::red, audioProcessor.perspectiveEffect->fixedRotateX);
|
|
|
|
std::shared_ptr<SvgButton> fixedRotateY = std::make_shared<SvgButton>("fixedRotateY", juce::String(BinaryData::fixed_rotate_svg), juce::Colours::white, juce::Colours::red, audioProcessor.perspectiveEffect->fixedRotateY);
|
|
|
|
std::shared_ptr<SvgButton> fixedRotateZ = std::make_shared<SvgButton>("fixedRotateZ", juce::String(BinaryData::fixed_rotate_svg), juce::Colours::white, juce::Colours::red, audioProcessor.perspectiveEffect->fixedRotateZ);
|
2023-07-05 16:57:41 +00:00
|
|
|
|
2024-01-17 01:26:07 +00:00
|
|
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PerspectiveComponent)
|
2023-09-01 18:52:36 +00:00
|
|
|
};
|