Call for C++ Documentation Volunteers

Sounds good to me.

I wish I could help, but I have a lot to learn first. I’ll see what I can anyway.

Late answer, sorry.

If you need help trying to write some code in c++ just ask here. That isn’t a problem. We can help with particular features that you don’t know how to translate to c++, most of the work that is time consuming is straightforward like writing full code, building and testing. So if you need help with something just ask, as long as you know the basics.

i dont know if those both codes are clean enough. or maybe bad documented, but maybe you could use them as test samples? if you want take them, just say me, the points which needs to be improved. like better documented or so on… or overwork the code completly…

the first is about parallel processing:

// PARALLEL PROCESSING -> parallel processing of two distances, this should just display how to parallel processing, of course there is no need to do this twice! ;)
// this processing idea was just coming along to improve the performance at the raster particles for smashBALL, now im able to split my particle calculation up!
// it should improve the performance up to 30 % or more! :D :D :D i hope! but im sure it does :D
// dirk-r. hochegger 2010

#include "pandaFramework.h"
#include "pandaSystem.h"
#include "graphicsEngine.h" 
#include "process.h" 
#include "windows.h"

PandaFramework framework;
WindowFramework *window;
GraphicsEngine *engine;
PT(AsyncTaskManager) taskMgr = AsyncTaskManager::get_global_ptr();
PT(ClockObject) globalClock = ClockObject::get_global_clock();
NodePath camera,model[2];

//init the start position
LVecBase3f pos1 (0.8,0.0,0.0),pos2 (-0.8,0.0,0.0);

//parallel processing related
// declare the parallel processing vars
float dis,dis1;
int isACTIVE = 1; 

void parallelDISTANCEcalc1 (void *);
void parallelDISTANCEcalc2 (void *);


//window open
void windowOPEN() {
	WindowProperties *props = new WindowProperties(); 
    props->set_size(500,500); 
	props->set_origin(500,10);
    props->set_undecorated(true); 
    window = framework.open_window(*props,0);
	window->get_graphics_window()->get_active_display_region(0)->set_clear_color(Colorf(0,0,0,1));
}
// stor camera
void getCAMERA() {
	camera = window->get_camera_group(); 
}
// load model
void loadMODEL() {
	for (int i=0;i<2;i++) {
		model[i] = window->load_model(framework.get_models(),"smiley");
		model[i].set_scale(.1);
		model[i].reparent_to(window->get_aspect_2d());
	}
}

//parallel processing
void parallelDISTANCEcalc1 (void *) {
	while (isACTIVE) {
		LVecBase3f disX = (pos1-pos2);
		dis = disX.length();
		if (dis < .1) {
			pos1.set_x(pos1.get_x());
		}
		else {
			pos1.set_x(pos1.get_x()-.005);
		}
		Sleep(10); 
	}
}

void parallelDISTANCEcalc2 (void *) {
	while (isACTIVE) {
		
		LVecBase3f disX = (pos1-pos2);
		dis1 = disX.length();
		if (dis1 < .1) {
			pos2.set_x(pos2.get_x());
		}
		else {
			pos2.set_x(pos2.get_x()+.005);
		}
		Sleep(10);
	}
}
// using a task for picking the values
AsyncTask::DoneStatus mainTASK(GenericAsyncTask* task, void* data) { 
	model[0].set_x(pos1.get_x());
	model[1].set_x(pos2.get_x());
	return AsyncTask::DS_cont;
}

int main(int argc, char *argv[]) {
	framework.open_framework(argc, argv);
    windowOPEN();
	getCAMERA();
	loadMODEL();

	_beginthread(parallelDISTANCEcalc1, 0, NULL); 
	_beginthread(parallelDISTANCEcalc2, 0, NULL); 

	taskMgr->add(new GenericAsyncTask("main task", &mainTASK, (void*) NULL));

	framework.main_loop();
    framework.close_framework();
    return (0);
} 

the second is about the rigidbodycombiner:

//test rigidBODY node removing (not working)
//dirk-r. hochegger 2010 kind supported by drwr

#include "pandaFramework.h"
#include "pandaSystem.h"
#include "texturePool.h"
#include "PGButton.h"
#include "mouseButton.h"
#include "transparencyAttrib.h"
#include "rigidBodyCombiner.h"


//init vars
PandaFramework framework;
WindowFramework *window;
GraphicsEngine *engine;
PT(ClockObject) globalClock = ClockObject::get_global_clock();
PT(AsyncTaskManager) taskMgr = AsyncTaskManager::get_global_ptr(); 
PT(RigidBodyCombiner) rbc = new RigidBodyCombiner("rbc");
PT(Texture) texturePARTICLE;
PT(PGButton) newINSTANCES;
NodePath camera,rigNode[10000],obj[100000],buttonINS;
int rigNODEid = 0,partCOUNT=100,timerX;
float PARTposY = .5;


/*
opens a window, setting some things, like size, origin on the screen...
*/
void windowOPEN() {
	framework.set_window_title("rigTEST");
	WindowProperties *props = new WindowProperties(); 
    props->set_size(500,500); 
	props->set_origin(500,10);
    props->set_undecorated(true); 
    window = framework.open_window(*props,0);
	window->get_graphics_window()->get_active_display_region(0)->set_clear_color(Colorf(1,1,1,1));
}
// get the camera and stored in var camera
void getCAMERA() {
	camera = window->get_camera_group(); 
}
/*
paints the geometry and assign it on a rigid body
*/
void paintGEO() {
	rigNode[rigNODEid] = NodePath(rbc);
	rigNode[rigNODEid].reparent_to(window->get_aspect_2d());
	float PARTposX = -.5;
	int count = 0;
	for (int i=0;i<partCOUNT;i++){
		obj[i] = window->load_model(framework.get_models(),"box");
		obj[i].set_scale(.04);
		obj[i].set_pos(PARTposX,0,PARTposY);
		obj[i].set_p(90);
		obj[i].reparent_to(rigNode[rigNODEid]);
		PARTposX += .04;
		count++;
		if (count > 24) {
			PARTposY -=.04;
			PARTposX = -.5;
			count = 0;
		}
	}
	rbc->collect();
}
/*
detach the not needed nodes out of the rigid body and detach the rigid body completly and removes the nodes 
(just to be sure that everything is deleted, its not really important, to do this thing twice)
 setting some things, like add 100 new objects , getting back to the start position...
 loop over all objects and set a new scale for it
*/
static void NEWINSTANCES(const Event *ev, void *data){
		PGButton* CurrentButton=(PGButton *)data;
		for (int i=0;i<partCOUNT;i++) {
			obj[i].detach_node();
			obj[i].remove_node();
		}
		rbc->collect();
	//	rigNode[rigNODEid].detach_node();
	//	rigNode[rigNODEid].remove_node();
		PARTposY = .5;
		partCOUNT += 100;
		paintGEO();
		for (int i=0;i<partCOUNT;i++) {
			obj[i].set_scale(.02);
		}
		rigNODEid++;
	}
// get a button
void button() {
	newINSTANCES = new PGButton("newINSTANCES");
	newINSTANCES->setup("newINSTANCES",0.2);

	buttonINS = window->get_aspect_2d().attach_new_node(newINSTANCES);
	buttonINS.set_scale(.05);
	buttonINS.set_pos(0,0,-.5);

	framework.define_key(newINSTANCES->get_click_event(MouseButton::one() ), "button press", &NEWINSTANCES, newINSTANCES);
}
// init the main program
int main(int argc, char *argv[]) {
	framework.open_framework(argc, argv);
    windowOPEN();
	getCAMERA();
	paintGEO();
	button();

	framework.main_loop();
    framework.close_framework();
    return (0);
} 

I will contribute if time permits.

I can contributed some time if people don’t mind a semi-newbie. I’m still learning panda3d, but have years experience in SDK support, SDK/tech article writing as well as SDK creation, organization and editing for new products (as well as dev experience, multimedia and some game).

If anything, I can at least look at it from the perspective of a person who knows C++, but doesn’t know Panda 3D in-depth, yet wants to get up to speed asap --ex. looking for gaps like simple sample code, as well as missing APIs and architectural overviews. (For example, in 1.6 and 1.7, the hello world example talks of the framework and window framework, uses it in the code, but they aren’t listed in the APIs.)

I can’t spend too much time, I’m also on IEEE’s VW working group and organizing the standards and wiki there, but I am definitely hooked on Panda3D and think it would make a great game and VW environment. I’m even using it as my sim environment for my thesis – so I have a definite motivation in the learning curve.

Please let me know if you want me, but I understand if you prefer more long-time Panda-iers.

Best,
CG

I would be willing to help with Mac OS X Snow Leopard documentation.

It is quite troublesome to get to work for a relative newbie and I would be willing to create a couple of simple getting started modules if I can ever figure it out myself.

Have been trying to compile in Code Blocks, XCode and Eclipse environments to no avail.

Getting a simple example with very clear instructions on exactly how to get it to compile may be valuable.

Contact me if this would be of value.

Thanks

I will help after I get some more practice.

I have recently come up with a nice method for GameObjects that doesn’t require inheritance and only applies event hooks per class rather than per instance or that class.

I’m also currently working on some theories to use DOD, Data Oriented Design, to not have any object classes at all. Not sure if this will integrate well into Panda’s node system or not but we will see.

hello,

I have updated the manual section related to Particle Effects in C++. hopefully others will participate more.

panda3d.org/manual/index.php … le_Effects

select C++ to see the update.

Excellent, thanks!

David

Thank you David, :slight_smile:

i have done some minor but very important update to this section:
panda3d.org/manual/index.php … anda_Model

hopefully tomorrow i will add the details on binding models and animations with a complete sample.

i have updated the following section with a sample and seperated python and C++ help.

panda3d.org/manual/index.php … Animations

Great stuff!

David

panda3d.org/manual/index.php … e_on_Linux

I added an SConstruct file to make the example program. It uses python, so I think people would appreciate that :slight_smile:

[Documentation: Missing example of Bullet Physics ... Code!) It’s not tested on Windows or Mac yet, but I except that can help :slight_smile:.

Good coding.

I have taken a while to update CXX Bullet docs, anyway I commited my samples and I’ll do the missing ones when I have time, :smiley:.

:smiley: C++ tutorials are ready to be released! :smiley:

detialed in panda3d.org/forums/viewtopic … 4183#84183

working on
panda3d.org/manual/index.php/Texturing

Probably will have a tutorial before i will have much stuff for the manual.

By the way, I had finished experiencing on movie texture, texture projection, (dynamic) 3D enviroment texture and so on. They are amazing features of Panda3D, hope our fellows will benefit from these functions one day!

i want to help until i get mature on Panda3d API, i can collaborate .