/*
* 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.
#ifndef CRYINCLUDE_CRYCOMMON_IGAMEVOLUMES_H
#define CRYINCLUDE_CRYCOMMON_IGAMEVOLUMES_H
#pragma once
struct IGameVolumesEdit;
struct IGameVolumes
{
struct VolumeInfo
{
VolumeInfo()
: pVertices(NULL)
, verticesCount(0)
{
}
const Vec3* pVertices;
uint32 verticesCount;
f32 volumeHeight;
};
//
virtual ~IGameVolumes() {};
virtual IGameVolumesEdit* GetEditorInterface() = 0;
virtual bool GetVolumeInfoForEntity(EntityId entityId, VolumeInfo* pOutInfo) const = 0;
virtual void Load(const char* fileName) = 0;
virtual void Reset() = 0;
//
};
struct IGameVolumesEdit
{
//
virtual ~IGameVolumesEdit() {};
virtual void SetVolume(EntityId entityId, const IGameVolumes::VolumeInfo& volumeInfo) = 0;
virtual void DestroyVolume(EntityId entityId) = 0;
virtual void RegisterEntityClass(const char* className) = 0;
virtual size_t GetVolumeClassesCount() const = 0;
virtual const char* GetVolumeClass(size_t index) const = 0;
virtual void Export(const char* fileName) const = 0;
//
};
#endif // CRYINCLUDE_CRYCOMMON_IGAMEVOLUMES_H