diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | core/qmpmidimapperrtmidi.cpp | 2 | ||||
-rw-r--r-- | core/qmpmidimappers.hpp | 2 | ||||
-rw-r--r-- | qmidiplayer-desktop/qmpefxwindow.ui | 918 | ||||
-rw-r--r-- | qmidiplayer-desktop/qmpmainwindow.cpp | 1 | ||||
-rw-r--r-- | qmidiplayer-desktop/qmpplugin.cpp | 2 | ||||
-rw-r--r-- | visualization/extrasmeltutils.cpp | 33 | ||||
-rw-r--r-- | visualization/extrasmeltutils.hpp | 54 |
8 files changed, 576 insertions, 440 deletions
@@ -1,3 +1,7 @@ +2016-05-15 0.8.1 alpha +Initial stubs for the particle system. +Use layouts in the effects window. + 2016-05-14 0.8.1 alpha This _should_ fix building under arch linux. (Linking order problems and include problems). diff --git a/core/qmpmidimapperrtmidi.cpp b/core/qmpmidimapperrtmidi.cpp index 059ca77..9515a0b 100644 --- a/core/qmpmidimapperrtmidi.cpp +++ b/core/qmpmidimapperrtmidi.cpp @@ -1,7 +1,7 @@ #include <cstdio> #include <cstring> #include <vector> -#include "RtMidi.h" +#include RT_MIDI_H #include "qmpmidimappers.hpp" RtMidiOut* qmpMidiMapperRtMidi::dummy=NULL; qmpMidiMapperRtMidi::qmpMidiMapperRtMidi() diff --git a/core/qmpmidimappers.hpp b/core/qmpmidimappers.hpp index ae4fa3f..7b9ff0e 100644 --- a/core/qmpmidimappers.hpp +++ b/core/qmpmidimappers.hpp @@ -1,6 +1,6 @@ #ifndef QMPMIDIMAPPERS_H #define QMPMIDIMAPPERS_H -#include "RtMidi.h" +#include RT_MIDI_H class qmpMidiMapperRtMidi { private: diff --git a/qmidiplayer-desktop/qmpefxwindow.ui b/qmidiplayer-desktop/qmpefxwindow.ui index 4a1e0c6..d7e2245 100644 --- a/qmidiplayer-desktop/qmpefxwindow.ui +++ b/qmidiplayer-desktop/qmpefxwindow.ui @@ -6,20 +6,20 @@ <rect> <x>0</x> <y>0</y> - <width>546</width> - <height>177</height> + <width>600</width> + <height>186</height> </rect> </property> <property name="minimumSize"> <size> - <width>546</width> - <height>177</height> + <width>600</width> + <height>186</height> </size> </property> <property name="maximumSize"> <size> - <width>546</width> - <height>177</height> + <width>600</width> + <height>186</height> </size> </property> <property name="windowTitle"> @@ -31,193 +31,225 @@ <property name="title"> <string>Reverb</string> </property> - <widget class="QCheckBox" name="cbEnabledR"> - <property name="geometry"> - <rect> - <x>80</x> - <y>4</y> - <width>21</width> - <height>24</height> - </rect> - </property> - <property name="text"> - <string/> - </property> - </widget> - <widget class="QDial" name="dRoom"> - <property name="geometry"> - <rect> - <x>10</x> - <y>30</y> - <width>50</width> - <height>51</height> - </rect> - </property> - <property name="maximum"> - <number>120</number> - </property> - <property name="notchesVisible"> - <bool>true</bool> - </property> - </widget> - <widget class="QDial" name="dDamp"> - <property name="geometry"> - <rect> - <x>200</x> - <y>30</y> - <width>50</width> - <height>51</height> - </rect> - </property> - <property name="maximum"> - <number>100</number> - </property> - <property name="notchesVisible"> - <bool>true</bool> - </property> - </widget> - <widget class="QDial" name="dWidth"> - <property name="geometry"> - <rect> - <x>10</x> - <y>103</y> - <width>50</width> - <height>51</height> - </rect> - </property> - <property name="maximum"> - <number>100</number> - </property> - <property name="notchesVisible"> - <bool>true</bool> - </property> - </widget> - <widget class="QDial" name="dLevelR"> - <property name="geometry"> - <rect> - <x>200</x> - <y>103</y> - <width>50</width> - <height>51</height> - </rect> - </property> - <property name="maximum"> - <number>100</number> - </property> - <property name="notchesVisible"> - <bool>true</bool> - </property> - </widget> - <widget class="QLabel" name="lbRoom"> - <property name="geometry"> - <rect> - <x>60</x> - <y>30</y> - <width>41</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Room</string> - </property> - </widget> - <widget class="QSpinBox" name="sbRoom"> - <property name="geometry"> - <rect> - <x>60</x> - <y>50</y> - <width>51</width> - <height>21</height> - </rect> - </property> - <property name="maximum"> - <number>120</number> - </property> - </widget> - <widget class="QLabel" name="lbDamp"> - <property name="geometry"> - <rect> - <x>140</x> - <y>30</y> - <width>51</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Damp</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - <widget class="QSpinBox" name="sbDamp"> - <property name="geometry"> - <rect> - <x>140</x> - <y>50</y> - <width>56</width> - <height>21</height> - </rect> - </property> - <property name="maximum"> - <number>100</number> - </property> - </widget> - <widget class="QLabel" name="lbWidth"> - <property name="geometry"> - <rect> - <x>60</x> - <y>100</y> - <width>51</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Width</string> - </property> - </widget> - <widget class="QSpinBox" name="sbWidth"> - <property name="geometry"> - <rect> - <x>60</x> - <y>120</y> - <width>56</width> - <height>21</height> - </rect> - </property> - <property name="maximum"> - <number>100</number> - </property> - </widget> - <widget class="QLabel" name="lbLevelR"> - <property name="geometry"> - <rect> - <x>145</x> - <y>100</y> - <width>51</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Level</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - <widget class="QSpinBox" name="sbLevelR"> - <property name="geometry"> - <rect> - <x>140</x> - <y>120</y> - <width>56</width> - <height>21</height> - </rect> - </property> - <property name="maximum"> - <number>100</number> - </property> - </widget> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>2</number> + </property> + <property name="topMargin"> + <number>2</number> + </property> + <property name="rightMargin"> + <number>2</number> + </property> + <property name="bottomMargin"> + <number>2</number> + </property> + <item> + <widget class="QCheckBox" name="cbEnabledR"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Enabled</string> + </property> + </widget> + </item> + <item> + <layout class="QGridLayout" name="gridLayout"> + <property name="spacing"> + <number>6</number> + </property> + <item row="1" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QDial" name="dWidth"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="notchesVisible"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QLabel" name="lbWidth"> + <property name="text"> + <string>Width</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="sbWidth"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>100</number> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item row="0" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QDial" name="dRoom"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>120</number> + </property> + <property name="notchesVisible"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="lbRoom"> + <property name="text"> + <string>Room</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="sbRoom"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>120</number> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item row="0" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QLabel" name="lbDamp"> + <property name="text"> + <string>Damp</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="sbDamp"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>100</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QDial" name="dDamp"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="notchesVisible"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QLabel" name="lbLevelR"> + <property name="text"> + <string>Level</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="sbLevelR"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>100</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QDial" name="dLevelR"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="notchesVisible"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + </layout> </widget> </item> <item> @@ -225,250 +257,262 @@ <property name="title"> <string>Chorus</string> </property> - <widget class="QCheckBox" name="cbEnabledC"> - <property name="geometry"> - <rect> - <x>80</x> - <y>4</y> - <width>21</width> - <height>24</height> - </rect> - </property> - <property name="text"> - <string/> - </property> - </widget> - <widget class="QDial" name="dFeedBack"> - <property name="geometry"> - <rect> - <x>10</x> - <y>30</y> - <width>50</width> - <height>51</height> - </rect> - </property> - <property name="maximum"> - <number>99</number> - </property> - <property name="notchesVisible"> - <bool>true</bool> - </property> - </widget> - <widget class="QDial" name="dRate"> - <property name="geometry"> - <rect> - <x>200</x> - <y>30</y> - <width>50</width> - <height>51</height> - </rect> - </property> - <property name="minimum"> - <number>29</number> - </property> - <property name="maximum"> - <number>500</number> - </property> - <property name="value"> - <number>29</number> - </property> - <property name="notchesVisible"> - <bool>true</bool> - </property> - </widget> - <widget class="QDial" name="dDepth"> - <property name="geometry"> - <rect> - <x>10</x> - <y>103</y> - <width>50</width> - <height>51</height> - </rect> - </property> - <property name="maximum"> - <number>210</number> - </property> - <property name="notchesVisible"> - <bool>true</bool> - </property> - </widget> - <widget class="QDial" name="dLevelC"> - <property name="geometry"> - <rect> - <x>200</x> - <y>103</y> - <width>50</width> - <height>51</height> - </rect> - </property> - <property name="maximum"> - <number>100</number> - </property> - <property name="notchesVisible"> - <bool>true</bool> - </property> - </widget> - <widget class="QLabel" name="lbFeedBack"> - <property name="geometry"> - <rect> - <x>60</x> - <y>30</y> - <width>71</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Feedback</string> - </property> - </widget> - <widget class="QSpinBox" name="sbFeedBack"> - <property name="geometry"> - <rect> - <x>60</x> - <y>50</y> - <width>51</width> - <height>21</height> - </rect> - </property> - <property name="maximum"> - <number>99</number> - </property> - </widget> - <widget class="QLabel" name="lbRate"> - <property name="geometry"> - <rect> - <x>140</x> - <y>30</y> - <width>51</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Rate</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - <widget class="QLabel" name="lbDepth"> - <property name="geometry"> - <rect> - <x>60</x> - <y>100</y> - <width>51</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Depth</string> - </property> - </widget> - <widget class="QLabel" name="lbLevelC"> - <property name="geometry"> - <rect> - <x>145</x> - <y>100</y> - <width>51</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Level</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - <widget class="QSpinBox" name="sbLevelC"> - <property name="geometry"> - <rect> - <x>140</x> - <y>120</y> - <width>56</width> - <height>21</height> - </rect> - </property> - <property name="maximum"> - <number>100</number> - </property> - </widget> - <widget class="QDoubleSpinBox" name="sbRate"> - <property name="geometry"> - <rect> - <x>137</x> - <y>50</y> - <width>61</width> - <height>21</height> - </rect> - </property> - <property name="minimum"> - <double>0.290000000000000</double> - </property> - <property name="maximum"> - <double>5.000000000000000</double> - </property> - <property name="singleStep"> - <double>0.100000000000000</double> - </property> - </widget> - <widget class="QLabel" name="lbLFO"> - <property name="geometry"> - <rect> - <x>35</x> - <y>77</y> - <width>41</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>LFO</string> - </property> - </widget> - <widget class="QRadioButton" name="rbSine"> - <property name="geometry"> - <rect> - <x>70</x> - <y>77</y> - <width>61</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Sine</string> - </property> - </widget> - <widget class="QRadioButton" name="rbTriangle"> - <property name="geometry"> - <rect> - <x>145</x> - <y>77</y> - <width>91</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Trian&gle</string> - </property> - </widget> - <widget class="QDoubleSpinBox" name="sbDepth"> - <property name="geometry"> - <rect> - <x>60</x> - <y>120</y> - <width>51</width> - <height>21</height> - </rect> - </property> - <property name="decimals"> - <number>1</number> - </property> - <property name="maximum"> - <double>21.000000000000000</double> - </property> - <property name="singleStep"> - <double>0.100000000000000</double> - </property> - </widget> + <layout class="QVBoxLayout" name="verticalLayout_10"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>2</number> + </property> + <property name="topMargin"> + <number>2</number> + </property> + <property name="rightMargin"> + <number>2</number> + </property> + <property name="bottomMargin"> + <number>2</number> + </property> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_8"> + <item> + <widget class="QCheckBox" name="cbEnabledC"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Enabled</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="lbLFO"> + <property name="text"> + <string>LFO</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="rbSine"> + <property name="text"> + <string>Si&ne</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="rbTriangle"> + <property name="text"> + <string>Trian&gle</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QGridLayout" name="gridLayout_2"> + <property name="spacing"> + <number>6</number> + </property> + <item row="0" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_9"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="QLabel" name="lbRate"> + <property name="text"> + <string>Rate</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QDoubleSpinBox" name="sbRate"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimum"> + <double>0.290000000000000</double> + </property> + <property name="maximum"> + <double>5.000000000000000</double> + </property> + <property name="singleStep"> + <double>0.100000000000000</double> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QDial" name="dRate"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimum"> + <number>29</number> + </property> + <property name="maximum"> + <number>500</number> + </property> + <property name="value"> + <number>29</number> + </property> + <property name="notchesVisible"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + <item row="0" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_6"> + <item> + <widget class="QDial" name="dFeedBack"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>99</number> + </property> + <property name="notchesVisible"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <item> + <widget class="QLabel" name="lbFeedBack"> + <property name="text"> + <string>Feedback</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="sbFeedBack"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>99</number> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item row="1" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_7"> + <item> + <widget class="QDial" name="dDepth"> + <property name="maximum"> + <number>210</number> + </property> + <property name="notchesVisible"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <widget class="QLabel" name="lbDepth"> + <property name="text"> + <string>Depth</string> + </property> + </widget> + </item> + <item> + <widget class="QDoubleSpinBox" name="sbDepth"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="decimals"> + <number>1</number> + </property> + <property name="maximum"> + <double>21.000000000000000</double> + </property> + <property name="singleStep"> + <double>0.100000000000000</double> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item row="1" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_10"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_9"> + <item> + <widget class="QLabel" name="lbLevelC"> + <property name="text"> + <string>Level</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="sbLevelC"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>100</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QDial" name="dLevelC"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="notchesVisible"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + </layout> </widget> </item> </layout> diff --git a/qmidiplayer-desktop/qmpmainwindow.cpp b/qmidiplayer-desktop/qmpmainwindow.cpp index 762da0f..ed3c884 100644 --- a/qmidiplayer-desktop/qmpmainwindow.cpp +++ b/qmidiplayer-desktop/qmpmainwindow.cpp @@ -61,6 +61,7 @@ qmpMainWindow::qmpMainWindow(QWidget *parent) : qmpMainWindow::~qmpMainWindow() { + pmgr->deinitPlugins(); delete pmgr;if(player)delete player; if(timer)delete timer; delete helpw;helpw=NULL; diff --git a/qmidiplayer-desktop/qmpplugin.cpp b/qmidiplayer-desktop/qmpplugin.cpp index 79ea93c..ef31472 100644 --- a/qmidiplayer-desktop/qmpplugin.cpp +++ b/qmidiplayer-desktop/qmpplugin.cpp @@ -84,7 +84,7 @@ void qmpPluginManager::initPlugins() void qmpPluginManager::deinitPlugins() { for(unsigned i=0;i<plugins.size();++i) - plugins[i].interface->deinit(); + {plugins[i].interface->deinit();plugins[i].enabled=false;} } qmpPluginAPI::~qmpPluginAPI(){} diff --git a/visualization/extrasmeltutils.cpp b/visualization/extrasmeltutils.cpp index d77cc4b..160f7d6 100644 --- a/visualization/extrasmeltutils.cpp +++ b/visualization/extrasmeltutils.cpp @@ -1,6 +1,7 @@ #include <cstdarg> #include "extrasmeltutils.hpp" SMELT* smEntity3DBuffer::sm=NULL; +SMELT* smParticle::sm=NULL; smVertex makeVertex(float x,float y,float z,DWORD color,float tx,float ty) {smVertex v;v.x=x;v.y=y;v.z=z;v.col=color;v.tx=tx;v.ty=ty;return v;} void smEntity3D::addVerices(int n,...) @@ -59,3 +60,35 @@ void smEntity3DBuffer::drawBatch() sm->smDrawCustomIndexedVertices(&vertices[0],&indices[0],vertices.size(),indices.size(),BLEND_ALPHABLEND,0); vertices.clear();indices.clear(); } +smParticle::smParticle(){sm=smGetInterface(SMELT_APILEVEL);} +smParticle::~smParticle(){sm->smRelease();} +void smParticle::render() +{sm->smRenderQuad(&q);} +void smParticle::update() +{ + clifespan+=sm->smGetDelta(); + vel=vel+accel;pos=pos+vel;rotv=rotv+rota;rot=rot+rotv; + size=clifespan/lifespan*(finalsize-initsize)+initsize; + color=ARGB( + (DWORD)(clifespan/lifespan*(GETA(finalcolor)-GETA(initcolor)+GETA(initcolor))), + (DWORD)(clifespan/lifespan*(GETR(finalcolor)-GETR(initcolor)+GETR(initcolor))), + (DWORD)(clifespan/lifespan*(GETG(finalcolor)-GETG(initcolor)+GETG(initcolor))), + (DWORD)(clifespan/lifespan*(GETB(finalcolor)-GETB(initcolor)+GETB(initcolor)))); + //set up the quad +} +smParticleSystem::smParticleSystem(){particles.clear();posGenerator=NULL;} +smParticleSystem::~smParticleSystem() +{for(int i=0;i<particles.size();++i)delete particles[i];particles.clear();} +void smParticleSystem::setParticleSystemInfo(smParticleSystemInfo _psinfo) +{psinfo=_psinfo;} +void smParticleSystem::setPos(smvec3d _pos){pos=_pos;} +void smParticleSystem::setPSEmissionPosGen(smPSEmissionPositionGenerator *_gen) +{posGenerator=_gen;} +void smParticleSystem::startPS() +{} +void smParticleSystem::stopPS() +{} +void smParticleSystem::updatePS() +{} +void smParticleSystem::renderPS() +{} diff --git a/visualization/extrasmeltutils.hpp b/visualization/extrasmeltutils.hpp index 8a4a1bc..092fbfb 100644 --- a/visualization/extrasmeltutils.hpp +++ b/visualization/extrasmeltutils.hpp @@ -29,5 +29,59 @@ class smEntity3DBuffer void drawBatch(); }; +class smPSEmissionPositionGenerator +{ + public: + virtual smvec3d genPos(); +}; +class smParticleSystemInfo +{ + public: + smvec3d vel,velvar,acc,accvar; + smvec3d rotv,rotvvar,rota,rotavar; + double lifespan,lifespanvar; + int maxcount,emissioncount,ecvar; + double emissiondelay,edvar; + double initsize,initsizevar; + double finalsize,finalsizevar; + DWORD initcolor,initcolorvar; + DWORD finalcolor,finalcolorvar; + SMTEX texture;int blend; +}; +class smParticle +{ + friend class smParticleSystem; + private: + static SMELT* sm; + smvec3d pos,rot; + smvec3d vel,accel,rotv,rota; + double lifespan,clifespan; + double initsize,finalsize,size; + DWORD color,initcolor,finalcolor; + smQuad q; + public: + smParticle(); + ~smParticle(); + void render(); + void update(); +}; +class smParticleSystem +{ + private: + std::vector<smParticle*> particles; + smParticleSystemInfo psinfo; + smvec3d pos; + smPSEmissionPositionGenerator* posGenerator; + public: + smParticleSystem(); + ~smParticleSystem(); + void setParticleSystemInfo(smParticleSystemInfo _psinfo); + void setPos(smvec3d _pos); + void setPSEmissionPosGen(smPSEmissionPositionGenerator* _gen); + void startPS(); + void stopPS(); + void updatePS(); + void renderPS(); +}; extern smVertex makeVertex(float x,float y,float z,DWORD color,float tx,float ty); #endif // EXTRASMELTUTILS_H |