File: DialogParticleEditor.h

package info (click to toggle)
dhewm3 1.5.1~pre%2Bgit20200905%2Bdfsg-1
  • links: PTS, VCS
  • area: contrib
  • in suites: bullseye
  • size: 21,664 kB
  • sloc: cpp: 408,868; ansic: 1,188; objc: 1,034; python: 330; sh: 94; makefile: 11
file content (223 lines) | stat: -rw-r--r-- 6,973 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
/*
===========================================================================

Doom 3 GPL Source Code
Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.

This file is part of the Doom 3 GPL Source Code ("Doom 3 Source Code").

Doom 3 Source Code is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Doom 3 Source Code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Doom 3 Source Code.  If not, see <http://www.gnu.org/licenses/>.

In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code.  If not, please request a copy in writing from id Software at the address below.

If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.

===========================================================================
*/

#ifndef __DIALOGPARTICLEEDITOR_H__
#define __DIALOGPARTICLEEDITOR_H__

#pragma once

class CRangeSlider : public CSliderCtrl {
public:
	void SetValueRange(float _low, float _high) {
		low = _low;
		high = _high;
	}

	void SetValuePos( float val ) {
		SetPos( GetRangeMin() + ( GetRangeMax() - GetRangeMin() ) * ( val - low ) / ( high - low ) );
	}

	float GetValue() {
		return low + ( high - low ) * ( float )( GetPos() - GetRangeMin() ) / ( GetRangeMax() - GetRangeMin() );
	}
private:
	float low, high;
};

// CDialogParticleEditor dialog

class CDialogParticleEditor : public CDialog {

	DECLARE_DYNAMIC(CDialogParticleEditor)

public:
						CDialogParticleEditor(CWnd* pParent = NULL);   // standard constructor
	virtual				~CDialogParticleEditor();

	void				SelectParticle( const char *name );
	void				SetParticleVisualization( int i );
	void				SetVectorControlUpdate( idQuat rotation );

	enum { TESTMODEL, IMPACT, MUZZLE, FLIGHT, SELECTED };

	//{{AFX_VIRTUAL(CDialogParticleEditor)
	virtual void		DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	virtual BOOL		OnInitDialog();
	//}}AFX_VIRTUAL

protected:
	//{{AFX_MSG(CDialogParticleEditor)
	afx_msg void		OnCbnSelchangeComboParticles();
	afx_msg void		OnCbnSelchangeComboPath();
	afx_msg void		OnLbnSelchangeListStages();
	afx_msg void		OnBnClickedButtonAddstage();
	afx_msg void		OnBnClickedButtonRemovestage();
	afx_msg void		OnBnClickedButtonBrowsematerial();
	afx_msg void		OnBnClickedButtonBrowsecolor();
	afx_msg void		OnBnClickedButtonBrowsefadecolor();
	afx_msg void		OnBnClickedButtonBrowseEntitycolor();
	afx_msg void		OnBnClickedRadioRect();
	afx_msg void		OnBnClickedRadioSphere();
	afx_msg void		OnBnClickedRadioCylinder();
	afx_msg void		OnBnClickedRadioCone();
	afx_msg void		OnBnClickedRadioOutward();
	afx_msg void		OnBnClickedRadioView();
	afx_msg void		OnBnClickedRadioAimed();
	afx_msg void		OnBnClickedRadioX();
	afx_msg void		OnBnClickedRadioY();
	afx_msg void		OnBnClickedRadioZ();
	afx_msg void		OnBnClickedButtonHidestage();
	afx_msg void		OnBnClickedButtonShowstage();
	afx_msg void		OnBnClickedCheckOneshot();
	afx_msg void		OnBnClickedButtonNew();
	afx_msg void		OnBnClickedButtonSave();
	afx_msg void		OnBnClickedButtonSaveAs();
	afx_msg void		OnBnClickedButtonSaveParticles();
	afx_msg void		OnBnClickedWorldGravity();
	afx_msg void		OnBnClickedEntityColor();
	afx_msg void		OnBnClickedTestModel();
	afx_msg void		OnBnClickedImpact();
	afx_msg void		OnBnClickedMuzzle();
	afx_msg void		OnBnClickedFlight();
	afx_msg void		OnBnClickedSelected();
	afx_msg void		OnBnClickedDoom();
	afx_msg void		OnBnClickedButtonUpdate();
	afx_msg void		OnBnClickedParticleMode();
	afx_msg	void		OnBtnYup();
	afx_msg	void		OnBtnYdn();
	afx_msg	void		OnBtnXdn();
	afx_msg	void		OnBtnXup();
	afx_msg	void		OnBtnZup();
	afx_msg	void		OnBtnZdn();
	afx_msg	void		OnBtnDrop();
	afx_msg void		OnDestroy();
	afx_msg void		OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()

private:
	//{{AFX_DATA(CDialogParticleEditor)
	enum				{ IDD = IDD_DIALOG_PARTICLE_EDITOR };
	CComboBox			comboParticle;
	CListBox			listStages;
	CRangeSlider		sliderBunching;
	CRangeSlider		sliderFadeIn;
	CRangeSlider		sliderFadeOut;
	CRangeSlider		sliderFadeFraction;
	CRangeSlider		sliderCount;
	CRangeSlider		sliderTime;
	CRangeSlider		sliderGravity;
	CRangeSlider		sliderSpeedFrom;
	CRangeSlider		sliderSpeedTo;
	CRangeSlider		sliderRotationFrom;
	CRangeSlider		sliderRotationTo;
	CRangeSlider		sliderSizeFrom;
	CRangeSlider		sliderSizeTo;
	CRangeSlider		sliderAspectFrom;
	CRangeSlider		sliderAspectTo;
	CVectorCtl			vectorControl;
	CString				depthHack;
	CString				matName;
	CString				animFrames;
	CString				animRate;
	CString				color;
	CString				fadeColor;
	CString				fadeIn;
	CString				fadeOut;
	CString				fadeFraction;
	CString				count;
	CString				time;
	CString				timeOffset;
	CString				deadTime;
	CString				gravity;
	CString				bunching;
	CString				offset;
	CString				xSize;
	CString				ySize;
	CString				zSize;
	CString				ringOffset;
	CStatic				staticDirectionParm;
	CString				directionParm;
	int					direction;
	int					orientation;
	int					distribution;
	CString				viewOrigin;
	CString				speedFrom;
	CString				speedTo;
	CString				rotationFrom;
	CString				rotationTo;
	CString				sizeFrom;
	CString				sizeTo;
	CString				aspectFrom;
	CString				aspectTo;
	CString				customPath;
	CString				customParms;
	CString				trails;
	CString				trailTime;
	CString				cycles;
	CEdit				editRingOffset;
	BOOL				worldGravity;
	BOOL				entityColor;
	BOOL				randomDistribution;
	CString				initialAngle;
	CString				boundsExpansion;
	CString				customDesc;

	BOOL				particleMode;
	//}}AFX_DATA

	int					visualization;

private:
	void				EnumParticles();
	void				AddStage();
	void				RemoveStage();
	void				ShowStage();
	void				HideStage();
	idDeclParticle *	GetCurParticle();
	idParticleStage *	GetCurStage();
	void				ClearDlgVars();
	void				CurStageToDlgVars();
	void				DlgVarsToCurStage();
	void				ShowCurrentStage();
	void				UpdateControlInfo();
	void				SetParticleView();
	void				UpdateParticleData();
	CToolTipCtrl		toolTipCtrl;
	BOOL				PreTranslateMessage(MSG *pMsg);
	void				SetSelectedModel( const char *val );
	void				EnableStageControls();
	void				EnableEditControls();
	void				UpdateSelectedOrigin( float x, float y, float z );
	bool				mapModified;
protected:
	virtual void OnOK();
};

#endif /* !__DIALOGPARTICLEEDITOR_H__ */