142 lines
5.1 KiB
C++
142 lines
5.1 KiB
C++
// * This file is part of the COLOBOT source code
|
|
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
|
|
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
|
|
// *
|
|
// * 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/.
|
|
|
|
// model.h
|
|
|
|
#pragma once
|
|
|
|
#include "engine.h"
|
|
#include "common/event.h"
|
|
#include "modfile.h"
|
|
#include "vertex.h"
|
|
#include "math/point.h"
|
|
|
|
|
|
class CInstanceManager;
|
|
class CModFile;
|
|
class CInterface;
|
|
|
|
|
|
namespace Gfx {
|
|
|
|
class CEngine;
|
|
|
|
|
|
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, Gfx::VertexTex2 &vertex);
|
|
bool SetVertex(int rank, Gfx::VertexTex2 &vertex);
|
|
Math::Vector RetSelectCDG();
|
|
Math::Vector RetSelectNormal();
|
|
void SmoothSelect();
|
|
void PlaneSelect();
|
|
void ColorSelect();
|
|
void StateSelect();
|
|
void MoveSelect(Math::Vector move);
|
|
void OperSelect(Math::Vector move, char oper);
|
|
void ReadScript(char *filename);
|
|
void BBoxCompute(Math::Vector &min, Math::Vector &max);
|
|
bool IsMappingSelectPlausible(Gfx::Mapping D3Dmode);
|
|
void MappingSelect(int mode, int rotate, bool bMirrorX, bool bMirrorY, Math::Point ti, Math::Point ts, char *texName);
|
|
void MappingSelectSpherical(int mode, int rotate, bool bMirrorX, bool bMirrorY, Math::Point ti, Math::Point ts, char *texName);
|
|
Math::Vector RetMappingCenter(Math::Vector pos, Math::Vector min);
|
|
void MappingSelectCylindrical(int mode, int rotate, bool bMirrorX, bool bMirrorY, Math::Point ti, Math::Point ts, char *texName);
|
|
void MappingSelectFace(int mode, int rotate, bool bMirrorX, bool bMirrorY, Math::Point ti, Math::Point 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;
|
|
Gfx::CEngine* 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;
|
|
Math::Point m_textureInf;
|
|
Math::Point 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;
|
|
};
|
|
|
|
}; // namespace Gfx
|