NET Client Crash
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 28/11/2010 at 17:23, xxxxxxxx wrote:
User Information:
Cinema 4D Version: R10-R12
Platform: Windows ; Mac OSX ;
Language(s) : C++ ;---------
Now that I've internalized all my stock object, I am getting a NET Client crash when attempting to do a job using my plugin (Access Violation). I was assured that multiprocessor threading and NET Render would be compatible. There are no problems rendering (editor, external renderer) in Cinema 4D R10-12. So this is strictly an issue between my plugin and NET Client.Could someone at Maxon please advise? My last query has been five days unanswered and I resorted to spending two days internalizing 36 polygon objects. You don't know anything about interactions between C++ SDK plugins and NET Render or what? I'll thank you when I get a response.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 29/11/2010 at 06:13, xxxxxxxx wrote:
I am sorry for the late reply. Please send a simplified plugin project to [email protected] showing the problem otherwise it's not possible for me to find a solution.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 29/11/2010 at 12:12, xxxxxxxx wrote:
Not much I can do to simply the project. It is ready-for-release and everything is very much interdependent (except for maybe the plugin tag which isn't where the problem resides). It is still in Greebler.LoadStockLibrary() and the method that it calls for each shape object. The code is supplied below. Note that every single solitary memory allocation is checked and there are no error messages (I'm now also opening a MessageDialog() - still silent crash!). Also note that there are no problems, issues, or crashes whatsoever in Cinema 4D using this code.
// Greebler.LoadStockLibrary //*---------------------------------------------------------------------------* Bool Greebler::LoadStockLibrary() //*---------------------------------------------------------------------------* { // Create Stock Shape Objects programmatically (because of C4D NET Client) if (!CreateStockObject("Cube", Cube_Extrude, Cube_ExtrudeCap, Cube_Bevel, Cube_BevelCap)) return FALSE; if (!CreateStockObject("T", T_Extrude, T_ExtrudeCap, T_Bevel, T_BevelCap)) return FALSE; if (!CreateStockObject("L", L_Extrude, L_ExtrudeCap, L_Bevel, L_BevelCap)) return FALSE; if (!CreateStockObject("C", C_Extrude, C_ExtrudeCap, C_Bevel, C_BevelCap)) return FALSE; if (!CreateStockObject("H", H_Extrude, H_ExtrudeCap, H_Bevel, H_BevelCap)) return FALSE; if (!CreateStockObject("D", D_Extrude, D_ExtrudeCap, D_Bevel, D_BevelCap)) return FALSE; if (!CreateStockObject("Box", Box_Extrude, Box_ExtrudeCap, Box_Bevel, Box_BevelCap)) return FALSE; if (!CreateStockObject("CubeCC", CubeCC_Extrude, CubeCC_ExtrudeCap, CubeCC_Bevel, CubeCC_BevelCap)) return FALSE; if (!CreateStockObject("OblongOctagon", OblOct_Extrude, OblOct_ExtrudeCap, OblOct_Bevel, OblOct_BevelCap)) return FALSE; return TRUE; } // Greebler.CreateStockObject //*---------------------------------------------------------------------------* Bool Greebler::CreateStockObject(const String& name, StockShapeDefs ssd_extrude, StockShapeDefs ssd_extcap, StockShapeDefs ssd_bevel, StockShapeDefs ssd_bevcap) //*---------------------------------------------------------------------------* { // Create All Shape objects and tags AutoAlloc<PolygonObject> extrude(ssd_extrude.numPoints, ssd_extrude.numPolygons); if (!extrude) return ErrPrt("Greebler.Greebler.CreateStockObject.extrude"); extrude->SetName("Extrude"); AutoAlloc<PolygonObject> extcap(ssd_extcap.numPoints, ssd_extcap.numPolygons); if (!extcap) return ErrPrt("Greebler.Greebler.CreateStockObject.extcap"); extcap->SetName("ExtrudeCap"); AutoAlloc<PolygonObject> bevel(ssd_bevel.numPoints, ssd_bevel.numPolygons); if (!bevel) return ErrPrt("Greebler.Greebler.CreateStockObject.bevel"); bevel->SetName("Bevel"); AutoAlloc<PolygonObject> bevcap(ssd_bevcap.numPoints, ssd_bevcap.numPolygons); if (!bevcap) return ErrPrt("Greebler.Greebler.CreateStockObject.bevcap"); bevcap->SetName("BevelCap"); AutoAlloc<BaseObject> nop(Onull); if (!nop) return ErrPrt("Greebler.Greebler.CreateStockObject.nop"); nop->SetName(name); // - PolygonSelection and PointSelection tags // -- Extrude AutoAlloc<SelectionTag> ext_po_top(Tpolygonselection); if (!ext_po_top) return ErrPrt("Greebler.Greebler.CreateStockObject.ext_po_top"); ext_po_top->SetName("Top"); AutoAlloc<SelectionTag> ext_po_sides(Tpolygonselection); if (!ext_po_sides) return ErrPrt("Greebler.Greebler.CreateStockObject.ext_po_sides"); ext_po_sides->SetName("Sides"); AutoAlloc<SelectionTag> ext_pt_top(Tpointselection); if (!ext_pt_top) return ErrPrt("Greebler.Greebler.CreateStockObject.ext_pt_top"); ext_pt_top->SetName("Top"); // -- ExtrudeCap AutoAlloc<SelectionTag> extc_po_top(Tpolygonselection); if (!extc_po_top) return ErrPrt("Greebler.Greebler.CreateStockObject.extc_po_top"); extc_po_top->SetName("Top"); AutoAlloc<SelectionTag> extc_po_sides(Tpolygonselection); if (!extc_po_sides) return ErrPrt("Greebler.Greebler.CreateStockObject.extc_po_sides"); extc_po_sides->SetName("Sides"); AutoAlloc<SelectionTag> extc_po_cap(Tpolygonselection); if (!extc_po_cap) return ErrPrt("Greebler.Greebler.CreateStockObject.extc_po_cap"); extc_po_cap->SetName("Cap"); AutoAlloc<SelectionTag> extc_pt_top(Tpointselection); if (!extc_pt_top) return ErrPrt("Greebler.Greebler.CreateStockObject.extc_pt_top"); extc_pt_top->SetName("Top"); // -- Bevel AutoAlloc<SelectionTag> bev_po_top(Tpolygonselection); if (!bev_po_top) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_po_top"); bev_po_top->SetName("Top"); AutoAlloc<SelectionTag> bev_po_sides(Tpolygonselection); if (!bev_po_sides) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_po_sides"); bev_po_sides->SetName("Sides"); AutoAlloc<SelectionTag> bev_po_bevel(Tpolygonselection); if (!bev_po_bevel) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_po_bevel"); bev_po_bevel->SetName("Bevel"); AutoAlloc<SelectionTag> bev_pt_top(Tpointselection); if (!bev_pt_top) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_pt_top"); bev_pt_top->SetName("Top"); AutoAlloc<SelectionTag> bev_pt_sides(Tpointselection); if (!bev_pt_sides) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_pt_sides"); bev_pt_sides->SetName("Sides"); // -- BevelCap AutoAlloc<SelectionTag> bevc_po_top(Tpolygonselection); if (!bevc_po_top) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_po_top"); bevc_po_top->SetName("Top"); AutoAlloc<SelectionTag> bevc_po_sides(Tpolygonselection); if (!bevc_po_sides) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_po_sides"); bevc_po_sides->SetName("Sides"); AutoAlloc<SelectionTag> bevc_po_cap(Tpolygonselection); if (!bevc_po_cap) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_po_cap"); bevc_po_cap->SetName("Cap"); AutoAlloc<SelectionTag> bevc_po_bevel(Tpolygonselection); if (!bevc_po_bevel) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_po_bevel"); bevc_po_bevel->SetName("Bevel"); AutoAlloc<SelectionTag> bevc_pt_top(Tpointselection); if (!bevc_pt_top) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_pt_top"); bevc_pt_top->SetName("Top"); AutoAlloc<SelectionTag> bevc_pt_sides(Tpointselection); if (!bevc_pt_sides) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_pt_sides"); bevc_pt_sides->SetName("Sides"); // Set up Points and Polygons // - Extrude LONG i; Vector* points = extrude->GetPointW(); if (!points) return ErrPrt("Greebler.Greebler.CreateStockObject.extrude->GetPointW"); CPolygon* polys = extrude->GetPolygonW(); if (!polys) return ErrPrt("Greebler.Greebler.CreateStockObject.extrude->GetPolygonW"); CopyMem(ssd_extrude.points, points, sizeof(Vector)*ssd_extrude.numPoints); for (i = 0L; i != ssd_extrude.numPolygons; ++i) { polys[i].a = ssd_extrude.polygons[i][0]; polys[i].b = ssd_extrude.polygons[i][1]; polys[i].c = ssd_extrude.polygons[i][2]; polys[i].d = ssd_extrude.polygons[i][3]; } // - Create UVWTag and set it up. if (!CreateUVs(extrude, polys, points, NULL, ssd_extrude.numPolygons, ssd_extrude.numPoints)) return ErrPrt("Greebler.Greebler.CreateStockObject.CreateUVs(extrude)"); // - Extrude Cap points = extcap->GetPointW(); if (!points) return ErrPrt("Greebler.Greebler.CreateStockObject.extcap->GetPointW"); polys = extcap->GetPolygonW(); if (!polys) return ErrPrt("Greebler.Greebler.CreateStockObject.extcap->GetPolygonW"); CopyMem(ssd_extcap.points, points, sizeof(Vector)*ssd_extcap.numPoints); for (i = 0L; i != ssd_extcap.numPolygons; ++i) { polys[i].a = ssd_extcap.polygons[i][0]; polys[i].b = ssd_extcap.polygons[i][1]; polys[i].c = ssd_extcap.polygons[i][2]; polys[i].d = ssd_extcap.polygons[i][3]; } // - Create UVWTag and set it up. if (!CreateUVs(extcap, polys, points, NULL, ssd_extcap.numPolygons, ssd_extcap.numPoints)) return ErrPrt("Greebler.Greebler.CreateStockObject.CreateUVs(extcap)"); // - Bevel points = bevel->GetPointW(); if (!points) return ErrPrt("Greebler.Greebler.CreateStockObject.bevel->GetPointW"); polys = bevel->GetPolygonW(); if (!polys) return ErrPrt("Greebler.Greebler.CreateStockObject.bevel->GetPolygonW"); CopyMem(ssd_bevel.points, points, sizeof(Vector)*ssd_bevel.numPoints); for (i = 0L; i != ssd_bevel.numPolygons; ++i) { polys[i].a = ssd_bevel.polygons[i][0]; polys[i].b = ssd_bevel.polygons[i][1]; polys[i].c = ssd_bevel.polygons[i][2]; polys[i].d = ssd_bevel.polygons[i][3]; } // - Create UVWTag and set it up. if (!CreateUVs(bevel, polys, points, NULL, ssd_bevel.numPolygons, ssd_bevel.numPoints)) return ErrPrt("Greebler.Greebler.CreateStockObject.CreateUVs(bevel)"); // - Bevel Cap points = bevcap->GetPointW(); if (!points) return ErrPrt("Greebler.Greebler.CreateStockObject.bevcap->GetPointW"); polys = bevcap->GetPolygonW(); if (!polys) return ErrPrt("Greebler.Greebler.CreateStockObject.bevcap->GetPolygonW"); CopyMem(ssd_bevcap.points, points, sizeof(Vector)*ssd_bevcap.numPoints); for (i = 0L; i != ssd_bevcap.numPolygons; ++i) { polys[i].a = ssd_bevcap.polygons[i][0]; polys[i].b = ssd_bevcap.polygons[i][1]; polys[i].c = ssd_bevcap.polygons[i][2]; polys[i].d = ssd_bevcap.polygons[i][3]; } // - Create UVWTag and set it up. if (!CreateUVs(bevcap, polys, points, NULL, ssd_bevcap.numPolygons, ssd_bevcap.numPoints)) return ErrPrt("Greebler.Greebler.CreateStockObject.CreateUVs(bevcap)"); // Set up PolygonSelections and PointSelections // - Extrude BaseSelect* bs = ext_po_top->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.ext_po_top->GetBaseSelect"); bs->FromArray(&(ssd_extrude.posel_top)[0], ssd_extrude.numPolygons); bs = ext_po_sides->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.ext_po_sides->GetBaseSelect"); bs->FromArray(&(ssd_extrude.posel_sides)[0], ssd_extrude.numPolygons); bs = ext_pt_top->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.ext_pt_top->GetBaseSelect"); bs->FromArray(&(ssd_extrude.ptsel_top)[0], ssd_extrude.numPoints); // - Extrude Cap bs = extc_po_top->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.extc_po_top->GetBaseSelect"); bs->FromArray(&(ssd_extcap.posel_top)[0], ssd_extcap.numPolygons); bs = extc_po_sides->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.extc_po_sides->GetBaseSelect"); bs->FromArray(&(ssd_extcap.posel_sides)[0], ssd_extcap.numPolygons); bs = extc_po_cap->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.extc_po_cap->GetBaseSelect"); bs->FromArray(&(ssd_extcap.posel_cap)[0], ssd_extcap.numPolygons); bs = extc_pt_top->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.extc_pt_top->GetBaseSelect"); bs->FromArray(&(ssd_extcap.ptsel_top)[0], ssd_extcap.numPoints); // - Bevel bs = bev_po_top->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_po_top->GetBaseSelect"); bs->FromArray(&(ssd_bevel.posel_top)[0], ssd_bevel.numPolygons); bs = bev_po_sides->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_po_sides->GetBaseSelect"); bs->FromArray(&(ssd_bevel.posel_sides)[0], ssd_bevel.numPolygons); bs = bev_po_bevel->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_po_bevel->GetBaseSelect"); bs->FromArray(&(ssd_bevel.posel_bevel)[0], ssd_bevel.numPolygons); bs = bev_pt_top->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_pt_top->GetBaseSelect"); bs->FromArray(&(ssd_bevel.ptsel_top)[0], ssd_bevel.numPoints); bs = bev_pt_sides->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bev_pt_sides->GetBaseSelect"); bs->FromArray(&(ssd_bevel.ptsel_sides)[0], ssd_bevel.numPoints); // - Bevel Cap bs = bevc_po_top->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_po_top->GetBaseSelect"); bs->FromArray(&(ssd_bevcap.posel_top)[0], ssd_bevcap.numPolygons); bs = bevc_po_sides->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_po_sides->GetBaseSelect"); bs->FromArray(&(ssd_bevcap.posel_sides)[0], ssd_bevcap.numPolygons); bs = bevc_po_bevel->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_po_bevel->GetBaseSelect"); bs->FromArray(&(ssd_bevcap.posel_bevel)[0], ssd_bevcap.numPolygons); bs = bevc_po_cap->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_po_cap->GetBaseSelect"); bs->FromArray(&(ssd_bevcap.posel_cap)[0], ssd_bevcap.numPolygons); bs = bevc_pt_top->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_pt_top->GetBaseSelect"); bs->FromArray(&(ssd_bevcap.ptsel_top)[0], ssd_bevcap.numPoints); bs = bevc_pt_sides->GetBaseSelect(); if (!bs) return ErrPrt("Greebler.Greebler.CreateStockObject.bevc_pt_sides->GetBaseSelect"); bs->FromArray(&(ssd_bevcap.ptsel_sides)[0], ssd_bevcap.numPoints); // Release all from AutoAlloc // - put tags on objects extrude->InsertTag(ext_pt_top.Release()); extrude->InsertTag(ext_po_sides.Release()); extrude->InsertTag(ext_po_top.Release()); extcap->InsertTag(extc_pt_top.Release()); extcap->InsertTag(extc_po_cap.Release()); extcap->InsertTag(extc_po_sides.Release()); extcap->InsertTag(extc_po_top.Release()); bevel->InsertTag(bev_pt_sides.Release()); bevel->InsertTag(bev_pt_top.Release()); bevel->InsertTag(bev_po_bevel.Release()); bevel->InsertTag(bev_po_sides.Release()); bevel->InsertTag(bev_po_top.Release()); bevcap->InsertTag(bevc_pt_sides.Release()); bevcap->InsertTag(bevc_pt_top.Release()); bevcap->InsertTag(bevc_po_bevel.Release()); bevcap->InsertTag(bevc_po_cap.Release()); bevcap->InsertTag(bevc_po_sides.Release()); bevcap->InsertTag(bevc_po_top.Release()); // - put objects under Null object bevcap->InsertUnderLast(nop); bevel->InsertUnderLast(nop); extcap->InsertUnderLast(nop); extrude->InsertUnderLast(nop); bevcap.Release(); bevel.Release(); extcap.Release(); extrude.Release(); // - and Append Null to AtomArray if (!array_stock->Append(nop.Release())) return ErrPrt("Greebler.Greebler.CreateStockObject.array_stock.Append()"); return TRUE; }
And the header with the static shape object definitions (partial) :
//////////////////////////////////////////////////////////////// // StockShapeDefs.h //////////////////////////////////////////////////////////////// // Greebler Stock Shape Geometry definitions //////////////////////////////////////////////////////////////// // V1.0.0 2010.11.26 Robert Templeton //////////////////////////////////////////////////////////////// #ifndef _STOCKSHAPEDEFS_H_ #define _STOCKSHAPEDEFS_H_ // Somewhere to internally define stock shape object information struct StockShapeDefs { LONG numPoints; LONG numPolygons; Vector points[40]; LONG polygons[40][4]; // Polygon Selections UCHAR posel_top[40]; UCHAR posel_sides[40]; UCHAR posel_cap[40]; UCHAR posel_bevel[40]; // Point Selections UCHAR ptsel_top[40]; UCHAR ptsel_sides[40]; }; // ============================================================= // Cube static StockShapeDefs Cube_Extrude = { 8L, 5L, { Vector(-0.5, 0.0, -0.5), Vector(-0.5, 0.0, 0.5), Vector(0.5, 0.0, 0.5), Vector(0.5, 0.0, -0.5), Vector(-0.5, 0.0, -0.5), Vector(-0.5, 0.0, 0.5), Vector(0.5, 0.0, 0.5), Vector(0.5, 0.0, -0.5), 0L }, { {7, 4, 5, 6}, {3, 7, 6, 2}, {2, 6, 5, 1}, {1, 5, 4, 0}, {0, 4, 7, 3}, 0L }, // Polygon // - Top {1,0,0,0,0}, // - Sides {0,1,1,1,1}, // - Cap {0L}, // - Bevel {0L}, // Point // - Top {0,0,0,0,1,1,1,1}, // - Sides {0L} }; static StockShapeDefs Cube_ExtrudeCap = { 8L, 6L, { Vector(-0.5, 0.0, -0.5), Vector(-0.5, 0.0, 0.5), Vector(0.5, 0.0, 0.5), Vector(0.5, 0.0, -0.5), Vector(-0.5, 0.0, -0.5), Vector(-0.5, 0.0, 0.5), Vector(0.5, 0.0, 0.5), Vector(0.5, 0.0, -0.5), 0L }, { {7, 4, 5, 6}, {2, 1, 0, 3}, {3, 7, 6, 2}, {2, 6, 5, 1}, {1, 5, 4, 0}, {0, 4, 7, 3}, 0L }, // Polygon // - Top {1,0,0,0,0,0}, // - Sides {0,0,1,1,1,1}, // - Cap {0,1,0,0,0,0}, // - Bevel {0L}, // Point // - Top {0,0,0,0,1,1,1,1}, // - Sides {0L} }; static StockShapeDefs Cube_Bevel = { 12L, 9L, { Vector(-0.5, 0.0, -0.5), Vector(-0.5, 0.0, 0.5), Vector(0.5, 0.0, 0.5), Vector(0.5, 0.0, -0.5), Vector(-0.5, 0.0, -0.5), Vector(-0.5, 0.0, 0.5), Vector(0.5, 0.0, 0.5), Vector(0.5, 0.0, -0.5), Vector(0.0, 0.0, 0.0), Vector(0.0, 0.0, 0.0), Vector(0.0, 0.0, 0.0), Vector(0.0, 0.0, 0.0), 0L }, { {11, 8, 9, 10}, {3, 7, 6, 2}, {2, 6, 5, 1}, {1, 5, 4, 0}, {0, 4, 7, 3}, {7, 11, 10, 6}, {6, 10, 9, 5}, {5, 9, 8, 4}, {4, 8, 11, 7}, 0L }, // Polygon // - Top {1,0,0,0,0,0,0,0,0}, // - Sides {0,1,1,1,1,0,0,0,0}, // - Cap {0L}, // - Bevel {0,0,0,0,0,1,1,1,1}, // Point // - Top {0,0,0,0,0,0,0,0,1,1,1,1}, // - Sides {0,0,0,0,1,1,1,1,0,0,0,0} }; static StockShapeDefs Cube_BevelCap = { 12L, 10L, { Vector(-0.5, 0.0, -0.5), Vector(-0.5, 0.0, 0.5), Vector(0.5, 0.0, 0.5), Vector(0.5, 0.0, -0.5), Vector(-0.5, 0.0, -0.5), Vector(-0.5, 0.0, 0.5), Vector(0.5, 0.0, 0.5), Vector(0.5, 0.0, -0.5), Vector(0.0, 0.0, 0.0), Vector(0.0, 0.0, 0.0), Vector(0.0, 0.0, 0.0), Vector(0.0, 0.0, 0.0), 0L }, { {11, 8, 9, 10}, {2, 1, 0, 3}, {3, 7, 6, 2}, {2, 6, 5, 1}, {1, 5, 4, 0}, {0, 4, 7, 3}, {7, 11, 10, 6}, {6, 10, 9, 5}, {5, 9, 8, 4}, {4, 8, 11, 7}, 0L }, // Polygon // - Top {1,0,0,0,0,0,0,0,0,0}, // - Sides {0,0,1,1,1,1,0,0,0,0}, // - Cap {0,1,0,0,0,0,0,0,0,0}, // - Bevel {0,0,0,0,0,0,1,1,1,1}, // Point // - Top {0,0,0,0,0,0,0,0,1,1,1,1}, // - Sides {0,0,0,0,1,1,1,1,0,0,0,0} }; ...
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 29/11/2010 at 12:23, xxxxxxxx wrote:
I will send you the entire project after some more tests. I am looking at C4DPL_STARTACTIVITY for doing the plugin Init() instead of after Registering the plugin in PluginStart(). At a complete loss on reason why this fails.
Thanks!