Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
173 lines
5.2 KiB
C++
173 lines
5.2 KiB
C++
//===========================================================================//
|
|
// File: HilAdjust.cpp
|
|
// Project: MechWarrior 4
|
|
// Contents: Plugin to adjust height of max anmiations
|
|
//---------------------------------------------------------------------------//
|
|
// Date Who Modification //
|
|
// -------- --- ---------------------------------------------------------- //
|
|
// 04/28/99 JSE Initial coding,
|
|
//---------------------------------------------------------------------------//
|
|
// Copyright (C) 1998, Fasa Interactive, Inc.
|
|
// All Rights reserved worldwide
|
|
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL
|
|
//===========================================================================//
|
|
|
|
#if !defined(AFX_HILLADJUST_H__68E70A2D_B863_11D1_98AD_0040051EDCE7__INCLUDED_)
|
|
#define AFX_HILLADJUST_H__68E70A2D_B863_11D1_98AD_0040051EDCE7__INCLUDED_
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
#ifndef __AFXWIN_H__
|
|
#error include 'stdafx.h' before including this file for PCH
|
|
#endif
|
|
|
|
|
|
#ifdef STRICT // Already defined by stdafx,
|
|
#undef STRICT // so we avoid warning linking msg
|
|
#endif
|
|
#ifdef _MBCS // The same as above
|
|
#undef _MBCS
|
|
#endif
|
|
|
|
class HillAdjustPanel;
|
|
|
|
#include "AnimationSuite.h"
|
|
|
|
|
|
|
|
#ifndef __HILLADJUST__
|
|
#define __HILLADJUST__
|
|
|
|
|
|
#define TIME_TO_FRAME(time, frame) \
|
|
if (GetTicksPerFrame() != 0 || time != 0) \
|
|
{ \
|
|
frame = (int)((float)time / (float)GetTicksPerFrame()); \
|
|
} \
|
|
else \
|
|
{ \
|
|
frame = 0; \
|
|
}
|
|
|
|
class HillAdjustPanel : public UtilityObj {
|
|
|
|
protected:
|
|
HINSTANCE m_hInstance;
|
|
IUtil* m_iu;
|
|
|
|
enum {
|
|
UpAngleType,
|
|
DownAngleType,
|
|
LeftAngleType,
|
|
RightAngleType
|
|
};
|
|
|
|
public:
|
|
Interface* m_ip;
|
|
HWND m_hPanel, m_hQuickFile;
|
|
int m_angleEnum;
|
|
int m_leaveOriginalCurves;
|
|
int m_leaveOriginalTangents;
|
|
int m_scaleInPlace;
|
|
|
|
ISpinnerControl *m_angleSpinner;
|
|
Stuff::Scalar m_angleSlope;
|
|
|
|
ISpinnerControl *m_rootScalePosXControl;
|
|
ISpinnerControl *m_rootScalePosYControl;
|
|
ISpinnerControl *m_rootScalePosZControl;
|
|
|
|
ISpinnerControl *m_rootScaleRotXControl;
|
|
ISpinnerControl *m_rootScaleRotYControl;
|
|
ISpinnerControl *m_rootScaleRotZControl;
|
|
|
|
ISpinnerControl *m_rootMovePosXControl;
|
|
ISpinnerControl *m_rootMovePosYControl;
|
|
ISpinnerControl *m_rootMovePosZControl;
|
|
|
|
ISpinnerControl *m_rootMoveRotXControl;
|
|
ISpinnerControl *m_rootMoveRotYControl;
|
|
ISpinnerControl *m_rootMoveRotZControl;
|
|
|
|
|
|
ISpinnerControl *m_hipScaleControl;
|
|
ISpinnerControl *m_hipMoveControl;
|
|
ISpinnerControl *m_torsoScaleXControl;
|
|
ISpinnerControl *m_torsoScaleYControl;
|
|
ISpinnerControl *m_torsoScaleZControl;
|
|
|
|
ISpinnerControl *m_leftFootScaleCloseControl;
|
|
ISpinnerControl *m_rightFootScaleCloseControl;
|
|
|
|
Stuff::Point3D m_rootPosScale;
|
|
Stuff::Point3D m_rootRotScale;
|
|
Stuff::Point3D m_rootPosMove;
|
|
Stuff::Point3D m_rootRotMove;
|
|
|
|
Stuff::Point3D m_hipScale;
|
|
Stuff::Point3D m_hipMove;
|
|
Stuff::Point3D m_torsoScale;
|
|
|
|
Stuff::Point3D m_leftFootPosScale;
|
|
Stuff::Point3D m_rightFootPosScale;
|
|
|
|
// Constructor & Destructor
|
|
HillAdjustPanel() :m_angleEnum(-1) {}
|
|
virtual ~HillAdjustPanel() {}
|
|
|
|
// Overides of the UtilityObj class
|
|
void BeginEditParams(Interface* ip, IUtil* iu);
|
|
void EndEditParams(Interface* ip, IUtil* iu);
|
|
void DeleteThis() {}
|
|
void Init(HWND hWnd);
|
|
void Destroy(HWND hWnd);
|
|
|
|
//Specific Methods
|
|
void AdjustToHill();
|
|
|
|
void ConvertTM(Control *c);
|
|
void Convert(Control *parent_c, Control *c, int location);
|
|
void SampleController(Control *parent_c, Control *c, int location);
|
|
|
|
void AdjustGeneral(void);
|
|
|
|
void AdjustUpHill(void);
|
|
void AdjustDownHill(void);
|
|
void AdjustLeftHill(void);
|
|
void AdjustRightHill(void);
|
|
|
|
void ScaleNodePosition(INode *node, Stuff::Point3D scale);
|
|
void ScaleNodeRotation(INode *node, Stuff::Point3D scale);
|
|
void MoveNodePosition(INode *node, Stuff::Point3D scale);
|
|
void MoveNodeRotation(INode *node, Stuff::Point3D scale);
|
|
|
|
void ScaleNodeAll(Control *c, float scale);
|
|
void MoveNodeAll(Control *c, float scale);
|
|
|
|
|
|
INode* FindNode(INode* node, const char *name_of_joint);
|
|
|
|
Stuff::Scalar GetKeyValue(Control *c, IKeyControl *ikeys, int key_number);
|
|
int GetKeyTime(Control *c, IKeyControl *ikeys, int key_number);
|
|
|
|
void MoveKey(Control *c, IKeyControl *ikeys, Stuff::Scalar amount, int key_number);
|
|
void ScaleKey(Control *c, IKeyControl *ikeys, Stuff::Scalar amount, Stuff::Scalar median,int key_number);
|
|
|
|
//void RotateTangents(Control *c, IKeyControl *ikeys, Stuff::Scalar intan_amount, Stuff::Scalar outttan_amount, int key_number);
|
|
void RotateTangents(Control *c, IKeyControl *ikeys, Stuff::Scalar height, int key_number);
|
|
void LoadValues(HWND);
|
|
void SaveValues();
|
|
};
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif
|
|
|
|
//{{AFX_INSERT_LOCATION}}
|
|
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
|
|
|
#endif // !defined(AFX_HILLADJUST_H__68E70A2D_B863_11D1_98AD_0040051EDCE7__INCLUDED_)
|