private void Awake() { // Create reticle game object and mesh m_gameObject = new GameObject("Extruded"); m_gameObject.transform.parent = null; m_meshCollider = m_gameObject.AddComponent <MeshCollider>(); m_mesh = m_gameObject.AddComponent <MeshFilter>().mesh; m_meshRenderer = m_gameObject.AddComponent <MeshRenderer>(); m_meshRenderer.material = selectionMaterial; m_meshRenderer.material.color = Color.white; m_meshRenderer.enabled = true; // Selection surface Vector2[] tileUV = { new Vector2((1f / 128) * 0.5f, (1f / 736) * (736 - 0.5f)), new Vector2((1f / 128) * (128 - 0.5f), (1f / 736) * (736 - 0.5f)), new Vector2((1f / 128) * (128 - 0.5f), (1f / 736) * 0.5f), new Vector2((1f / 128) * 0.5f, (1f / 736) * 0.5f) /* * (1f / 128) * new Vector2(3.5f, 128 - 3.5f), * (1f / 128) * new Vector2(128 - 3.5f, 128 - 3.5f), * (1f / 128) * new Vector2(128 - 3.5f, 3.5f), * (1f / 128) * new Vector2(3.5f, 3.5f) */ }; m_topUV = tileUV; m_sideUV = tileUV; m_selection = new PlanarTileSelection(70, m_topUV); #if !UNITY_EDITOR m_xboxController = new ControllerInput(0, 0.19f); #endif }
public MeshExtruder(PlanarTileSelection selection) { m_tiles = new List <SelectionTile>(selection.tiles); Vector3[] vertices; int[] triangles; Vector2[] uv; selection.GenerateMeshData(out vertices, out triangles, out uv); m_vertices = new List <Vector3>(vertices); m_triangles = new List <int>(triangles); }
public GeoMaker() { // Selection surface Vector2[] selectUV = { /* * new Vector2((1f/128) * 0.5f, (1f/736) * (736 - 0.5f)), * new Vector2((1f/128) * (128 - 0.5f), (1f/736) * (736 - 0.5f)), * new Vector2((1f/128) * (128 - 0.5f), (1f/736) * 0.5f), * new Vector2((1f/128) * 0.5f, (1f/736) * 0.5f) */ (1f / 128) * new Vector2(3.5f, 128 - 3.5f), (1f / 128) * new Vector2(128 - 3.5f, 128 - 3.5f), (1f / 128) * new Vector2(128 - 3.5f, 3.5f), (1f / 128) * new Vector2(3.5f, 3.5f) }; // Simple extrusions have 2 texture tiles (512x512) for a total of 512x1024 m_simpleTopUV = new Vector2[] { new Vector2((1f / 512) * 0.5f, (1f / 1024) * (1024 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1024) * (1024 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1024) * (512 - 0.5f)), new Vector2((1f / 512) * 0.5f, (1f / 1024) * (512 - 0.5f)) }; m_simpleSideUV = new Vector2[] { new Vector2((1f / 512) * 0.5f, (1f / 1024) * (512 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1024) * (512 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1024) * 0.5f), new Vector2((1f / 512) * 0.5f, (1f / 1024) * 0.5f) }; // Capped extrusions have 3 texture tiles for a total of 512x1536 m_cappedTopUV = new Vector2[] { new Vector2((1f / 512) * 0.5f, (1f / 1536) * (1536 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1536) * (1536 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1536) * (1024 - 0.5f)), new Vector2((1f / 512) * 0.5f, (1f / 1536) * (1024 - 0.5f)) }; m_cappedCrownUV = new Vector2[] { new Vector2((1f / 512) * 0.5f, (1f / 1536) * (1024 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1536) * (1024 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1536) * (512 - 0.5f)), new Vector2((1f / 512) * 0.5f, (1f / 1536) * (512 - 0.5f)) }; m_cappedBaseUV = new Vector2[] { new Vector2((1f / 512) * 0.5f, (1f / 1536) * (512 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1536) * (512 - 0.5f)), new Vector2((1f / 512) * (512 - 0.5f), (1f / 1536) * 0.5f), new Vector2((1f / 512) * 0.5f, (1f / 1536) * 0.5f) }; // Simple extrusions with a bottom have 3 texture tiles (256x256) for a // total of 256x768 m_movingTopUV = new Vector2[] { new Vector2((1f / 256) * 0.5f, (1f / 768) * (768 - 0.5f)), new Vector2((1f / 256) * (256 - 0.5f), (1f / 768) * (768 - 0.5f)), new Vector2((1f / 256) * (256 - 0.5f), (1f / 768) * (512 - 0.5f)), new Vector2((1f / 256) * 0.5f, (1f / 768) * (512 - 0.5f)) }; m_movingSideUV = new Vector2[] { new Vector2((1f / 256) * 0.5f, (1f / 768) * (512 - 0.5f)), new Vector2((1f / 256) * (256 - 0.5f), (1f / 768) * (512 - 0.5f)), new Vector2((1f / 256) * (256 - 0.5f), (1f / 768) * (256 - 0.5f)), new Vector2((1f / 256) * 0.5f, (1f / 768) * (256 - 0.5f)) }; m_movingBottomUV = new Vector2[] { new Vector2((1f / 256) * 0.5f, (1f / 768) * (256 - 0.5f)), new Vector2((1f / 256) * (256 - 0.5f), (1f / 768) * (256 - 0.5f)), new Vector2((1f / 256) * (256 - 0.5f), (1f / 768) * 0.5f), new Vector2((1f / 256) * 0.5f, (1f / 768) * 0.5f) }; m_selection = new PlanarTileSelection(70, selectUV); }