mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-06-06 08:42:35 +00:00
feat: gfxworld now uses surface flags for surfaces
This commit is contained in:
@@ -52,7 +52,7 @@ namespace BSPFlags
|
|||||||
SURF_TYPE_ORIGIN,
|
SURF_TYPE_ORIGIN,
|
||||||
SURF_TYPE_SKY,
|
SURF_TYPE_SKY,
|
||||||
SURF_TYPE_NOCASTSHADOW,
|
SURF_TYPE_NOCASTSHADOW,
|
||||||
SURF_TYPE_ONLYCASTSHADOW,
|
SURF_TYPE_CASTSUNSHADOW,
|
||||||
SURF_TYPE_PHYSICSGEOM,
|
SURF_TYPE_PHYSICSGEOM,
|
||||||
SURF_TYPE_LIGHTPORTAL,
|
SURF_TYPE_LIGHTPORTAL,
|
||||||
SURF_TYPE_CAULK,
|
SURF_TYPE_CAULK,
|
||||||
@@ -129,7 +129,7 @@ namespace BSPFlags
|
|||||||
{0, 0 }, // origin
|
{0, 0 }, // origin
|
||||||
{4, 0x800 }, // sky
|
{4, 0x800 }, // sky
|
||||||
{0x40000, 0 }, // noCastShadow
|
{0x40000, 0 }, // noCastShadow
|
||||||
{0x80000, 0 }, // onlyCastShadow
|
{0x80000, 0 }, // castSunShadow
|
||||||
{0, 0 }, // physicsGeom
|
{0, 0 }, // physicsGeom
|
||||||
{0, 0 }, // lightPortal
|
{0, 0 }, // lightPortal
|
||||||
{0x1000, 0 }, // caulk
|
{0x1000, 0 }, // caulk
|
||||||
@@ -175,7 +175,7 @@ namespace BSPFlags
|
|||||||
SURF_TYPE_CANSHOOTCLIP,
|
SURF_TYPE_CANSHOOTCLIP,
|
||||||
SURF_TYPE_SKY,
|
SURF_TYPE_SKY,
|
||||||
SURF_TYPE_NOCASTSHADOW,
|
SURF_TYPE_NOCASTSHADOW,
|
||||||
SURF_TYPE_ONLYCASTSHADOW,
|
SURF_TYPE_CASTSUNSHADOW,
|
||||||
SURF_TYPE_CAULK,
|
SURF_TYPE_CAULK,
|
||||||
SURF_TYPE_AREALIGHT,
|
SURF_TYPE_AREALIGHT,
|
||||||
SURF_TYPE_SLICK,
|
SURF_TYPE_SLICK,
|
||||||
@@ -193,71 +193,18 @@ namespace BSPFlags
|
|||||||
SURF_TYPE_NODLIGHT,
|
SURF_TYPE_NODLIGHT,
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr const char* surfaceTypeToNameMap[SURF_TYPE_COUNT] = {"bark",
|
constexpr const char* surfaceTypeToNameMap[SURF_TYPE_COUNT] = {"bark", "brick", "carpet", "cloth", "concrete",
|
||||||
"brick",
|
"dirt", "flesh", "foliage", "glass", "grass",
|
||||||
"carpet",
|
"gravel", "ice", "metal", "mud", "paper",
|
||||||
"cloth",
|
"plaster", "rock", "sand", "snow", "water",
|
||||||
"concrete",
|
"wood", "asphalt", "ceramic", "plastic", "rubber",
|
||||||
"dirt",
|
"cushion", "fruit", "paintedmetal", "player", "tallgrass",
|
||||||
"flesh",
|
"riotshield", "opaqueglass", "clipmissile", "ai_nosight", "clipshot",
|
||||||
"foliage",
|
"playerclip", "monsterclip", "vehicleclip", "itemclip", "nodrop",
|
||||||
"glass",
|
"nonsolid", "detail", "structural", "portal", "canshootclip",
|
||||||
"grass",
|
"origin", "sky", "nocastshadow", "castshadow", "physicsgeom",
|
||||||
"gravel",
|
"lightportal", "caulk", "arealight", "slick", "noimpact",
|
||||||
"ice",
|
"nomarks", "nopenetrate", "ladder", "nodamage", "mantleon",
|
||||||
"metal",
|
"mantleover", "mount", "nosteps", "nodraw", "noreceivedynamicshadow",
|
||||||
"mud",
|
"nodlight", "none"};
|
||||||
"paper",
|
|
||||||
"plaster",
|
|
||||||
"rock",
|
|
||||||
"sand",
|
|
||||||
"snow",
|
|
||||||
"water",
|
|
||||||
"wood",
|
|
||||||
"asphalt",
|
|
||||||
"ceramic",
|
|
||||||
"plastic",
|
|
||||||
"rubber",
|
|
||||||
"cushion",
|
|
||||||
"fruit",
|
|
||||||
"paintedmetal",
|
|
||||||
"player",
|
|
||||||
"tallgrass",
|
|
||||||
"riotshield",
|
|
||||||
"opaqueglass",
|
|
||||||
"clipmissile",
|
|
||||||
"ai_nosight",
|
|
||||||
"clipshot",
|
|
||||||
"playerclip",
|
|
||||||
"monsterclip",
|
|
||||||
"vehicleclip",
|
|
||||||
"itemclip",
|
|
||||||
"nodrop",
|
|
||||||
"nonsolid",
|
|
||||||
"detail",
|
|
||||||
"structural",
|
|
||||||
"portal",
|
|
||||||
"canshootclip",
|
|
||||||
"origin",
|
|
||||||
"sky",
|
|
||||||
"nocastshadow",
|
|
||||||
"onlycastshadow",
|
|
||||||
"physicsgeom",
|
|
||||||
"lightportal",
|
|
||||||
"caulk",
|
|
||||||
"arealight",
|
|
||||||
"slick",
|
|
||||||
"noimpact",
|
|
||||||
"nomarks",
|
|
||||||
"nopenetrate",
|
|
||||||
"ladder",
|
|
||||||
"nodamage",
|
|
||||||
"mantleon",
|
|
||||||
"mantleover",
|
|
||||||
"mount",
|
|
||||||
"nosteps",
|
|
||||||
"nodraw",
|
|
||||||
"noreceivedynamicshadow",
|
|
||||||
"nodlight",
|
|
||||||
"none"};
|
|
||||||
} // namespace BSPFlags
|
} // namespace BSPFlags
|
||||||
|
|||||||
@@ -61,11 +61,6 @@ namespace BSP
|
|||||||
BSPSurface& bspSurface = bsp->gfxWorld.surfaces.at(surfIdx);
|
BSPSurface& bspSurface = bsp->gfxWorld.surfaces.at(surfIdx);
|
||||||
GfxSurface* gfxSurface = &gfxWorld->dpvs.surfaces[surfIdx];
|
GfxSurface* gfxSurface = &gfxWorld->dpvs.surfaces[surfIdx];
|
||||||
|
|
||||||
gfxSurface->primaryLightIndex = BSPEditableConstants::DEFAULT_SURFACE_LIGHT;
|
|
||||||
gfxSurface->lightmapIndex = BSPEditableConstants::DEFAULT_SURFACE_LIGHTMAP;
|
|
||||||
gfxSurface->reflectionProbeIndex = BSPEditableConstants::DEFAULT_SURFACE_REFLECTION_PROBE;
|
|
||||||
gfxSurface->flags = BSPEditableConstants::DEFAULT_SURFACE_FLAGS;
|
|
||||||
|
|
||||||
gfxSurface->tris.triCount = bspSurface.triCount;
|
gfxSurface->tris.triCount = bspSurface.triCount;
|
||||||
gfxSurface->tris.baseIndex = bspSurface.indexOfFirstIndex;
|
gfxSurface->tris.baseIndex = bspSurface.indexOfFirstIndex;
|
||||||
gfxSurface->tris.vertexCount = bspSurface.vertexCount;
|
gfxSurface->tris.vertexCount = bspSurface.vertexCount;
|
||||||
@@ -109,6 +104,20 @@ namespace BSP
|
|||||||
gfxSurface->tris.maxs.y = gfxSurface->bounds[1].y;
|
gfxSurface->tris.maxs.y = gfxSurface->bounds[1].y;
|
||||||
gfxSurface->tris.maxs.z = gfxSurface->bounds[1].z;
|
gfxSurface->tris.maxs.z = gfxSurface->bounds[1].z;
|
||||||
|
|
||||||
|
gfxSurface->flags = 0;
|
||||||
|
if ((bspMaterial.contentFlags & BSPFlags::surfaceTypeToFlagMap[BSPFlags::SURF_TYPE_SKY].contentFlags) != 0)
|
||||||
|
gfxSurface->flags |= GFX_SURFACE_IS_SKY;
|
||||||
|
if ((bspMaterial.contentFlags & BSPFlags::surfaceTypeToFlagMap[BSPFlags::SURF_TYPE_NODRAW].contentFlags) != 0)
|
||||||
|
gfxSurface->flags |= GFX_SURFACE_NO_DRAW;
|
||||||
|
if ((bspMaterial.surfaceFlags & BSPFlags::surfaceTypeToFlagMap[BSPFlags::SURF_TYPE_CASTSUNSHADOW].surfaceFlags) != 0)
|
||||||
|
gfxSurface->flags |= GFX_SURFACE_CASTS_SUN_SHADOW;
|
||||||
|
if ((bspMaterial.surfaceFlags & BSPFlags::surfaceTypeToFlagMap[BSPFlags::SURF_TYPE_NOCASTSHADOW].surfaceFlags) == 0)
|
||||||
|
gfxSurface->flags |= GFX_SURFACE_CASTS_SHADOW;
|
||||||
|
|
||||||
|
gfxSurface->primaryLightIndex = BSPEditableConstants::DEFAULT_SURFACE_LIGHT;
|
||||||
|
gfxSurface->lightmapIndex = BSPEditableConstants::DEFAULT_SURFACE_LIGHTMAP;
|
||||||
|
gfxSurface->reflectionProbeIndex = BSPEditableConstants::DEFAULT_SURFACE_REFLECTION_PROBE;
|
||||||
|
|
||||||
// unknown value
|
// unknown value
|
||||||
gfxSurface->tris.himipRadiusInvSq = 0.0f;
|
gfxSurface->tris.himipRadiusInvSq = 0.0f;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user