Commit: 5de4c1a560436b22d5de1e60495244f249460b6b
Author: Nicholas Bishop
Date:   Mon Jan 19 16:01:13 2015 +0100
Branches: cycles-ptex-12
https://developer.blender.org/rB5de4c1a560436b22d5de1e60495244f249460b6b

RNA updates for Ptex

===================================================================

M       source/blender/makesrna/RNA_access.h
M       source/blender/makesrna/intern/rna_mesh.c

===================================================================

diff --git a/source/blender/makesrna/RNA_access.h 
b/source/blender/makesrna/RNA_access.h
index 34c2e5a..889a901 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -370,6 +370,7 @@ extern StructRNA RNA_MeshEdge;
 extern StructRNA RNA_MeshPolygon;
 extern StructRNA RNA_MeshTessFace;
 extern StructRNA RNA_MeshLoop;
+extern StructRNA RNA_MeshLoopPtexLayer;
 extern StructRNA RNA_MeshFloatProperty;
 extern StructRNA RNA_MeshFloatPropertyLayer;
 extern StructRNA RNA_MeshIntProperty;
@@ -460,6 +461,8 @@ extern StructRNA RNA_Property;
 extern StructRNA RNA_PropertyGroup;
 extern StructRNA RNA_PropertyGroupItem;
 extern StructRNA RNA_PropertySensor;
+extern StructRNA RNA_PtexLoop;
+extern StructRNA RNA_PtexTessFace;
 extern StructRNA RNA_PythonConstraint;
 extern StructRNA RNA_PythonController;
 extern StructRNA RNA_QuickTimeSettings;
diff --git a/source/blender/makesrna/intern/rna_mesh.c 
b/source/blender/makesrna/intern/rna_mesh.c
index 3d6eab2..6ee2cf1 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -833,6 +833,35 @@ static int rna_MeshUVLoopLayer_data_length(PointerRNA *ptr)
        return (me->edit_btmesh) ? 0 : me->totloop;
 }
 
+/* Ptex */
+DEFINE_CUSTOMDATA_LAYER_COLLECTION(ptex, ldata, CD_LOOP_PTEX)
+DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(ptex, ldata, CD_LOOP_PTEX, 
active, MeshLoopPtexLayer)
+
+static void rna_PtexTessFace_corner_begin(CollectionPropertyIterator *iter, 
PointerRNA *ptr)
+{
+       MTessFacePtex *ptex_tess_face = ptr->data;
+       const int length = 4;
+       const bool free_ptr = false;
+       rna_iterator_array_begin(iter, ptex_tess_face->corners, 
sizeof(MLoopPtexUV),
+                                                        length, free_ptr, 
NULL);
+}
+
+static int rna_PtexTessFace_corner_length(PointerRNA *UNUSED(ptr))
+{
+       return 4;
+}
+
+static PointerRNA rna_MeshLoopPtexLayer_image_get(PointerRNA *ptr)
+{
+       // TODO
+       PointerRNA rptr;
+       CustomDataLayer *cdl = ptr->data;
+       MLoopPtex *loop_ptex = cdl->data;
+       Image *image = loop_ptex->image;
+       RNA_id_pointer_create(image ? &image->id : NULL, &rptr);
+       return rptr;
+}
+
 /* face uv_textures */
 
 DEFINE_CUSTOMDATA_LAYER_COLLECTION(tessface_uv_texture, fdata, CD_MTFACE)
@@ -1257,6 +1286,17 @@ static int rna_MeshTessFace_index_get(PointerRNA *ptr)
        return (int)(face - me->mface);
 }
 
+static PointerRNA rna_MeshTessFace_ptex_tess_face_get(PointerRNA *ptr)
+{
+       Mesh *me = rna_mesh(ptr);
+       PointerRNA rptr;
+       MTessFacePtex * const ptf = CustomData_get(&me->fdata,
+                                                                               
           rna_MeshTessFace_index_get(ptr),
+                                                                               
           CD_TESSFACE_PTEX);
+       RNA_pointer_create(&me->id, &RNA_PtexTessFace, ptf, &rptr);
+       return rptr;
+}
+
 static int rna_MeshPolygon_index_get(PointerRNA *ptr)
 {
        Mesh *me = rna_mesh(ptr);
@@ -1869,6 +1909,28 @@ static void rna_def_medge(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Index", "Index of this edge");
 }
 
+static void rna_def_mptex(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       srna = RNA_def_struct(brna, "PtexLoop", NULL);
+       RNA_def_struct_sdna(srna, "MLoopPtexUV");
+       RNA_def_property(srna, "uv", PROP_FLOAT, PROP_XYZ);
+       RNA_def_property(srna, "id", PROP_INT, PROP_NONE);
+
+       srna = RNA_def_struct(brna, "PtexTessFace", NULL);
+       RNA_def_struct_sdna(srna, "MTessFacePtex");
+       prop = RNA_def_property(srna, "corners", PROP_COLLECTION, PROP_NONE);
+       RNA_def_property_struct_type(prop, "PtexLoop");
+       RNA_def_property_collection_funcs(prop, "rna_PtexTessFace_corner_begin",
+                                                                         
"rna_iterator_array_next",
+                                         "rna_iterator_array_end",
+                                                                         
"rna_iterator_array_get",
+                                         "rna_PtexTessFace_corner_length",
+                                                                         NULL, 
NULL, NULL);
+}
+
 static void rna_def_mface(BlenderRNA *brna)
 {
        StructRNA *srna;
@@ -1944,6 +2006,11 @@ static void rna_def_mface(BlenderRNA *brna)
        RNA_def_property_clear_flag(prop, PROP_EDITABLE);
        RNA_def_property_int_funcs(prop, "rna_MeshTessFace_index_get", NULL, 
NULL);
        RNA_def_property_ui_text(prop, "Index", "Index of this face");
+
+       prop = RNA_def_property(srna, "ptex_tess_face", PROP_POINTER, 
PROP_NONE);
+       RNA_def_property_struct_type(prop, "PtexTessFace");
+       RNA_def_property_pointer_funcs(prop, 
"rna_MeshTessFace_ptex_tess_face_get", NULL, NULL, NULL);
+       RNA_def_property_ui_text(prop, "PtexTessFace", "");
 }
 
 
@@ -2441,6 +2508,29 @@ static void rna_def_mloopcol(BlenderRNA *brna)
        RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
 }
 
+static void rna_def_mloopptex(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       srna = RNA_def_struct(brna, "MeshLoopPtexLayer", NULL);
+       RNA_def_struct_ui_text(srna, "Mesh Ptex Layer", "Layer of Ptex loops in 
a Mesh datablock");
+       RNA_def_struct_sdna(srna, "CustomDataLayer");
+
+       prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+       RNA_def_struct_name_property(srna, prop);
+       RNA_def_property_string_funcs(prop, NULL, NULL, 
"rna_MeshLoopLayer_name_set");
+       RNA_def_property_ui_text(prop, "Name", "Name of Ptex layer");
+       RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+
+       prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
+       RNA_def_property_pointer_funcs(prop, "rna_MeshLoopPtexLayer_image_get", 
NULL, NULL, NULL);
+       RNA_def_property_struct_type(prop, "Image");
+       /* RNA_def_property_flag(prop, PROP_EDITABLE); */
+       /* RNA_def_property_ui_text(prop, "Image", ""); */
+       /* RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); */
+}
+
 static void rna_def_mproperties(BlenderRNA *brna)
 {
        StructRNA *srna;
@@ -2784,6 +2874,23 @@ static void rna_def_loop_colors(BlenderRNA *brna, 
PropertyRNA *cprop)
        RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
 }
 
+static void rna_def_loop_ptex(BlenderRNA *brna, PropertyRNA *cprop)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       RNA_def_property_srna(cprop, "LoopPtex");
+       srna = RNA_def_struct(brna, "LoopPtex", NULL);
+       RNA_def_struct_sdna(srna, "Mesh");
+       RNA_def_struct_ui_text(srna, "Loop Ptex", "Collection of loop Ptex");
+
+       prop = RNA_def_property(srna, "active_index", PROP_INT, PROP_UNSIGNED);
+       RNA_def_property_int_funcs(prop, "rna_Mesh_ptex_active_index_get",
+                                  "rna_Mesh_ptex_active_index_set", 
"rna_Mesh_ptex_index_range");
+       RNA_def_property_ui_text(prop, "Active Ptex Index", "Active ptex 
index");
+       RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+}
+
 static void rna_def_uv_layers(BlenderRNA *brna, PropertyRNA *cprop)
 {
        StructRNA *srna;
@@ -3148,6 +3255,15 @@ static void rna_def_mesh(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Vertex Colors", "All vertex colors");
        rna_def_loop_colors(brna, prop);
 
+       /* Ptex */
+       prop = RNA_def_property(srna, "loop_ptex", PROP_COLLECTION, PROP_NONE);
+       RNA_def_property_collection_sdna(prop, NULL, "ldata.layers", 
"ldata.totlayer");
+       RNA_def_property_collection_funcs(prop, "rna_Mesh_ptexs_begin", NULL, 
NULL, NULL,
+                                         "rna_Mesh_ptexs_length", NULL, NULL, 
NULL);
+       RNA_def_property_struct_type(prop, "MeshLoopPtexLayer");
+       RNA_def_property_ui_text(prop, "Ptex", "All Ptex layers");
+       rna_def_loop_ptex(brna, prop);
+
        /* TODO, vertex, edge customdata layers (bmesh py api can access 
already) */
        prop = RNA_def_property(srna, "polygon_layers_float", PROP_COLLECTION, 
PROP_NONE);
        RNA_def_property_collection_sdna(prop, NULL, "pdata.layers", 
"pdata.totlayer");
@@ -3428,6 +3544,8 @@ void RNA_def_mesh(BlenderRNA *brna)
        rna_def_mcol(brna);
        rna_def_mloopcol(brna);
        rna_def_mproperties(brna);
+       rna_def_mptex(brna);
+       rna_def_mloopptex(brna);
 }
 
 #endif

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to