//===========================================================================// // File: reticle.hh // // Project: MUNGA Brick: Model Manager // // Contents: Reticle specification // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 04/21/95 GAC Initial coding. // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #if !defined(RETICLE_HPP) # define RETICLE_HPP # if !defined(POINT3D_HPP) # include # endif # if !defined(VECTOR2D_HPP) # include # endif # if !defined(RESOURCE_HPP) # include # endif # if !defined(NOTATION_HPP) # include # endif class Entity; //########################################################################## //##################### Reticle::ModelResource ####################### //########################################################################## struct Reticle__ModelResource { Vector2DOf reticlePosition; }; //########################################################################## //########################### Class Reticle ######################### //########################################################################## class Reticle SIGNATURED { public: enum ReticleState { ReticleOff, // Reticle is invisible ReticleOn, // Reticle is visible (may be more than one "on" state added later) }; enum ReticleElements // these are bits that turn parts of the reticle on and off { FrontFiringWeaponsOn = 0x00000001, // Display Front firing weapons RearFiringWeaponsOn = 0x00000002, // Display rear firing weapons LeftFiringWeaponsOn = 0x00000004, // Display left firing weapons RightFiringWeaponsOn = 0x00000008, // Display right firing weapons WeaponsControlGroup = 0x0000000F, // Mask defining the weapons group TargetDesignatorOn = 0x00000010, // Display target designator box and direction arrows PrimaryHudOn = 0x00000020, // if set, you get the full hud, if not just a simple x AllEnabledGroup = 0xFFFFFFFF, // All bits on }; Vector2DOf reticlePosition; // screen position -1.0 -> +1.0 ReticleState reticleState; // current state of reticle, graphic to display Logical pickPointingOn; // Pick point intersection testing on/off Point3D rayIntersection; // Current pickpoint intersection in 3d world Entity *targetEntity; // entity being targeted int targetDamageZone; // damage zone on the entity ReticleElements reticleElementMask; // controls what parts of the reticle are displayed Reticle(); Logical TestInstance() const; typedef Reticle__ModelResource ModelResource; static ResourceDescription::ResourceID CreateModelResource( ResourceFile *resource_file, const char* model_name, NotationFile *map_file, const ResourceDirectories *directories, ModelResource *model = NULL ); }; #endif