private instanceData MakeInstance(string aInstanceName, string aStyleName, int aRotation, int aEntID, int aX, int aY, int aZ) { try { int seed = aEntID + aX + aY + aZ + aRotation; Random random = new Random(seed); List <string> filepaths = this.Config.GetStyle(aStyleName).GetInstancePaths(aInstanceName); string filepath = filepaths[random.Next(filepaths.Count)]; instanceData instance = new instanceData { filename = "Nails/" + filepath, rotation = aRotation }; instance.xpos = aX; instance.ypos = aY; instance.zpos = aZ; instance.ent_id = aEntID; return(instance); } catch (Exception e) { log.Error("VMFAdapter caught exception while generating instance data: ", e); } return(null); }
public instanceData Copy() { var newInstanceData = new instanceData(); newInstanceData.filename = this.filename; newInstanceData.rotation = this.rotation; newInstanceData.ent_id = this.ent_id; newInstanceData.xpos = this.xpos; newInstanceData.ypos = this.ypos; newInstanceData.zpos = this.zpos; return(newInstanceData); }
private static void insertInstanceIntoVMF(instanceData instance, VMF output_vmf) { try { IList <int> list = null; VBlock instance_block = new VBlock("entity"); instance_block.Body.Add(new VProperty("id", instance.ent_id.ToString())); instance_block.Body.Add(new VProperty("classname", "func_instance")); instance_block.Body.Add(new VProperty("angles", "0 " + instance.rotation + " 0")); instance_block.Body.Add(new VProperty("origin", instance.xpos + " " + instance.ypos + " " + instance.zpos)); instance_block.Body.Add(new VProperty("file", instance.filename)); output_vmf.Body.Add(instance_block); } catch (Exception e) { log.Error("VMFAdapter.insertInstanceIntoVMF(): Caught exception: ", e); log.Info(string.Format("Failed to insert instance: {0}", instance.filename)); } }
/** * Exports the given NailsMap to a VMF file. Uses the file name passed in when this adapter was constructed. * <author>1upD</author> */ public void Export(NailsMap map) { try { log.Info(string.Format("Exporting Nails map data to VMF file: {0}", this._filename)); // Make a deep copy of the stored VMF to add instances to VMF output_vmf = new VMFParser.VMF(this._vmf.ToVMFStrings()); int i = 0; foreach (NailsCube cube in map.NailsCubes) { int x_pos = cube.X * this._horizontal_scale; int y_pos = cube.Y * this._horizontal_scale; int z_pos = cube.Z * this._vertical_scale; var faces = cube.GetFaces(); if (faces.Contains(NailsCubeFace.Floor)) { instanceData instance = this.MakeInstance("floor", cube.StyleName, 0, i++, x_pos, y_pos, z_pos); insertInstanceIntoVMF(instance, output_vmf); } if (faces.Contains(NailsCubeFace.Front)) { instanceData instance = this.MakeInstance("wall", cube.StyleName, 0, i++, x_pos, y_pos, z_pos); insertInstanceIntoVMF(instance, output_vmf); } if (faces.Contains(NailsCubeFace.Left)) { instanceData instance = this.MakeInstance("wall", cube.StyleName, 90, i++, x_pos, y_pos, z_pos); insertInstanceIntoVMF(instance, output_vmf); } if (faces.Contains(NailsCubeFace.Back)) { instanceData instance = this.MakeInstance("wall", cube.StyleName, 180, i++, x_pos, y_pos, z_pos); insertInstanceIntoVMF(instance, output_vmf); } if (faces.Contains(NailsCubeFace.Right)) { instanceData instance = this.MakeInstance("wall", cube.StyleName, 270, i++, x_pos, y_pos, z_pos); insertInstanceIntoVMF(instance, output_vmf); } if (faces.Contains(NailsCubeFace.Ceiling)) { instanceData instance = this.MakeInstance("ceiling", cube.StyleName, 0, i++, x_pos, y_pos, z_pos); insertInstanceIntoVMF(instance, output_vmf); } } using (StreamWriter sw = new StreamWriter(new FileStream(this._filename, FileMode.Create))) { var vmfStrings = output_vmf.ToVMFStrings(); foreach (string line in vmfStrings) { sw.WriteLine(line); } } log.Info(string.Format("Wrote to VMF file: {0}", this._filename)); } catch (Exception e) { log.Error("VMFAdapter.Export(): Caught exception: ", e); log.Info(string.Format("Failed to write to VMF file: {0}", this._filename)); } }