using System;

namespace NativeEngine;

[Flags]
internal enum RayTraceFlags_t : int
{
	// 16 bits of flags stored for each triangle
	FCACHETRI_TRANSLUCENT = 0x0001,
	FCACHETRI_RENDER_BACKFACES = 0x0002,
	FCACHETRI_TRANSMISSIVE = 0x0004,
	FCACHETRI_DETAILGEOMETRY = 0x0008,
	FCACHETRI_VISBLOCKER = 0x0010,
	FCACHETRI_NODRAW = 0x0020,
	FCACHETRI_BLOCKLIGHT = 0x0040,
	FCACHETRI_DYNAMIC_MODEL = 0x0080,
	FCACHETRI_TOOLS_MATERIAL = 0x0100,
	FCACHETRI_TOOLS_REFERENCE_NO_TRACE = 0x0200,
	FCACHETRI_TOOLS_LIGHT_VOLUME_BOUNDARY = 0x0400,
	FCACHETRI_NO_VIS_OCCLUSION = 0x0800,
	FCACHETRI_SKY = 0x1000,
	FCACHETRI_NO_SHADOWS = 0x2000,
	FCACHETRI_BRUSH_ENTITY = 0x4000,
	FCACHETRI_NO_BOUNCE = 0x8000,

	// Triangle cannot store these flags
	RTE_FLAGS_FAST_TREE_GENERATION = 0x00010000,
	RTE_FLAGS_DONT_STORE_TRIANGLE_COLORS = 0x00020000, // saves memory if not needed
	RTE_FLAGS_DONT_STORE_TRIANGLE_MATERIALS = 0x00040000,
	RTE_FLAGS_STORE_TEXCOORD0 = 0x00080000,

	RTE_FLAGS_USER_FLAGS_BASE = 0x00ffffff, // Base value which user defined flags should add to. Also the mask for all system flags.
}
