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
|
// * This file is part of the COLOBOT source code
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
// *
// * This program 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.
// *
// * This program 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 this program. If not, see http://www.gnu.org/licenses/.
#ifndef _MODEL_H_
#define _MODEL_H_
class CInstanceManager;
class CD3DEngine;
class CModFile;
class CInterface;
class CModel
{
public:
CModel(CInstanceManager* iMan);
~CModel();
void StartUserAction();
void StopUserAction();
BOOL EventProcess(const Event &event);
void InitView();
void InitViewFromSelect();
void UpdateView();
void ViewMove(const Event &event, float speed);
protected:
BOOL EventFrame(const Event &event);
BOOL GetVertex(int rank, D3DVERTEX2 &vertex);
BOOL SetVertex(int rank, D3DVERTEX2 &vertex);
D3DVECTOR RetSelectCDG();
D3DVECTOR RetSelectNormal();
void SmoothSelect();
void PlaneSelect();
void ColorSelect();
void StateSelect();
void MoveSelect(D3DVECTOR move);
void OperSelect(D3DVECTOR move, char oper);
void ReadScript(char *filename);
void BBoxCompute(D3DVECTOR &min, D3DVECTOR &max);
BOOL IsMappingSelectPlausible(D3DMaping D3Dmode);
void MappingSelect(int mode, int rotate, BOOL bMirrorX, BOOL bMirrorY, FPOINT ti, FPOINT ts, char *texName);
void MappingSelectSpherical(int mode, int rotate, BOOL bMirrorX, BOOL bMirrorY, FPOINT ti, FPOINT ts, char *texName);
D3DVECTOR RetMappingCenter(D3DVECTOR pos, D3DVECTOR min);
void MappingSelectCylindrical(int mode, int rotate, BOOL bMirrorX, BOOL bMirrorY, FPOINT ti, FPOINT ts, char *texName);
void MappingSelectFace(int mode, int rotate, BOOL bMirrorX, BOOL bMirrorY, FPOINT ti, FPOINT ts, char *texName);
void MappingSelect2(int texNum2, int subdiv, int offsetU, int offsetV, BOOL bMirrorX, BOOL bMirrorY);
void MappingSelectPlane2(int mode, BOOL bMirrorX, BOOL bMirrorY);
void MappingSelectSpherical2(BOOL bMirrorX, BOOL bMirrorY);
void MappingSelectMagic2(BOOL bMirrorX, BOOL bMirrorY);
int SearchNext(int rank, int step);
int SearchSamePlane(int first, int step);
void CurrentSearchNext(int step, BOOL bControl);
void CurrentInit();
void CurrentSelect(BOOL bSelect);
void DeselectAll();
void SelectAll();
void SelectZone(int first, int last);
void SelectTerm();
void DefaultSelect();
void SelectDelete();
void Compress();
void MinMaxSelect();
void MinMaxChange();
void UpdateInfoText();
int* RetTextureTable();
void TexturePartUpdate();
void TextureRankChange(int step);
void TexturePartChange(int step);
void PutTextureValues();
void GetTextureValues();
void GetModelName(char *buffer);
void GetDXFName(char *buffer);
void GetScriptName(char *buffer);
BOOL IsEditFocus();
protected:
CInstanceManager* m_iMan;
CD3DEngine* m_engine;
CModFile* m_modFile;
CInterface* m_interface;
float m_time;
ModelTriangle* m_triangleTable;
int m_triangleSel1;
int m_triangleSel2;
int m_mode;
int m_textureMode;
int m_textureRotate;
BOOL m_bTextureMirrorX;
BOOL m_bTextureMirrorY;
FPOINT m_textureInf;
FPOINT m_textureSup;
int m_texturePart;
int m_textureRank;
char m_textureName[20];
BOOL m_bDisplayTransparent;
BOOL m_bDisplayOnlySelection;
float m_viewHeight;
float m_viewDist;
float m_viewAngleH;
float m_viewAngleV;
int m_color;
int m_state;
int m_secondTexNum;
int m_secondSubdiv;
int m_secondOffsetU;
int m_secondOffsetV;
char m_oper;
float m_min;
float m_max;
};
#endif //_MODEL_H_
|