//===========================================================================// // File: eyecandy.hpp // // Project: MUNGA Brick: Model Manager // // Contents: Interface specification for moving entity class // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 01/21/95 JSE Initial coding. // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #if !defined(EYECANDY_HPP) # define EYECANDY_HPP # if !defined(ENTITY_HPP) # include # endif //########################################################################## //##################### 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 ClassDerivations; 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 ); }; #endif