NS/main/source/mod/AvHParticleEditorHandler.h
2014-01-23 10:46:47 +00:00

209 lines
7.2 KiB
C++

#ifndef AVHPARTICLEEDITORHANDLER_H
#define AVHPARTICLEEDITORHANDLER_H
#include "types.h"
#include <VGUI_InputSignal.h>
#include <VGUI_IntChangeSignal.h>
#include <VGUI_Slider.h>
#include "mod/AvHParticleTemplate.h"
using namespace vgui;
class AvHParticleEditorHandler : public InputSignal
{
public:
AvHParticleEditorHandler();
static void ToggleEdit();
static uint32 GetEditIndex();
static bool GetInEditMode();
static void InitHandlers();
static void SetEditIndex(uint32 inIndex);
static void Setup();
virtual void cursorMoved(int x,int y,Panel* panel);
virtual void cursorEntered(Panel* panel) {}
virtual void cursorExited(Panel* panel) {}
virtual void mousePressed(MouseCode code,Panel* panel);
virtual void mouseDoublePressed(MouseCode code,Panel* panel) {}
virtual void mouseReleased(MouseCode code,Panel* panel);
virtual void mouseWheeled(int delta,Panel* panel);
virtual void keyPressed(KeyCode code,Panel* panel) {}
virtual void keyTyped(KeyCode code,Panel* panel) {}
virtual void keyReleased(KeyCode code,Panel* panel) {}
virtual void keyFocusTicked(Panel* panel) {}
private:
static uint32 sEditIndex;
static bool sInEditMode;
};
class AvHSliderHandler : public IntChangeSignal
{
public:
AvHSliderHandler(const string& inSliderName, const string& inLabelName);
virtual void Init();
virtual void intChanged(int value, Panel* panel);
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue) = 0;
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate) = 0;
virtual string GetSliderDebugInfo() const;
virtual string GetTextFromValue(int inValue) = 0;
virtual bool GetValue(int& outValue);
virtual void RecomputeDependencies(AvHParticleTemplate* inReloadedTemplate) {}
virtual void SetText(int inValue);
virtual bool Setup();
virtual void SetValue(int inValue);
private:
string mSliderName;
string mLabelName;
};
class AvHSizeHandler : public AvHSliderHandler
{
public:
AvHSizeHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) {}
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
private:
static const int kScalar;
};
class AvHScaleHandler : public AvHSliderHandler
{
public:
AvHScaleHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) {}
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
private:
static const int kScalar;
};
class AvHGenerationRateHandler : public AvHSliderHandler
{
public:
AvHGenerationRateHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) {}
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
private:
static const int kScalar;
};
class AvHParticleLifetimeHandler : public AvHSliderHandler
{
public:
AvHParticleLifetimeHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) {}
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
private:
static const int kScalar;
};
class AvHParticleSystemLifetimeHandler : public AvHSliderHandler
{
public:
AvHParticleSystemLifetimeHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName), mEditable(false) {}
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
private:
static const int kScalar;
bool mEditable;
};
class AvHMaxParticlesHandler : public AvHSliderHandler
{
public:
AvHMaxParticlesHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) {}
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
private:
static const int kScalar;
};
class AvHDrawModeHandler : public AvHSliderHandler
{
public:
AvHDrawModeHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) {}
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
private:
static const int kScalar;
};
class AvHGenVelToggleHandler : public AvHSliderHandler
{
public:
AvHGenVelToggleHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) { this->mGenVelMode = true; }
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
bool GetGenVelMode() const;
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
virtual void RecomputeDependencies(AvHParticleTemplate* inReloadedTemplate);
private:
bool mGenVelMode;
static const int kScalar;
};
class AvHGenVelShapeHandler : public AvHSliderHandler
{
public:
AvHGenVelShapeHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) { this->mCurrentShape = PS_Point; this->mUsingEntity = false; }
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
virtual string GetTextFromValue(int inValue);
bool GetUsingEntity() const;
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
private:
ParticleShape mCurrentShape;
bool mUsingEntity;
static const int kScalar;
};
class AvHGenVelParamNumHandler : public AvHSliderHandler
{
public:
AvHGenVelParamNumHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) { this->mCurrentParamNum = 1; }
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
int GetCurrentParamNum() const;
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
virtual void RecomputeDependencies(AvHParticleTemplate* inReloadedTemplate);
private:
int mCurrentParamNum;
static const int kScalar;
};
class AvHGenVelParamsHandler : public AvHSliderHandler
{
public:
AvHGenVelParamsHandler(const string& inSliderName, const string& inLabelName) : AvHSliderHandler(inSliderName, inLabelName) { memset(&this->mCurrentParams, 0, sizeof(this->mCurrentParams)); }
virtual void ChangeTemplateFromValue(AvHParticleTemplate* inTemplate, int inValue);
virtual string GetTextFromValue(int inValue);
virtual void InitFromTemplate(const AvHParticleTemplate* inTemplate);
private:
ParticleParams mCurrentParams;
static const int kScalar;
};
#endif