From 61698e20c42de2142df15cab2e406b21563eef56 Mon Sep 17 00:00:00 2001 From: Jackz Date: Sat, 1 Feb 2025 15:14:06 -0600 Subject: [PATCH] Change property system --- plugins/l4d2_randomizer.smx | Bin 49706 -> 49429 bytes scripting/include/randomizer/defs.sp | 296 ++++++++---------- .../include/randomizer/loader_functions.sp | 9 +- .../include/randomizer/spawn_functions.sp | 82 +++++ scripting/l4d2_randomizer.sp | 92 ++---- 5 files changed, 244 insertions(+), 235 deletions(-) create mode 100644 scripting/include/randomizer/spawn_functions.sp diff --git a/plugins/l4d2_randomizer.smx b/plugins/l4d2_randomizer.smx index def22d159da2b0b8fcc6e6e265483e66a0b48784..001f8a76bfd226230505871b0face6ee354ab7ce 100644 GIT binary patch literal 49429 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

x#NAu5Args>fCqJx*3wm*) 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μ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 AtN;K2 diff --git a/scripting/include/randomizer/defs.sp b/scripting/include/randomizer/defs.sp index 44a32ea..6d622b1 100644 --- a/scripting/include/randomizer/defs.sp +++ b/scripting/include/randomizer/defs.sp @@ -41,6 +41,7 @@ methodmap SceneSelection < ArrayList { } public void Activate(MapData data, int flags = 0) { + if(this == null) return; g_ropeIndex = 0; SelectedSceneData aScene; SceneData scene; @@ -276,114 +277,6 @@ enum struct SceneVariantData { } } -enum propertyType { - PROPERTY_NONE = -1, - PROPERTY_STRING, - PROPERTY_INTEGER, - PROPERTY_FLOAT -} - -// This is horrible but we need a way to know what the type of the netprop to set is -enum struct PropertyStore { - JSONObject intKv; - JSONObject stringKv; - JSONObject floatKv; - - void Cleanup() { - if(this.intKv != null) delete this.intKv; - if(this.stringKv != null) delete this.stringKv; - if(this.floatKv != null) delete this.floatKv; - } - - bool GetInt(const char[] name, int &value) { - if(this.intKv == null) return false; - if(!this.intKv.HasKey(name)) return false; - value = this.intKv.GetInt(name); - return true; - } - - bool GetString(const char[] name, char[] buffer, int maxlen) { - if(this.stringKv == null) return false; - if(!this.stringKv.HasKey(name)) return false; - this.stringKv.GetString(name, buffer, maxlen); - return true; - } - - bool GetFloat(const char[] name, float &value) { - if(this.floatKv == null) return false; - if(!this.floatKv.HasKey(name)) return false; - value = this.floatKv.GetFloat(name); - return true; - } - - propertyType GetPropertyType(const char[] key) { - if(this.intKv != null && this.intKv.HasKey(key)) return PROPERTY_INTEGER; - if(this.floatKv != null && this.floatKv.HasKey(key)) return PROPERTY_FLOAT; - if(this.stringKv != null && this.stringKv.HasKey(key)) return PROPERTY_STRING; - return PROPERTY_NONE; - } - - bool HasAny() { - return this.intKv != null || this.floatKv != null || this.stringKv != null; - } - - ArrayList Keys() { - char key[128]; - ArrayList list = new ArrayList(ByteCountToCells(128)); - JSONObjectKeys keys; - if(this.stringKv != null) { - keys = this.stringKv.Keys() - while(keys.ReadKey(key, sizeof(key))) { - list.PushString(key); - } - delete keys; - } - if(this.intKv != null) { - keys = this.intKv.Keys() - while(keys.ReadKey(key, sizeof(key))) { - list.PushString(key); - } - delete keys; - } - if(this.floatKv != null) { - keys = this.floatKv.Keys() - while(keys.ReadKey(key, sizeof(key))) { - list.PushString(key); - } - delete keys; - } - return list; - } - - StringMap Entries() { - char key[128]; - StringMap kv = new StringMap(); - JSONObjectKeys keys; - if(this.stringKv != null) { - keys = this.stringKv.Keys() - while(keys.ReadKey(key, sizeof(key))) { - kv.SetValue(key, PROPERTY_STRING); - } - delete keys; - } - if(this.intKv != null) { - keys = this.intKv.Keys() - while(keys.ReadKey(key, sizeof(key))) { - kv.SetValue(key, PROPERTY_INTEGER); - } - delete keys; - } - if(this.floatKv != null) { - keys = this.floatKv.Keys() - while(keys.ReadKey(key, sizeof(key))) { - kv.SetValue(key, PROPERTY_FLOAT); - } - delete keys; - } - return kv; - } -} - enum struct VariantEntityData { char type[32]; char model[128]; @@ -394,53 +287,108 @@ enum struct VariantEntityData { int color[4]; ArrayList keyframes; - PropertyStore properties; - JSONObject propertiesInt; - JSONObject propertiesString; - JSONObject propertiesFloat; + // PropertyStore properties; + // JSONObject propertiesInt; + // JSONObject propertiesString; + // JSONObject propertiesFloat; + + JSONArray properties; void Cleanup() { - if(this.keyframes != null) { - delete this.keyframes; + // if(this.keyframes != null) { + // delete this.keyframes; + // } + // this.properties.Cleanup(); + if(this.properties != null) { + JSONObject obj; + for(int i = 0; i < this.properties.Length; i++) { + obj = view_as(this.properties.Get(i)); + delete obj; + } + delete this.properties; } - this.properties.Cleanup(); } void ApplyProperties(int entity) { - if(!this.properties.HasAny()) return; - char key[64], buffer[128]; - ArrayList keys = this.properties.Keys(); - for(int i = 0; i < keys.Length; i++) { - keys.GetString(i, key, sizeof(key)); - // Only want to apply netprops (m_ prefix) - if(key[0] == 'm' && key[1] == '_') { - propertyType type = this.properties.GetPropertyType(key); - Debug("netprop %s type %d", key, type); - switch(type) { - case PROPERTY_STRING: { - this.properties.GetString(key, buffer, sizeof(buffer)); - Debug("Applying netprop %s (val=%s) on %d", key, buffer, entity); - SetEntPropString(entity, Prop_Send, key, buffer); - break; - } - case PROPERTY_INTEGER: { - int val; - this.properties.GetInt(key, val); - Debug("Applying netprop %s (val=%d) on %d", key, val, entity); - SetEntProp(entity, Prop_Send, key, val); - break; - } - case PROPERTY_FLOAT: { - float val; - this.properties.GetFloat(key, val); - Debug("Applying netprop %s (val=%f) on %d", key, val, entity); - SetEntPropFloat(entity, Prop_Send, key, val); - break; + // if(!this.properties.HasAny()) return; + // char key[64]; + // ArrayList keys = this.properties.Keys(); + // for(int i = 0; i < keys.Length; i++) { + // keys.GetString(i, key, sizeof(key)); + // // Only want to apply netprops (m_ prefix) + // if(key[0] == 'm' && key[1] == '_') { + // this._ApplyNetprop(entity, key); + // } else if(key[0] == "_") { + // this._ApplyCustom(entity, key); + // } else { + // this._ApplyKeyvalue(entity, key); + // } + // } + // delete keys; + + if(this.properties != null) { + JSONObject obj; + char type[64], key[64]; + for(int i = 0; i < this.properties.Length; i++) { + obj = view_as(this.properties.Get(i)); + if(!obj.HasKey("key")) { + LogError("Missing \"key\" in property object for entity %d", entity); + } else { + obj.GetString("type", type, sizeof(type)); + obj.GetString("key", key, sizeof(key)); + if(StrEqual(type, "netprop")) { + this._ApplyProperty(Prop_Send, entity, key, obj); + } else if(StrEqual(type, "datamap")) { + this._ApplyProperty(Prop_Data, entity, key, obj); + } else if(StrEqual(type, "keyvalue")) { + this._ApplyKeyvalue(entity, key, obj); + } else if(StrEqual(type, "input")) { + this._ApplyInput(entity, key, obj); + } else { + this._ApplyCustom(entity, key, obj); } } } } - delete keys; + } + + void _ApplyProperty(PropType propType, int entity, const char[] key, JSONObject obj) { + char buffer[128]; + if(obj.HasKey("string")) { + obj.GetString("string", buffer, sizeof(buffer)); + Debug("Setting property %s (val=%s) on %d", key, buffer, entity); + SetEntPropString(entity, propType, key, buffer); + } else if(obj.HasKey("integer")) { + int val = obj.GetInt("integer"); + Debug("Setting property %s (val=%d) on %d", key, val, entity); + SetEntProp(entity, propType, key, val); + } else if(obj.HasKey("float")) { + float val = obj.GetFloat("float"); + Debug("Setting property %s (val=%f) on %d", key, val, entity); + SetEntPropFloat(entity, propType, key, val); + } else { + LogError("no value provided for entity %d with key %s", entity, key); + } + } + + void _ApplyInput(int entity, const char[] key, JSONObject obj) { + Debug("Applying input %s on %d", key, entity); + TriggerEntityInput(entity, key); + } + + void _ApplyCustom(int entity, const char[] key, JSONObject obj) { + Debug("_ApplyCustom(%d, \"%s\"): unknown custom key", entity, key); + } + + void _ApplyKeyvalue(int entity, const char[] key, JSONObject obj) { + if(obj.HasKey("buffer")) { + char buffer[255]; + obj.GetString("string", buffer, sizeof(buffer)); + Debug("Dispatching kv %s: %s on %d", key, buffer, entity); + DispatchKeyValue(entity, key, buffer); + } else { + LogError("no value provided for entity %d with key %s", entity, key); + } } } @@ -496,37 +444,41 @@ enum struct VariantInputData { void _trigger(int entity) { if(entity > 0 && IsValidEntity(entity)) { - if(StrEqual(this.input, "_allow_ladder")) { - if(HasEntProp(entity, Prop_Send, "m_iTeamNum")) { - SetEntProp(entity, Prop_Send, "m_iTeamNum", 0); - } else { - Log("Warn: Entity (%d) with id \"%s\" has no teamnum for \"_allow_ladder\"", entity, this.name); - } - } else if(StrEqual(this.input, "_lock")) { - AcceptEntityInput(entity, "Close"); - AcceptEntityInput(entity, "Lock"); - } else if(StrEqual(this.input, "_lock_nobreak")) { - AcceptEntityInput(entity, "Close"); - AcceptEntityInput(entity, "Lock"); - AcceptEntityInput(entity, "SetUnbreakable"); - } else { - char cmd[32]; - // Split input "a b" to a with variant "b" - int len = SplitString(this.input, " ", cmd, sizeof(cmd)); - if(len > -1) { - SetVariantString(this.input[len]); - AcceptEntityInput(entity, cmd); - Debug("_trigger(%d): %s (v=%s)", entity, cmd, this.input[len]); - } else { - Debug("_trigger(%d): %s", entity, this.input); - AcceptEntityInput(entity, this.input); - } - - } + TriggerEntityInput(entity, this.input); } } } +void TriggerEntityInput(int entity, const char[] input) { + if(StrEqual(input, "_allow_ladder")) { + if(HasEntProp(entity, Prop_Send, "m_iTeamNum")) { + SetEntProp(entity, Prop_Send, "m_iTeamNum", 0); + } else { + Log("Warn: Entity (%d) has no teamnum for \"_allow_ladder\"", entity); + } + } else if(StrEqual(input, "_lock")) { + AcceptEntityInput(entity, "Close"); + AcceptEntityInput(entity, "Lock"); + } else if(StrEqual(input, "_lock_nobreak")) { + AcceptEntityInput(entity, "Close"); + AcceptEntityInput(entity, "Lock"); + AcceptEntityInput(entity, "SetUnbreakable"); + } else { + char cmd[32]; + // Split input "a b" to a with variant "b" + int len = SplitString(input, " ", cmd, sizeof(cmd)); + if(len > -1) { + SetVariantString(input[len]); + AcceptEntityInput(entity, cmd); + Debug("_trigger(%d): %s (v=%s)", entity, cmd, input[len]); + } else { + Debug("_trigger(%d): %s", entity, input); + AcceptEntityInput(entity, input); + } + + } +} + enum struct LumpEditData { char name[MAX_INPUTS_CLASSNAME_LENGTH]; InputType type; diff --git a/scripting/include/randomizer/loader_functions.sp b/scripting/include/randomizer/loader_functions.sp index dcf8b93..2c73cac 100644 --- a/scripting/include/randomizer/loader_functions.sp +++ b/scripting/include/randomizer/loader_functions.sp @@ -259,10 +259,11 @@ void loadChoiceEntity(ArrayList list, JSONObject entityData) { GetVector(entityData, "scale", entity.scale); GetColor(entityData, "color", entity.color, DEFAULT_COLOR); if(entityData.HasKey("properties")) { - JSONObject propRoot = view_as(entityData.Get("properties")); - if(propRoot.HasKey("int")) entity.properties.intKv = view_as(propRoot.Get("int")); - if(propRoot.HasKey("float")) entity.properties.floatKv = view_as(propRoot.Get("float")); - if(propRoot.HasKey("string")) entity.properties.stringKv = view_as(propRoot.Get("string")); + entity.properties = view_as(entityData.Get("properties")); + // JSONObject propRoot = view_as(entityData.Get("properties")); + // if(propRoot.HasKey("int")) entity.properties.intKv = view_as(propRoot.Get("int")); + // if(propRoot.HasKey("float")) entity.properties.floatKv = view_as(propRoot.Get("float")); + // if(propRoot.HasKey("string")) entity.properties.stringKv = view_as(propRoot.Get("string")); } list.PushArray(entity); } \ No newline at end of file diff --git a/scripting/include/randomizer/spawn_functions.sp b/scripting/include/randomizer/spawn_functions.sp new file mode 100644 index 0000000..0862645 --- /dev/null +++ b/scripting/include/randomizer/spawn_functions.sp @@ -0,0 +1,82 @@ +int R_CreateFire(VariantEntityData data) { + int entity = CreateEntityByName("env_fire"); + if(entity == -1) return -1; + DispatchKeyValue(entity, "spawnflags", "13"); + DispatchKeyValue(entity, "targetname", ENT_ENV_NAME); + DispatchKeyValueFloat(entity, "firesize", 20.0); + DispatchKeyValueFloat(entity, "fireattack", 100.0); + DispatchKeyValueFloat(entity, "damagescale", 1.0); + TeleportEntity(entity, data.origin, NULL_VECTOR, NULL_VECTOR); + data.ApplyProperties(entity); + DispatchSpawn(entity); + AcceptEntityInput(entity, "Enable"); + AcceptEntityInput(entity, "StartFire"); + #if defined DEBUG_LOG_MAPSTART + + PrintToServer("spawn env_fire at %.1f %.1f %.1f", pos[0], pos[1], pos[2]); + #endif + return entity; +} + +int R_CreateLight(VariantEntityData data) { + int entity = CreateEntityByName("light_dynamic"); + if(entity == -1) return -1; + DispatchKeyValue(entity, "targetname", ENT_PROP_NAME); + DispatchKeyValueInt(entity, "brightness", data.color[3]); + DispatchKeyValueFloat(entity, "distance", data.scale[0]); + DispatchKeyValueFloat(entity, "_inner_cone", data.angles[0]); + DispatchKeyValueFloat(entity, "_cone", data.angles[1]); + DispatchKeyValueFloat(entity, "pitch", data.angles[2]); + // DispatchKeyValueInt() + TeleportEntity(entity, data.origin, NULL_VECTOR, NULL_VECTOR); + data.ApplyProperties(entity); + if(!DispatchSpawn(entity)) return -1; + SetEntityRenderColor(entity, data.color[0], data.color[1], data.color[2], data.color[3]); + SetEntityRenderMode(entity, RENDER_TRANSCOLOR); + AcceptEntityInput(entity, "TurnOn"); + return entity; +} + +int R_CreateEnvBlockerScaled(VariantEntityData data) { + int entity = CreateEntityByName(data.type); + DispatchKeyValue(entity, "targetname", ENT_BLOCKER_NAME); + DispatchKeyValue(entity, "initialstate", "1"); + DispatchKeyValueInt(entity, "BlockType", StrEqual(data.type, "env_physics_blocker") ? 4 : 0); + static float mins[3]; + mins = data.scale; + NegateVector(mins); + DispatchKeyValueVector(entity, "boxmins", mins); + DispatchKeyValueVector(entity, "boxmaxs", data.scale); + DispatchKeyValueVector(entity, "mins", mins); + DispatchKeyValueVector(entity, "maxs", data.scale); + + TeleportEntity(entity, data.origin, NULL_VECTOR, NULL_VECTOR); + data.ApplyProperties(entity); + if(DispatchSpawn(entity)) { + #if defined DEBUG_LOG_MAPSTART + PrintToServer("spawn blocker scaled %.1f %.1f %.1f scale [%.0f %.0f %.0f]", pos[0], pos[1], pos[2], scale[0], scale[1], scale[2]); + #endif + SetEntPropVector(entity, Prop_Send, "m_vecMaxs", data.scale); + SetEntPropVector(entity, Prop_Send, "m_vecMins", mins); + AcceptEntityInput(entity, "Enable"); + #if defined DEBUG_BLOCKERS + Effect_DrawBeamBoxRotatableToAll(data.origin, mins, data.scale, NULL_VECTOR, g_iLaserIndex, 0, 0, 0, 150.0, 0.1, 0.1, 0, 0.0, {255, 0, 0, 255}, 0); + #endif + return entity; + } + return -1; +} + +void R_CreateDecal(VariantEntityData data) { + CreateDecal(data.model, data.origin); +} + +int R_CreateProp(VariantEntityData data) { + int entity = StartPropCreate(data.type, data.model, data.origin, data.angles, NULL_VECTOR); + if(entity == -1) return -1; + data.ApplyProperties(entity); + if(DispatchSpawn(entity)) { + return entity; + } + return -1; +} \ No newline at end of file diff --git a/scripting/l4d2_randomizer.sp b/scripting/l4d2_randomizer.sp index 6e60c7a..275ef10 100644 --- a/scripting/l4d2_randomizer.sp +++ b/scripting/l4d2_randomizer.sp @@ -39,6 +39,7 @@ bool randomizerRan = false; #include #include #include +#include #include #include @@ -725,24 +726,6 @@ void AssignGascan(int gascan, GascanSpawnerData spawner) { Debug("Assigning gascan %d to spawner at %.0f %.0f %.0f", gascan, spawner.origin[0], spawner.origin[1], spawner.origin[2]); } -int CreateLight(const float origin[3], const float angles[3], const int color[4] = { 255, 255, 255, 1 }, float distance = 100.0) { - int entity = CreateEntityByName("light_dynamic"); - if(entity == -1) return -1; - DispatchKeyValue(entity, "targetname", ENT_PROP_NAME); - DispatchKeyValueInt(entity, "brightness", color[3]); - DispatchKeyValueFloat(entity, "distance", distance); - DispatchKeyValueFloat(entity, "_inner_cone", angles[0]); - DispatchKeyValueFloat(entity, "_cone", angles[1]); - DispatchKeyValueFloat(entity, "pitch", angles[2]); - // DispatchKeyValueInt() - TeleportEntity(entity, origin, NULL_VECTOR, NULL_VECTOR); - if(!DispatchSpawn(entity)) return -1; - SetEntityRenderColor(entity, color[0], color[1], color[2], color[3]); - SetEntityRenderMode(entity, RENDER_TRANSCOLOR); - AcceptEntityInput(entity, "TurnOn"); - return entity; -} - void AddGascanSpawner(VariantEntityData data) { if(g_MapData.gascanSpawners == null) { g_MapData.gascanSpawners = new ArrayList(sizeof(GascanSpawnerData)); @@ -756,45 +739,14 @@ void AddGascanSpawner(VariantEntityData data) { } void spawnEntity(VariantEntityData entity) { - // if(entity.type[0] == '_') { - // if(StrEqual(entity.type, "_gascan")) { - // AddGascanSpawner(entity); - // } - // } - if(StrEqual(entity.type, "_gascan")) { - AddGascanSpawner(entity); - } else if(StrEqual(entity.type, "env_fire")) { - Debug("spawning \"%s\" at (%.1f %.1f %.1f) rot (%.0f %.0f %.0f)", entity.type, entity.origin[0], entity.origin[1], entity.origin[2], entity.angles[0], entity.angles[1], entity.angles[2]); - CreateFire(entity.origin, 20.0, 100.0, 1.0); - } else if(StrEqual(entity.type, "light_dynamic")) { - CreateLight(entity.origin, entity.angles, entity.color, entity.scale[0]); - Effect_DrawBeamBoxRotatableToAll(entity.origin, { -5.0, -5.0, -5.0}, { 5.0, 5.0, 5.0}, NULL_VECTOR, g_iLaserIndex, 0, 0, 0, 40.0, 0.1, 0.1, 0, 0.0, {255, 255, 0, 255}, 0); - } else if(StrEqual(entity.type, "env_physics_blocker") || StrEqual(entity.type, "env_player_blocker")) { - CreateEnvBlockerScaled(entity.type, entity.origin, entity.scale); - } else if(StrEqual(entity.type, "infodecal")) { - Effect_DrawBeamBoxRotatableToAll(entity.origin, { -1.0, -5.0, -5.0}, { 1.0, 5.0, 5.0}, NULL_VECTOR, g_iLaserIndex, 0, 0, 0, 40.0, 0.1, 0.1, 0, 0.0, {73, 0, 130, 255}, 0); - CreateDecal(entity.model, entity.origin); - } else if(StrContains(entity.type, "prop_") == 0 || StrEqual(entity.type, "prop_fuel_barrel")) { - if(entity.model[0] == '\0') { - LogError("Missing model for entity with type \"%s\"", entity.type); - return; - } else if(!PrecacheModel(entity.model)) { - LogError("Precache of entity model \"%s\" with type \"%s\" failed", entity.model, entity.type); - return; + if(entity.type[0] == '_') { + if(StrEqual(entity.type, "_gascan")) { + AddGascanSpawner(entity); + } else if(StrContains(entity.type, "_car") != -1) { + SpawnCar(entity); + } else { + Log("WARN: Unknown custom entity type \"%s\", skipped", entity.type); } - int prop = CreateProp(entity.type, entity.model, entity.origin, entity.angles); - SetEntityRenderColor(prop, entity.color[0], entity.color[1], entity.color[2], entity.color[3]); - entity.ApplyProperties(prop); - } else if(StrContains(entity.type, "weapon_") == 0) { - if(entity.model[0] == '\0') { - LogError("Missing model for entity with type \"%s\"", entity.type); - return; - } else if(!PrecacheModel(entity.model)) { - LogError("Precache of entity model \"%s\" with type \"%s\" failed", entity.model, entity.type); - return; - } - int prop = CreateProp(entity.type, entity.model, entity.origin, entity.angles); - SetEntityRenderColor(prop, entity.color[0], entity.color[1], entity.color[2], entity.color[3]); } else if(StrEqual(entity.type, "hammerid")) { int targetId = StringToInt(entity.model); if(targetId > 0) { @@ -834,8 +786,26 @@ void spawnEntity(VariantEntityData entity) { } if(!found) Debug("Warn: Could not find entity (classname=%s)", entity.model); - } else if(StrContains(entity.type, "_car") != -1) { - SpawnCar(entity); + } else if(StrEqual(entity.type, "env_fire")) { + Debug("spawning \"%s\" at (%.1f %.1f %.1f) rot (%.0f %.0f %.0f)", entity.type, entity.origin[0], entity.origin[1], entity.origin[2], entity.angles[0], entity.angles[1], entity.angles[2]); + R_CreateFire(entity); + } else if(StrEqual(entity.type, "light_dynamic")) { + R_CreateLight(entity); + Effect_DrawBeamBoxRotatableToAll(entity.origin, { -5.0, -5.0, -5.0}, { 5.0, 5.0, 5.0}, NULL_VECTOR, g_iLaserIndex, 0, 0, 0, 40.0, 0.1, 0.1, 0, 0.0, {255, 255, 0, 255}, 0); + } else if(StrEqual(entity.type, "env_physics_blocker") || StrEqual(entity.type, "env_player_blocker")) { + R_CreateEnvBlockerScaled(entity); + } else if(StrEqual(entity.type, "infodecal")) { + Effect_DrawBeamBoxRotatableToAll(entity.origin, { -1.0, -5.0, -5.0}, { 1.0, 5.0, 5.0}, NULL_VECTOR, g_iLaserIndex, 0, 0, 0, 40.0, 0.1, 0.1, 0, 0.0, {73, 0, 130, 255}, 0); + R_CreateDecal(entity); + } else if(StrContains(entity.type, "weapon_") == 0 || StrContains(entity.type, "prop_") == 0 || StrEqual(entity.type, "prop_fuel_barrel")) { + if(entity.model[0] == '\0') { + LogError("Missing model for entity with type \"%s\"", entity.type); + return; + } else if(!PrecacheModel(entity.model)) { + LogError("Precache of entity model \"%s\" with type \"%s\" failed", entity.model, entity.type); + return; + } + R_CreateProp(entity); } else if(StrEqual(entity.type, "move_rope")) { if(!PrecacheModel(entity.model)) { LogError("Precache of entity model \"%s\" with type \"%s\" failed", entity.model, entity.type); @@ -847,7 +817,7 @@ void spawnEntity(VariantEntityData entity) { } CreateRope(entity); } else { - LogError("Unknown entity type \"%s\"", entity.type); + LogError("Unsupported entity type \"%s\"", entity.type); } } @@ -897,6 +867,10 @@ int _CreateRope(const char[] type, const char[] targetname, const char[] nextKey return entity; } +// void DebugBox(const float origin[3], const float scale[3], int color[4]) { +// Effect_DrawBeamBoxRotatableToAll(entity.origin, { -5.0, -5.0, -5.0}, { 5.0, 5.0, 5.0}, NULL_VECTOR, g_iLaserIndex, 0, 0, 0, 40.0, 0.1, 0.1, 0, 0.0, {255, 255, 0, 255}, 0); +// } + void Debug(const char[] format, any ...) { #if defined DEBUG_SCENE_PARSE char buffer[192];