/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ // Original file Copyright Crytek GMBH or its affiliates, used under license. // Description : Hidespot-related structures #ifndef CRYINCLUDE_CRYAISYSTEM_HIDESPOT_H #define CRYINCLUDE_CRYAISYSTEM_HIDESPOT_H #pragma once #include "SmartObjects.h" // Description: // Structure that contains critical hidespot information. struct SHideSpotInfo { enum EHideSpotType { eHST_TRIANGULAR, eHST_WAYPOINT, eHST_ANCHOR, eHST_SMARTOBJECT, eHST_VOLUME, eHST_DYNAMIC, eHST_INVALID, }; EHideSpotType type; Vec3 pos; Vec3 dir; SHideSpotInfo() : type(eHST_INVALID) , pos(ZERO) , dir(ZERO) {} SHideSpotInfo(EHideSpotType _type, const Vec3& _pos, const Vec3& _dir) : type(_type) , pos(_pos) , dir(_dir) {} }; struct SHideSpot { SHideSpot(); SHideSpot(SHideSpotInfo::EHideSpotType type, const Vec3& pos, const Vec3& dir); bool IsSecondary() const; ////////////////////////////////////////////////////////////////////////// SHideSpotInfo info; // optional parameters - can be used with multiple hide spot types const GraphNode* pNavNode; const std::vector<const GraphNode*>* pNavNodes; EntityId entityId; // The entity id of the source object for dynamic hidepoints. // parameters used only with one specific hide spot type const ObstacleData* pObstacle; // triangular CQueryEvent SOQueryEvent; // smart objects const CAIObject* pAnchorObject; // anchors }; typedef std::multimap<float, SHideSpot> MultimapRangeHideSpots; #endif // CRYINCLUDE_CRYAISYSTEM_HIDESPOT_H