codemonster

Members
  • Content count

    335
  • Joined

  • Last visited

Community Reputation

595 Good

About codemonster

  • Rank
    Member
  1. Different Colors in Console: How?

    Have a look at Tiffany Smith's nice Tetris clone AsciiRis which runs in a console window. The archive contains a vc6 project, the source, and an executable. [smile] The Win32 function you're looking for is probably SetConsoleTextAttribute() Taken from Sprites, sprites and more sprites!
  2. List of free libraries

    Mersenne Twister Random Number Generator fast, convenient, portable, and free [smile] What is it? A C++ implementation with various functions for easy use by Richard Wagner: MTRand Almost twice as fast as the original Wagner's C++ code using Pentium MMX instruction by Matthew Bellew: MMXRand The links have been taken from Makoto Matsumoto's list with various C/C++ versions of the Mersenne Twister: Overview c/c++ list
  3. List of free libraries

    Quote:Original post by JohnBSmall math3d++ provides the normal matrix, vector and quaternion classes, and their associated operations. BMF_Font bitmap font library (and font texture generator) Here's a small update: Trenki's site (math3d++, BMF_Font) has moved. The new url is http://trenki.al.msshost.com Accordingly his libraries can be found at: math3d++ BMF_Font
  4. List of free libraries

    first of all: great list, Kylotan! thank you very much for your efforts! and, of course, thanks to everyone else who has contributed so far [smile] i've also been working on a similar, small list (mainly for personal use) but i havent updated it for quite a while. it is by far neither as nice designed nor as good categorized as your list but maybe you want to have a look nonetheless, as there may be some further libraries etc. :)
  5. OPCODE question

    Indeed, the Opcode docs are awful. The Open Dynamics Engine uses Opcode optionally. Download the ODE source and have a look into the file named collision_trimesh.cpp. Here's a small example using Opcode 1.3 I wrote earlier this year. It's by far not complete (and there may be bugs), but it worked and I didnt need more functionality at the time. The Opcode parts/classes you are looking for either begin with Opcode:: or uppercase letters. All the lowercased classes etc. are from my project and shouldnt really bother you. Header: namespace coll { class c_triangle_manager : public i_triangle_manager { public: c_triangle_manager( scene::i_mesh* mesh, const math::c_matrix* transformation ); virtual ~c_triangle_manager(); virtual bool get_colliders( const math::t_spheref& sphere, Opcode::SphereCache& cache, Opcode::SphereCollider& collider ); virtual bool get_colliders( const math::t_aabb3df& box, Opcode::AABBCache& cache, Opcode::AABBCollider& collider ); virtual bool get_colliders( const math::c_ray& ray, Container& container, Opcode::RayCollider& collider ); d_forceinline virtual const math::t_aabb3df& get_bounding_box() const { return m_bbox; } d_forceinline virtual const std::vector < Point >& get_vertices() const { return m_list_of_vertices; } d_forceinline virtual const std::vector < IndexedTriangle >& get_indexed_triangles() const { return m_list_of_triangles; } private: math::t_aabb3df m_bbox; Opcode::Model m_model; Opcode::MeshInterface m_imesh; std::vector < Point > m_list_of_vertices; std::vector < IndexedTriangle > m_list_of_triangles; }; } Implementation: namespace coll { c_triangle_manager::c_triangle_manager( scene::i_mesh* mesh, const math::c_matrix* transformation ) { debug_assert( mesh ); size_t idx_count = 0; m_bbox.reset( 0.1f, 0.1f, 0.1f ); t_u32 count = mesh->get_submesh_count(); for ( t_u32 idx = 0; idx < count; ++idx ) { scene::i_submesh* buffer = mesh->get_submesh( idx ); if ( buffer ) { vid::s_vertex_data& vertex_data = buffer->get_vertex_data(); vid::s_index_data& index_data = buffer->get_index_data(); t_s32 vertex_count = vertex_data.get_vertex_count(); t_s32 index_count = index_data.get_index_count(); t_u16* indices = index_data.get_index_pointer(); math::t_vector3f* vertices = vertex_data.get_vertex_pointer(); debug_assert( vertices ); t_u32 i0, i1, i2; Point pt; math::t_vector3f v; size_t i; for ( i = 0; i < index_count; i+=3 ) { i0 = indices[ i + 0 ]; i1 = indices[ i + 1 ]; i2 = indices[ i + 2 ]; v = vertices[ i0 ]; m_bbox.insert( v ); pt.x = v.x; pt.y = v.y; pt.z = v.z; m_list_of_vertices.push_back( pt ); v = vertices[ i1 ]; m_bbox.insert( v ); pt.x = v.x; pt.y = v.y; pt.z = v.z; m_list_of_vertices.push_back( pt ); v = vertices[ i2 ]; m_bbox.insert( v ); pt.x = v.x; pt.y = v.y; pt.z = v.z; m_list_of_vertices.push_back( pt ); m_list_of_triangles.push_back( IndexedTriangle( idx_count+0, idx_count+1, idx_count+2 ) ); idx_count+=3; } } } m_imesh.SetNbTriangles( m_list_of_triangles.size() ); m_imesh.SetNbVertices( m_list_of_vertices.size() ); if ( !m_imesh.SetPointers( &m_list_of_triangles[ 0 ], &m_list_of_vertices[ 0 ] ) ) { // TODO } udword degenerate = m_imesh.CheckTopology(); if ( degenerate ) { // TODO } Opcode::OPCODECREATE opcc; opcc.mIMesh = &m_imesh; opcc.mNoLeaf = true; opcc.mQuantized = true; //opcc.mCollisionHull = false; opcc.mKeepOriginal = false; opcc.mCanRemap = true; if ( !m_model.Build( opcc ) ) { // TODO } } c_triangle_manager::~c_triangle_manager() { } bool c_triangle_manager::get_colliders( const math::t_spheref& sphere, Opcode::SphereCache& cache, Opcode::SphereCollider& collider ) { Point center( sphere.center.x, sphere.center.y, sphere.center.z ); Sphere s( center, sphere.radius ); return collider.Collide( cache, s, m_model ); } bool c_triangle_manager::get_colliders( const math::t_aabb3df& box, Opcode::AABBCache& cache, Opcode::AABBCollider& collider ) { Point min; min.x = box.min.x; min.y = box.min.y; min.z = box.min.z; Point max; max.x = box.max.x; max.y = box.max.y; max.z = box.max.z; AABB aabb; aabb.SetMinMax( min, max ); return collider.Collide( cache, aabb, m_model ); } bool c_triangle_manager::get_colliders( const math::c_ray& ray, Container& container, Opcode::RayCollider& collider ) { Point origin; origin.x = ray.origin.x; origin.y = ray.origin.y; origin.z = ray.origin.z; Point direction; direction.x = ray.normal.x; direction.y = ray.normal.y; direction.z = ray.normal.z; Ray opray( origin, direction ); return collider.Collide( opray, m_model ); } } Usage: i removed some parts in the following code snippet to make the usage clearer... math::t_vector3f position; math::t_spheref sphere; Opcode::SphereCache cache; Opcode::SphereCollider collider; coll::i_triangle_manager* tmgr; // removed code for clarity if ( tmgr ) { sphere.center.set( position.x, position.y, position.z ); sphere.radius = m_bsphere_radius; bool result = tmgr->get_colliders( sphere, cache, collider ); if ( result ) { udword nbtouched = collider.GetNbTouchedPrimitives(); if ( nbtouched ) { // even more removed code... } } } This really isnt the best or cleanest example that was ever created, so please use with care. But I hope it helps anyway...
  6. Post your photography [56k Warning]

    *wow* all your pics are awesome! that's really impressive!!! i only have a few photos to post, nothing special, but what the heck...
  7. A monkey that knows kung-fu

    the chimp rocks! and i bet his name is Guenter! Quote:Original post by Tron3k I could kick that chimp's ass. hmmm, that makes me wonder... where's Doogle? [grin]
  8. Quote:Original post by boolean especially codemonster with his 21 submissions [smile] hell on earth, what was i thinking?!? [smile] thank you very much for your efforts, boolean! and thanks to everybody else btw! all those master chief revelations are just awesome! [grin] tgif! have a great weekend, everyone!
  9. Oh, looky! All mine!

    Quote:Original post by Myopic Rhino There are obviously many different ways to have fun. Some of them, though fun for those involved, are exactly the opposite for others. that's the good thing about fun, isnt it? Quote:Original post by Myopic Rhino There are significant differences between a company breakroom and the Lounge. In the breakroom (or any other real-world location) certain societal codes of conduct come in to play. yep, i totally agree. Quote:Original post by Myopic Rhino For instance, are you likely to encouter someone in a real breakroom intermittently yelling "HITLAR"? no, of course not. especially here in germany they smash your head on the pavement, turn you inside out, and sweep the streets with the rest of your body if you even think about thinking about maniacs like hitler. but still, it's kinda amusing making fun of hitler because he was such a freak. as i said, do what you have to do. it's your site and your responsibility. after all, the anti-lounge-people will blame it on you if something's fishy within the forums. please excuse my bad and simple english...
  10. Oh, looky! All mine!

    Quote:Original post by Boris Karloff Frak! But I still want to know why codemonster was searching for Buzz Lightyear pics. lol. i almost anticipated that mentioning Buzz Lightyear in a Whoa-Look-At-All-Those-Hotties Thread would bring up some unanswered questions. i was searching for Buzz Lightyear because of the Master Chief revelation thread. so, there's another mystery revelead. Quote:Original post by Oluseyi The Lounge is exerting too much of a pull on this site right now, and we consider this state of affairs unacceptable. There are far too many members who only visit the Lounge, and only post inane material. This will stop. Our purpose is game development, and this "reining in" is intended to reinforce this fact. imo this site is pretty good already and quite serious about game development. i dont care much about the hottie thread or whatsoever. (but still, it wasnt pr0n or total crap after all, was it?). so that's not the point. but i dont get why you want to ban all the fun from game development? isnt this what the lounge is (or better: was) for? the game companies i worked for always had one fun room where all the ppl could meet up, gather, play games, hang out, relax, eat, watch movies, talk about total rubbish... well, just pretty much as the lounge. do what you have to do, but please, dont take the fun from gdnet. that would be a bummer. having fun is and always was a necessity in game development. well, just my two cents...
  11. The true identity of Master Chief revealed

    Quote:Original post by Anna He's watching you... well, guess again! [smile]
  12. The GameDev.Net Game Dictionary + Poll

    also 12111
  13. The true identity of Master Chief revealed

    Quote:Original post by WanMaster Quote:Original post by codemonster must... take... stupid... helmut... off... The helmet wasn't the piece of clothing I was hoping for to come off... *drumrolls*
  14. The true identity of Master Chief revealed

    Quote:Original post by GroZZleR must... take... stupid... helmut... off...