#pragma once #include "entity.h" //########################################################################## //##################### EyeCandy::ModelResource ##################### //########################################################################## struct EyeCandy__ModelResource { Scalar maxWaitTime; Scalar minWaitTime; }; //########################################################################## //########################### EyeCandy ############################### //########################################################################## class EyeCandy: public Entity { public: enum { effectOff = Entity::StateCount, effectOn, StateCount }; private: Scalar maxWaitTime; Scalar minWaitTime; Scalar waitTime; Scalar lastTrigger; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Shared Data support // public: static Derivation *GetClassDerivations(); static SharedData DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Model Support // public: typedef void (EyeCandy::*Performance)(Scalar time_slice); void SetPerformance(Performance performance) { Check(this); activePerformance = (Simulation::Performance)performance; } void EyeCandySimulation(Scalar time_slice); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Construction and Destruction // public: typedef EyeCandy__ModelResource ModelResource; static EyeCandy* Make(EyeCandy::MakeMessage *creation_message); EyeCandy( MakeMessage *creation_message, SharedData &virtual_data = DefaultData ); ~EyeCandy(); Logical TestInstance() const; static Logical CreateMakeMessage( MakeMessage *creation_message, NotationFile *model_file, const ResourceDirectories *directories ); static ResourceDescription::ResourceID EyeCandy::CreateModelResource( ResourceFile *resource_file, const char* model_name, NotationFile * model_file, const ResourceDirectories *directories, ModelResource *model = NULL ); };