#pragma once #include "explode.h" #include "segment.h" #include "slot.h" //########################################################################## //########################## AudioEntity ############################# //########################################################################## class AudioEntity__MakeMessage; class AudioEntity : public Explosion { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Public types // public: typedef AudioEntity__MakeMessage MakeMessage; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Construction and Destruction // public: AudioEntity(MakeMessage *creation_message, SharedData &shared_data = DefaultData); ~AudioEntity(); static AudioEntity* Make(MakeMessage *creation_message); Logical TestInstance() const; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Model Support // public: typedef void (AudioEntity::*Performance)(Scalar time_slice); void SetPerformance(Performance performance) { Check(this); activePerformance = (Simulation::Performance)performance; } void AudioEntitySimulation(Scalar time_slice); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Shared Data support // public: static Derivation *GetClassDerivations(); static SharedData DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Private Data // private: SlotOf parentEntitySocket; EntitySegment *parentEntitySegment; }; //########################################################################## //#################### AudioEntity__MakeMessage ###################### //########################################################################## class AudioEntity__MakeMessage : public Explosion::MakeMessage { public: AudioEntity__MakeMessage(ResourceDescription::ResourceID resource_ID, Entity *parent_entity, EntitySegment *parent_entity_segment); EntityID parentEntityID; EntitySegment *parentEntitySegment; };