//===========================================================================// // File: cammgr.hh // // Project: Munga // // Contents: Camera Interface // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 08/08/95 JM Initial coding. // // Classes: CameraInstanceManager // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #if !defined(CAMMGR_HPP) # define CAMMGR_HPP # if !defined(RESOURCE_HPP) # include # endif # if !defined(SCHAIN_HPP) # include # endif # if !defined(CAMINST_HPP) # include # endif //########################################################################## //##################### CameraInstanceManager ####################### //########################################################################## class CameraInstanceManager SIGNATURED { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // local member data // protected: // // cameraList is a circular Linked list // which holds cameraInstances // SChainOf cameraList; // // CameraIterator holds the current position in the // camera list for the lifetime of the class // & == NULL if the list is empty // SChainIteratorOf *cameraIterator; int FindUniqueCameraID(); char cameraFilename[128]; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Public Member Manipulation Functions // public: // // CameraList Manipulator Functions // void SetCamera( const Origin &new_origin, CameraInstance *camera_instance = NULL ); CameraInstance* CreateCameraInstance(const Origin &new_origin); CameraInstance* AddCameraInstance(CameraInstance *camera_instance); CameraInstance* DeleteCameraInstance(); void DeleteCameraList(); // // Iterator Manipulator Functions (Circular Chain) // CameraInstance* IncrementIterator(); CameraInstance* DecrementIterator(); CameraInstance* AdvanceIterator(const CameraInstance &camera_instance); CameraInstance* GetCurrent() const {Check(this); return cameraIterator->GetCurrent();} CameraInstance* First() { Check(this); Check(cameraIterator->GetCurrent()); cameraIterator->First(); return GetCurrent(); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // CameraList Searching and Query Functions // public: CameraInstance* FindClosestCamera(const Point3D &point_3D); CameraInstance* FindClosestCameraShowing(const Point3D *points); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Test Class Support // public: Logical TestInstance() const; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Construction and Destruction Support // public: CameraInstanceManager(); ~CameraInstanceManager(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Tool Support // protected: void InitializeCameraInstances(); public: void ReadNotationFile(); void CreateStreamedCameraInstances( ResourceFile *res_file, const char *map_name ); void WriteNotationFile(); static ResourceDescription::ResourceID CreateCameraInstancesStream( ResourceFile *resource_file, const char *camera_name, const ResourceDirectories *directories ); }; #endif