From 53b284fb5d1bdf612cbd049ec6eab944d12569a6 Mon Sep 17 00:00:00 2001
From: Randy Heit <rheit@zdoom.fake>
Date: Sat, 1 Jun 2013 02:09:09 +0000
Subject: [PATCH] - Added Gez's OverridePalette VOXELDEF flag.

SVN r4303 (trunk)
---
 src/r_data/voxels.cpp | 25 ++++++++++++++++++++++++-
 src/r_data/voxels.h   |  1 +
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/r_data/voxels.cpp b/src/r_data/voxels.cpp
index 693986704..d5ad1fa89 100644
--- a/src/r_data/voxels.cpp
+++ b/src/r_data/voxels.cpp
@@ -71,13 +71,14 @@ TDeletingArray<FVoxelDef *> VoxelDefs;
 struct VoxelOptions
 {
 	VoxelOptions()
-	: DroppedSpin(0), PlacedSpin(0), Scale(FRACUNIT), AngleOffset(ANGLE_90)
+	: DroppedSpin(0), PlacedSpin(0), Scale(FRACUNIT), AngleOffset(ANGLE_90), OverridePalette(false)
 	{}
 
 	int			DroppedSpin;
 	int			PlacedSpin;
 	fixed_t		Scale;
 	angle_t		AngleOffset;
+	bool		OverridePalette;
 };
 
 //==========================================================================
@@ -408,6 +409,20 @@ void FVoxel::Remap()
 		{
 			RemapVoxelSlabs((kvxslab_t *)Mips[i].SlabData, Mips[i].OffsetX[Mips[i].SizeX], remap);
 		}
+		RemovePalette();
+	}
+}
+
+//==========================================================================
+//
+// Delete the voxel's built-in palette
+//
+//==========================================================================
+
+void FVoxel::RemovePalette()
+{
+	if (Palette != NULL)
+	{
 		delete [] Palette;
 		Palette = NULL;
 	}
@@ -518,6 +533,10 @@ static void VOX_ReadOptions(FScanner &sc, VoxelOptions &opts)
 			}
 			opts.AngleOffset = ANGLE_90 + angle_t(sc.Float * ANGLE_180 / 180.0);
 		}
+		else if (sc.Compare("overridepalette"))
+		{
+			opts.OverridePalette = true;
+		}
 		else
 		{
 			sc.ScriptMessage("Unknown voxel option '%s'\n", sc.String);
@@ -603,6 +622,10 @@ void R_InitVoxels()
 			sc.SetCMode(false);
 			if (voxeldata != NULL && vsprites.Size() != 0)
 			{
+				if (opts.OverridePalette)
+				{
+					voxeldata->RemovePalette();
+				}
 				FVoxelDef *def = new FVoxelDef;
 
 				def->Voxel = voxeldata;
diff --git a/src/r_data/voxels.h b/src/r_data/voxels.h
index 90b57e0af..9dce7820b 100644
--- a/src/r_data/voxels.h
+++ b/src/r_data/voxels.h
@@ -42,6 +42,7 @@ struct FVoxel
 	FVoxel();
 	~FVoxel();
 	void Remap();
+	void RemovePalette();
 };
 
 struct FVoxelDef