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.
139 lines
3.6 KiB
C++
139 lines
3.6 KiB
C++
//===========================================================================//
|
|
// File: AnimationTrigger.hpp
|
|
// Project: MechWarrior 4
|
|
// Contents:
|
|
// Helper class to deal with animation triggers
|
|
//---------------------------------------------------------------------------//
|
|
// Date Who Modification //
|
|
// -------- --- ---------------------------------------------------------- //
|
|
// 07/01/98 JSE Initial coding,
|
|
//---------------------------------------------------------------------------//
|
|
// Copyright (C) 1998, Fasa Interactive, Inc.
|
|
// All Rights reserved worldwide
|
|
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL
|
|
//===========================================================================//
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "MW4.hpp"
|
|
|
|
|
|
namespace MechWarrior4
|
|
{
|
|
|
|
|
|
typedef void
|
|
(*TriggerMessageHandler)(
|
|
int trigger_value,
|
|
void *pass_data
|
|
);
|
|
|
|
|
|
|
|
class TriggerJointValue
|
|
{
|
|
public:
|
|
|
|
TriggerJointValue()
|
|
{
|
|
jointNumber = -1;
|
|
triggerNumber = -1;
|
|
}
|
|
|
|
TriggerJointValue(int joint_number, int trigger_number)
|
|
{
|
|
jointNumber = joint_number;
|
|
triggerNumber = trigger_number;
|
|
}
|
|
|
|
int jointNumber;
|
|
int triggerNumber;
|
|
|
|
TriggerJointValue&
|
|
operator=(const TriggerJointValue& value)
|
|
{
|
|
Check_Pointer(this); Check_Pointer(&value);
|
|
jointNumber = value.jointNumber; triggerNumber = value.triggerNumber;
|
|
return *this;
|
|
}
|
|
|
|
bool
|
|
operator==(const TriggerJointValue& value) const
|
|
{
|
|
return
|
|
jointNumber == value.jointNumber &&
|
|
triggerNumber == value.triggerNumber;
|
|
}
|
|
bool
|
|
operator!=(const TriggerJointValue& value) const
|
|
{
|
|
return
|
|
jointNumber != value.jointNumber ||
|
|
triggerNumber != value.triggerNumber;
|
|
}
|
|
bool
|
|
operator>(const TriggerJointValue& value) const
|
|
{
|
|
return
|
|
(jointNumber == value.jointNumber) ?
|
|
(triggerNumber > value.triggerNumber) :
|
|
(jointNumber > value.jointNumber);
|
|
}
|
|
|
|
bool
|
|
operator<(const TriggerJointValue& value) const
|
|
{
|
|
return
|
|
(jointNumber == value.jointNumber) ?
|
|
(triggerNumber < value.triggerNumber) :
|
|
(jointNumber < value.jointNumber);
|
|
}
|
|
};
|
|
|
|
//##########################################################################
|
|
//######################### AnimationTriggerManager ##################
|
|
//##########################################################################
|
|
|
|
class AnimationTrigger:
|
|
public Stuff::Plug
|
|
{
|
|
public:
|
|
|
|
AnimationTrigger(TriggerMessageHandler trigger_message_handler):
|
|
Plug(DefaultData)
|
|
{
|
|
Check_Pointer(trigger_message_handler);
|
|
triggerMessageHandler = trigger_message_handler;
|
|
}
|
|
~AnimationTrigger(){};
|
|
|
|
int triggerNumber;
|
|
|
|
TriggerMessageHandler triggerMessageHandler;
|
|
|
|
};
|
|
|
|
//##########################################################################
|
|
//######################### AnimationTrigger #########################
|
|
//##########################################################################
|
|
|
|
|
|
class AnimationTriggerManager:
|
|
public Stuff::Plug
|
|
{
|
|
public:
|
|
AnimationTriggerManager();
|
|
~AnimationTriggerManager();
|
|
|
|
|
|
Stuff::SortedChainOf<AnimationTrigger*, TriggerJointValue>
|
|
animationTriggers;
|
|
|
|
void RegisterTriggerCallback(int joint_number, int trigger_number, TriggerMessageHandler trigger_message_handler);
|
|
void DispatchTriggerMessage(int joint_number, int trigger_values, void *pass_data);
|
|
|
|
};
|
|
}
|
|
|