private GameObject CreateShapeObject(Mesh mesh, HeightPyramidSegmentShapeTemplate shapeTemplate, string name) { var go = new GameObject(name); var flatStartPos = shapeTemplate.FlatPosition; go.transform.localPosition = new Vector3(flatStartPos.x, 0, flatStartPos.y); var flatSize = shapeTemplate.FlatSize; go.transform.localScale = new Vector3(flatSize.x, 1, flatSize.y); var renderer = go.AddComponent <MeshRenderer>(); var segmentUvs = RectangleUtils.CalculateSubelementUv(_perLevelConfiguration.FloorTextureZeroCenteredWorldArea, new MyRectangle(flatStartPos.x, flatStartPos.y, flatSize.x, flatSize.y)); renderer.material = new Material(Shader.Find("Custom/ETerrain/Ground")); renderer.material.SetVector("_SegmentCoords", segmentUvs.ToVector4()); var segmentLevelUvs = RectangleUtils.CalculateSubelementUv(_perLevelConfiguration.FloorTextureZeroCenteredWorldArea.SubRectangle(new MyRectangle(1 / 6.0f, 1 / 6.0f, 4 / 6.0f, 4 / 6.0f)), new MyRectangle(flatStartPos.x, flatStartPos.y, flatSize.x, flatSize.y)); renderer.material.SetVector("_SegmentLevelCoords", segmentLevelUvs.ToVector4()); var mf = go.AddComponent <MeshFilter>(); mf.sharedMesh = mesh; return(go); }
private Matrix4x4 CreateTrsMatrixForShape(HeightPyramidSegmentShapeTemplate template) { return(Matrix4x4.TRS( new Vector3(template.FlatPosition.x, 0, template.FlatPosition.y), Quaternion.identity, new Vector3(template.FlatSize.x, 1, template.FlatSize.y) )); }