//===========================================================================// // File: audcmp.hpp // // Project: MUNGA Brick: Audio manager // // Contents: // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 01/30/95 ECH Initial coding. // //---------------------------------------------------------------------------// // Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #pragma once #include "Adept.hpp" #include "Channel.hpp" namespace Adept { //######################################################################### //######################## RandomizerOf ############################# //######################################################################### template class RandomizerOf: public ChannelOf { public: static void InitializeClass(); static void TerminateClass(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Constructor/Destructor // public: ~RandomizerOf(); static RandomizerOf* Create( MemoryStream *stream, ComponentWeb *owning_web ); protected: RandomizerOf( ClassData *class_data, MemoryStream *stream, ComponentWeb *owning_web ); void SkipStreamData(MemoryStream *stream); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Virtual data // public: static ClassData *DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Component execution // public: void Execute(); protected: T minValue, valueRange; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Tool Support // public: static ClassData* CreateFactoryRequest(FactoryRequestParameters *parameters); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Test support // public: void TestInstance(); }; // // Class Data Support // template ChannelOf::ClassData* RandomizerOf::DefaultData = NULL; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // template void RandomizerOf::TerminateClass() { Unregister_Object(DefaultData); delete DefaultData; DefaultData = NULL; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // template RandomizerOf::~RandomizerOf() { } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // template RandomizerOf::RandomizerOf( ClassData *class_data, MemoryStream *stream, ComponentWeb *owning_web ): ChannelOf(class_data, stream, owning_web) { *stream >> minValue >> valueRange; Verify(valueRange >= 0); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // template void RandomizerOf::SkipStreamData(MemoryStream *stream) { Check_Object(this); Check_Object(stream); ChannelOf::SkipStreamData(stream); #if defined(_ARMOR) Scalar value; *stream >> value; Verify(value == minValue); *stream >> value; Verify(value == valueRange); #else stream->AdvancePointer(2*sizeof(T)); #endif } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // template void RandomizerOf::TestInstance() { Verify(IsDerivedFrom(DefaultData)); } }