Files
firestorm/Gameleap/code/mw4/Tools/3DSPlugins/AnimationSuite/HillAdjust.hpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
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.
2026-06-24 21:28:16 -05:00

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_)