#pragma once #include "vtvsub.h" #include "..\munga\linmtrx.h" class Motion; //############################################################################ //Generic Gun Subsystem Resource struct GenericGun__SubsystemResource : public VTVSubsystem::SubsystemResource { ResourceDescription::ResourceID ammoVideoResourceID; int rearSiteIndex; }; //############################################################################ //############### Class Generic Gun ################################## //############################################################################ class GenericGun: public VTVSubsystem { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Shared Data Support // public: static Derivation *GetClassDerivations(); static SharedData DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Messaging Support // public: enum { ConfigureMappablesMessageID = VTVSubsystem::NextMessageID, ChooseButtonMessageID, NextMessageID }; void ConfigureMappablesMessageHandler( ReceiverDataMessageOf *message ); void ChooseButtonMessageHandler( ReceiverDataMessageOf *message ); protected: static const HandlerEntry MessageHandlerEntries[]; static MessageHandlerSet MessageHandlers; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Attribute Support // public: enum { TriggerStateAttributeID = VTVSubsystem::NextAttributeID, PercentDoneAttributeID, NextAttributeID }; private: static const IndexEntry AttributePointers[]; public: //static AttributeIndexSet AttributeIndex static AttributeIndexSet& GetAttributeIndex(); // // public attribute std::declarations go here // public: int triggerState; Scalar percentDone; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Model Support // public: enum { Firing = VTVSubsystem::StateCount, StateCount }; typedef void (GenericGun::*Performance)(Scalar time_slice); void GenericGunSimulation(Scalar time_slice); void SetPerformance(Performance performance) { Check(this); activePerformance = (Simulation::Performance)performance; } virtual int Fire() {std::cout<<"GenericGun::Fire() Should not be here!"<