/// <summary> /// 作用:添加那地记录 /// 作者:汪建龙 /// 编写时间:2017年3月16日18:35:37 /// </summary> /// <param name="landRecord"></param> /// <returns></returns> public int Save(LandRecord landRecord) { Db.LandRecords.Add(landRecord); Db.SaveChanges(); Grade(landRecord, GradeAction.AddLandRecord); return(landRecord.ID); }
public ActionResult Create(LandRecord record) { if (record == null) { return(ErrorJsonResult("未获取违法用地信息")); } if (record.IllegalArea > record.Area) { return(ErrorJsonResult("违法用地面积大于合法用地面积,请核对")); } if (record.ID > 0) { if (!Core.LandRecordManager.Edit(record)) { return(ErrorJsonResult("编辑更新违法用地信息失败")); } } else { var id = Core.LandRecordManager.Save(record); if (id <= 0) { return(ErrorJsonResult("保存违法用地信息失败")); } } return(SuccessJsonResult()); }
public void Grade(LandRecord record, GradeAction action) { if (record.SystemData == SystemData.Enterprise) { Core.EnterpriseManager.Grade(record.ELID, record.ID, action); } else if (record.SystemData == SystemData.Lawyer) { Core.LawyerManager.Grade(record.ELID, record.ID, action); } }
/// <summary> /// 作用:编辑更新拿地记录 /// 作者:汪建龙 /// 编写时间:2017年3月16日18:35:58 /// </summary> /// <param name="landRecord"></param> /// <returns></returns> public bool Edit(LandRecord landRecord) { var model = Db.LandRecords.Find(landRecord.ID); if (model == null) { return(false); } Db.Entry(model).CurrentValues.SetValues(landRecord); Db.SaveChanges(); Grade(model, GradeAction.EditLandRecord); return(true); }
public static void Create(Vector2Int coordinates) { var record = LandRecord.Get(coordinates); var gameObject = new GameObject(coordinates.ToString()); gameObject.transform.position = new Vector3(coordinates.x * 8192, 0, coordinates.y * 8192); var meshFilter = gameObject.AddComponent <MeshFilter>(); var meshRenderer = gameObject.AddComponent <MeshRenderer>(); meshRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.TwoSided; meshRenderer.sharedMaterial = new Material(MaterialManager.Instance.TerrainShader); meshRenderer.sharedMaterial.mainTextureScale = new Vector2(16, 16); // Generate the mesh int vertexStep = 8192 / 64; // Generate vertices and appropriate heights var vertices = new Vector3[65 * 65]; var uvs = new Vector2[vertices.Length]; var nextColHeight = record.HeightData.ReferenceHeight; var triangles = new int[64 * 64 * 6]; for (int y = 0, i = 0; y < 65; y++) { var previousHeight = nextColHeight; for (var x = 0; x < 65; x++, i++) { var height = previousHeight + record.HeightData.HeightPoints[i]; // this is the change in elevation from the previous (to the leftt) vertex, multiplied by 8 if (x == 0) { nextColHeight = height; } var vertex = new Vector3(x * vertexStep, height * 8, y * vertexStep); // Each vertex is 128 game-units apart vertices[i] = vertex; previousHeight = height; // Generate UV too ( every 4 patches should be one UV) var uvX = Mathf.Lerp(1f / 18f, 1 - 1f / 18f, x / 64f); var uvY = Mathf.Lerp(1f / 18f, 1 - 1f / 18f, y / 64f); uvs[x + y * 65] = new Vector2(uvX, uvY); } } // Triangles // Needs to be seperate from previous loop for (int ti = 0, vi = 0, y = 0; y < 64; y++, vi++) { for (int x = 0; x < 64; x++, ti += 6, vi++) { triangles[ti] = vi; triangles[ti + 3] = triangles[ti + 2] = vi + 1; triangles[ti + 4] = triangles[ti + 1] = vi + 64 + 1; triangles[ti + 5] = vi + 64 + 2; } } var normals = new Vector3[record.NormalData.Normals.Length / 3]; for (var i = 0; i < normals.Length; i++) { normals[i] = new Vector3(record.NormalData.Normals[i * 3] / 128f, record.NormalData.Normals[i * 3 + 2] / 128f, record.NormalData.Normals[i * 3 + 1] / 128f); } var mesh = new Mesh { vertices = vertices, triangles = triangles, uv = uvs, normals = normals, colors32 = record.ColorData.Colors }; meshFilter.sharedMesh = mesh; // Now calculate vertex colors. Look at each "patch". if the neighbouring patch is a different texture, then set the alpha between the pixels to 0 or something // Remaining steps are for textures only if (record.TextureData == null) { return; } // Get the texturedata, and surrounding cells Directions cellDirections = 0; var borderCells = new TextureData[3, 3]; for (var y = 0; y < 3; y++) { for (var x = 0; x < 3; x++) { var xCoord = coordinates.x + (x - 1); var yCoord = coordinates.y + (y - 1); var coordinate = new Vector2Int(xCoord, yCoord); LandRecord landRecord; if (LandRecord.Records.TryGetValue(coordinate, out landRecord)) { borderCells[x, y] = landRecord.TextureData; cellDirections |= (Directions)(Mathf.Pow(2, x + y * 3)); } } } // Don't do this inside the loop, silly var currentIndices = record.TextureData.TextureIndices; var borderIndices = GetBorderIndices(cellDirections, borderCells); // Get an 18x18 array, which includes the surrounding textures var control = new Texture2D(18, 18, TextureFormat.Alpha8, false, true) { filterMode = FilterMode.Point }; for (var y = 0; y < control.height; y++) { for (var x = 0; x < control.width; x++) { var textureIndex = borderIndices[x, y]; var color = new Color32(0, 0, 0, (byte)textureIndex); control.SetPixel(x, y, color); } } control.Apply(false, true); meshRenderer.sharedMaterial.SetTexture("_MainTex", LandTextureRecord.GetTexture2DArray()); meshRenderer.sharedMaterial.SetTexture("_Control", control); gameObject.AddComponent <MeshCollider>(); }
public static void Create(BinaryReader reader) { var header = new RecordHeader(reader); switch (header.Type) { case RecordType.BirthSign: BirthSignRecord.Create(reader, header); break; case RecordType.BodyPart: BodyPartRecord.Create(reader, header); break; case RecordType.Cell: CellRecord.Create(reader, header); break; case RecordType.Dialogue: DialogRecord.Create(reader, header); break; case RecordType.GameSetting: GameSetting.Create(reader, header); break; case RecordType.Info: InfoRecord.Create(reader, header); break; case RecordType.Land: LandRecord.Create(reader, header); break; case RecordType.LandTexture: LandTextureRecord.Create(reader, header); break; case RecordType.MagicEffect: MagicEffectRecord.Create(reader, header); break; case RecordType.PathGrid: Pathgrid.Create(reader, header); break; case RecordType.Script: Script.Create(reader, header); break; case RecordType.Skill: SkillRecord.Create(reader, header); break; case RecordType.SoundGenerator: SoundGenerator.Create(reader, header); break; case RecordType.Tes3: Tes3Record.Create(reader, header); break; default: { var size = GotoSubrecord(SubRecordType.Id, header); var id = reader.ReadString(size); reader.BaseStream.Position = header.DataOffset + header.DataSize; var recordData = CreateRecordData(header.Type); recordData.Header = header; Records.Add(id, recordData); break; } } }