Browse Source

Added C# code tabs to SurfaceTool.rst (#8192)

* Added C# code tabs

* Update tutorials/3d/procedural_geometry/surfacetool.rst

---------

Co-authored-by: A Thousand Ships <[email protected]>
HDLcincDragon 1 year ago
parent
commit
73441678ef
1 changed files with 62 additions and 1 deletions
  1. 62 1
      tutorials/3d/procedural_geometry/surfacetool.rst

+ 62 - 1
tutorials/3d/procedural_geometry/surfacetool.rst

@@ -21,6 +21,14 @@ Attributes are added before each vertex is added:
     st.add_vertex() # Captures normal and color above.
     st.add_vertex() # Captures normal and color above.
     st.set_normal() # Normal never added to a vertex.
     st.set_normal() # Normal never added to a vertex.
 
 
+ .. code-tab:: csharp
+    
+    st.SetNormal(); // Overwritten by normal below.
+    st.SetNormal(); // Added to next vertex.
+    st.SetColor(); // Added to next vertex.
+    st.AddVertex(); // Captures normal and color above.
+    st.SetNormal(); // Normal never added to a vertex.
+
 When finished generating your geometry with the :ref:`SurfaceTool <class_surfacetool>`
 When finished generating your geometry with the :ref:`SurfaceTool <class_surfacetool>`
 call ``commit()`` to finish generating the mesh. If an :ref:`ArrayMesh <class_ArrayMesh>` is passed
 call ``commit()`` to finish generating the mesh. If an :ref:`ArrayMesh <class_ArrayMesh>` is passed
 to ``commit()`` then it appends a new surface to the end of the ArrayMesh. While if nothing is passed
 to ``commit()`` then it appends a new surface to the end of the ArrayMesh. While if nothing is passed
@@ -33,6 +41,12 @@ in, ``commit()`` returns an ArrayMesh.
     # Or:
     # Or:
     var mesh = st.commit()
     var mesh = st.commit()
 
 
+ .. code-tab:: csharp
+
+    st.Commit(mesh);
+    // Or:
+    var mesh = st.Commit();
+
 Code creates a triangle with indices
 Code creates a triangle with indices
 
 
 .. tabs::
 .. tabs::
@@ -59,6 +73,29 @@ Code creates a triangle with indices
     # Commit to a mesh.
     # Commit to a mesh.
     var mesh = st.commit()
     var mesh = st.commit()
 
 
+ .. code-tab:: csharp
+
+    var st = new SurfaceTool();
+
+    st.Begin(Mesh.PrimitiveType.Triangles);
+
+    // Prepare attributes for AddVertex.
+    st.SetNormal(new Vector3(0, 0, 1));
+    st.SetUV(new Vector2(0, 0));
+    // Call last for each vertex, adds the above attributes.
+    st.AddVertex(new Vector3(-1, -1, 0));
+
+    st.SetNormal(new Vector3(0, 0, 1));
+    st.SetUV(new Vector2(0, 1));
+    st.AddVertex(new Vector3(-1, 1, 0));
+
+    st.SetNormal(new Vector3(0, 0, 1));
+    st.SetUV(new Vector2(1, 1));
+    st.AddVertex(new Vector3(1, 1, 0));
+
+    // Commit to a mesh.
+    var mesh = st.Commit();
+
 You can optionally add an index array, either by calling ``add_index()`` and adding
 You can optionally add an index array, either by calling ``add_index()`` and adding
 vertices to the index array or by calling ``index()`` which shrinks the vertex array
 vertices to the index array or by calling ``index()`` which shrinks the vertex array
 to remove duplicate vertices.
 to remove duplicate vertices.
@@ -67,7 +104,7 @@ to remove duplicate vertices.
  .. code-tab:: gdscript GDScript
  .. code-tab:: gdscript GDScript
 
 
     # Creates a quad from four corner vertices.
     # Creates a quad from four corner vertices.
-    # Add_index does not need to be called before add_vertex.
+    # add_index does not need to be called before add_vertex.
     st.add_index(0)
     st.add_index(0)
     st.add_index(1)
     st.add_index(1)
     st.add_index(2)
     st.add_index(2)
@@ -79,6 +116,21 @@ to remove duplicate vertices.
     # Alternatively:
     # Alternatively:
     st.index()
     st.index()
 
 
+ .. code-tab:: csharp
+
+    // Creates a quad from four corner vertices.
+    // AddIndex does not need to be called before AddVertex.
+    st.AddIndex(0);
+    st.AddIndex(1);
+    st.AddIndex(2);
+
+    st.AddIndex(1);
+    st.AddIndex(3);
+    st.AddIndex(2);
+
+    // Alternatively:
+    st.Index();
+
 Similarly, if you have an index array, but you want each vertex to be unique (e.g. because
 Similarly, if you have an index array, but you want each vertex to be unique (e.g. because
 you want to use unique normals or colors per face instead of per-vertex), you can call ``deindex()``.
 you want to use unique normals or colors per face instead of per-vertex), you can call ``deindex()``.
 
 
@@ -87,6 +139,10 @@ you want to use unique normals or colors per face instead of per-vertex), you ca
 
 
     st.deindex()
     st.deindex()
 
 
+ .. code-tab:: csharp
+
+    st.Deindex();
+
 If you don't add custom normals yourself, you can add them using ``generate_normals()``, which should
 If you don't add custom normals yourself, you can add them using ``generate_normals()``, which should
 be called after generating geometry and before committing the mesh using ``commit()`` or
 be called after generating geometry and before committing the mesh using ``commit()`` or
 ``commit_to_arrays()``. Calling ``generate_normals(true)`` will flip the resulting normals. As a side
 ``commit_to_arrays()``. Calling ``generate_normals(true)`` will flip the resulting normals. As a side
@@ -105,6 +161,11 @@ normals set already.
     st.generate_normals()
     st.generate_normals()
     st.generate_tangents()
     st.generate_tangents()
 
 
+ .. code-tab:: csharp
+    
+    st.GenerateNormals();
+    st.GenerateTangents();
+
 By default, when generating normals, they will be calculated on a per-face basis. If you want
 By default, when generating normals, they will be calculated on a per-face basis. If you want
 smooth vertex normals, when adding vertices, call ``add_smooth_group()``. ``add_smooth_group()``
 smooth vertex normals, when adding vertices, call ``add_smooth_group()``. ``add_smooth_group()``
 needs to be called while building the geometry, e.g. before the call to ``add_vertex()``
 needs to be called while building the geometry, e.g. before the call to ``add_vertex()``