Пример #1
0
        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);
        }
Пример #2
0
 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)
                ));
 }